ROS通信方式之Topic
ROS的不同node之间进行通信有以下几种方式:
Topic(主题)
Service(服务)
Parameter Service(参数服务器)
Actionlib(动作库)
下面先介绍Topic通信
Topic
Topic是什么样的?
Node间通过publish-subscribe机制通信,Node A把信息发送到Topic,然后Node B从这个Topic接收。每个Topic可以从多个Node接收信息,也可以有多个Node从这个Topic获得信息。
Topic是ROS中的一种异步通信方式,什么是异步通信呢,简单来说,Node A发送消息(publish)和Node B接收消息(subscribe)没有时间上的连续性,即不是接连发生的。
Topic的格式要求
Message, 是topic内容的数据类型(类),它规定了要发送的信息由哪些组成,定义在*msg文件中。
基本msg包括bool, int8, int16, int32, int64(以及uint), float32, float64, string, time, duration, header, 可变长度数组array[], 固定长度数组array[C]等
示例如下:
Topic的有关操作
列出当前所有的Topic
restopiclist
显示某个topic的属性信息
rostopic info / topic_name
显示某个topic的内容
rostopic echo / topic_name
向某个topic发布内容
rostopic pub / topic_name
msg文件的有关操作
列出系统上所有msg
rosmsg list
显示某个msg的内容
rosmsg show / msg_name