节点之间的消息通信主要有三种:
topic(话题):异步,单向,发布/订阅
service(服务):同步,双向,请求/响应
action(动作):异步,双向,目标/结果/反馈
1.话题
话题消息通信就是指发送消息的发布者和接受信息的订阅者以话题消息的形式发送和接收信息。
利用topic可以实现 1对1 、1对多、多对1 以及多对多的通信。
topic通信 实例:
建立一个发布者程序和一个订阅者程序,实现信息交互
(1)首先,我们要在home目录下创建一个工作空间,在工作空间的src文件夹下创建一个功能包,具体创建方法请看前面的文章
在实验中,我创建的工作空间为:easadon_ws
功能包为:learn_topic
(2)
我们要定义一个msg文件
我们在功能包 learn_topic 下创建一个msg文件夹,再在msg文件夹中创建一个msg文件,存放我们自定义的一些话题消息。
Person.msg
string name
uint8 gender
uint8 age
uint8 unknown = 0
uint8 male = 1
uint8 female = 2
接下来我们要在package.xml 中添加功能包依赖
在CMakeLists.txt 添加编译选项