ROS服务通信
ROS服务通信是基于 C/S 模式的双向数据传输模式(有应答的通信机制),ROS话题通信是无应答的通信机制。根据 Master 是否参数也分为两部分:连接前的准备,连接和通信;通信流程如下:
服务通信与 话题通信的 连接和通信 步骤都是一样的。唯一不同的是服务通信是有应答的。
1、Listener 接收到 Talker 的确认消息后,使用 TCP 尝试与 Talker 建立网络连接;
2、成功连接之后,Talker 开始向 Listener 发布话题消息数据;
3、至此,服务通信完成连接和通信过程,可以进行有应答的信息交流了。
4、需要注意,有可能是一个 Talker 连接上多个 Listener。
# 服务端 import rospy from demo03_server_client.src import AddInts,AddIntsRequest,AddIntsResponse def doReq(req): # 解析提交的数据 sum = req.num1 + req.num2 rospy.loginfo("提交的数据:num1 = %d, num2 = %d, sum = %d", req.num1, req.num2, sum) # 创建响应对象,赋值并返回 resp = AddIntsResponse(sum) return resp if __name__ == "__main__": # 初始化ROS节点 rospy.init_node("addints_server_p") # 创建服务对象 server = rospy.Service("AddInts", AddInts, doReq) # 回调函数处理请求并产生响应 rospy.spin() # 客户端 import rospy import sys if __name__ == "__main__": # 初始化ROS节点 rospy.init_node("AddInts_Client_p") # 创建请求对象 client = rospy.ServiceProxy("AddInts", AddInts) # 等待服务器就绪 client.wait_for_service() # 发送请求,接受并处理响应 req = AddIntsRequest()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-09-07 HTTP/1.1 的性能
2022-09-07 HTTP 优缺点