ROS学习笔记6:ROS通信架构(Topic)

ROS提供的通信方式

  • Topic 主题
  • Service 服务
  • Parameter Service 参数服务器
  • Actionlib 动作库

Topic

Topic是一种点对点(Node对Node)的单向异步通信方式。

通信机制: publish-subscribe

image-20200215124524212

异步通信

publisher:它每发布一次消息之后,就会继续执行下一个动作,至于消息是什么状态、被怎样处理,它不需要了解。

subscriber: 它只管接收和处理topic上的消息,至于是谁发来的,它不会关心。

一个topic可以被多个subscriber,也可以有多个publisher。

Topic相关命令

可以执行命令rostopic help来查看topic的相关命令,执行rostopic command -h来查看具体用法。

列出当前所有topic(可以看到topic都是/开头的)

rostopic list

显示某个topic的信息

rostopic info topic_name

显示某个topic的内容

rostopic echo topic_name

向某个topic发布内容

rostopic pub topic_name ...

查看某个topic的带宽

rostopic bw topic_name

查看某个topic的频率

rostopic hz topic_name

查找某个类型的topic

rostopic find topic_type

查看某个topic的类型(msg)

rostopic type topic_name

Message: Topic的数据格式

Message是topic内容的数据类型,定义在“*.msg"文件中,该文件放在”pkg/msg"里。

基本的msg

  • bool
  • int8、int16、int32、int64(以及uint)
  • float、float64
  • string
  • time
  • duration
  • header
  • 可变长数组array[](可以理解成vector<…>)
  • 固定长度数组array[C]

例子

​ 以topicsensor_msg/image为例,它的msg存放在sensor_msgs/msg/image.msg,它的结构如下:

std_msg/Header	header
				uint32				seq
				time				stamp
				string				frame_id
uint32				height
uint32				width
string				encoding
uint8				is_bigendian
uint32				step
uint8[]				data

msg相关命令

列出系统上所以msg

rosmsg list

显示某个msg内容

rosmsg show msg_name
发布了45 篇原创文章 · 获赞 1 · 访问量 2459

猜你喜欢

转载自blog.csdn.net/amnesiagreen/article/details/104565896