二、ROS通讯机制理解
0.前言
这里就不纠结一些底层的东西了,从外行人的角度,简单理解ROS到底是如何通讯的。这部分内容没有实际的用处,但是对理解ROS还是必要的。
1.topic/service
topic和service两个的通讯机制从抽象层面来看实在是太像了,可以放在一起讨论。
1.talker注册
2.listener注册
3.ROS Master进行匹配
4.listener发布请求
5.talker确认连接
6.连接
7.talker发送数据
简单理解:ROS Master是一块公告板,talker(publisher/server)在这里发布消息,而listener(subscriber/client)在这里收取消息。
这里就会自然引出一个问题,就是topic和service有什么区别,特别是关系到它们之后运用场景有什么本质的区别。
上一篇其实有提到,我认为两者的差别在于它们实际的功能上:topic适合信息的实时发布和接受,而service适合在有特殊需求时进行特殊响应。所以如果是要接收激光雷达的数据,并且同时应用于建图的话,显然使用topic把数据实时发出来,然后建图的一方实时获取比较合适,而非通过服务,发一个或者一些数据就收取一次,无条件收取就可以;如果是要下达一个指令,那就没有必要一直听着,在需要的时候把工作节点喊醒即可,所谓“有的放矢”。
总结起来就是topic偏重实时性,service偏重逻辑性。
2.参数管理机制
参数管理是我最近才碰上的新事物,我也没法把它说的和书本上有什么不同。
其实我还是觉得它和上面两种通讯非常类似,都可以把ROS Master当作公告板来理解。