ROS的通信是整个系统的核心和精髓部分。
ROS主要的通信方式有:
Topic
Service
Parameter Service
Actionlib
1 Topic通信方式
Topic是ROS最通用的通信方式,两个node之间要进行通信,就需要建立一个Topic话题,两个node之间是通过publish-subscribe机制进行通信的。
例如 Camera节点发送image_rgb和image_depth话题,node2图形显示节点和node3图像处理节点在不停地订阅这个话题,所以我们可以实时处理和显示图像。
Topic的通信是异步通信。什么是异步呢?
就是说我这个节点Publish发送Topic话题,但是不管有没有其他节点接收它。而另外的节点只要检测到有Topic话题Publish发送过来,就Subscrib接收它。
对于同一个Topic,可以有多个订阅的节点,同时也会有多个发布的节点。
Topic有很严格的格式要求,我们这里面是按照Message数据格式来发送的。
我们可以把Message理解成一个类或者数据结构,具体发布的消息是一个个对象。
ROS里面基本的msg包括bool,int8 16 32 64,float32 64,string,time,duration,header,可变长数组array[]。