你好,我是小鱼,最近疫情有些严重,你们必定要注重好我的防御。html
你还记得ROS镇的故事吗?(ROS2子承父位、ROS镇长安详晚年!祈祷郑州平安!)后来ROS2镇长来了以后,王二订报的方式也发生了改变,让咱们一块儿来看看吧。node
李四是一名擅长写小说的做家,王二是一名喜欢看小说且单身多年的单身狗。王二最喜欢看李四写的《艳娘传奇》这个小说。算法
因此王二(Node)出于对《艳娘传奇》(Topic)的兴趣,订阅了(Subscribe)李四(Node)发布(Publish)的小说。小程序
看完上面的内容,咱们来总结一下,上面其实讲了一下ROS2中Topic通讯方式。Topic是一种发布订阅模型。markdown
订阅者(王二)须要经过订阅话题(艳娘传奇)来获取发布者(李四)的发布的《艳娘传奇》的具体内容。app
李四王二通讯模型
仍是一对一(一个发布者,一个订阅者)的模型,ROS2中实际上是能够1对n
,n对1
,n对n
的。ide
而且知足如下规则:工具
ROS2做为一个强大的工具,在运行过程当中,咱们是能够经过命令来看到节点和节点之间的数据关系的。oop
运行咱们的第二章中的你说我听小程序。依次打开三个终端,分别输入下面三个命令。学习
ros2 run demo_nodes_py listenerros2 run demo_nodes_cpp talkerrqt_graph
复制代码
你能够看到下面这张图
你能够改变一下,菜单栏的选项,看一看下面图的变化,感觉一下rqt_graph工具的强大。
这是一个很重要的工具,小鱼在学习和使用ROS2中常常使用它,来看一看数据究竟是怎么走到,它能够帮咱们搞清楚一个节点的输入和输出是什么。
还记得上一节的ros2 node指令吗?ros2也支持不少强大的topic指令。可使用下面的指令查看。
ros2 topic -h
复制代码
这里小鱼先简单介绍一下,你们能够手动在终端输入这几个命令来尝试一下。
命令
ros2 topic list
复制代码
结果
命令
ros2 topic list -t
复制代码
结果
命令
ros2 topic echo /chatter
复制代码
结果
命令
ros2 topic info /chatter
复制代码
结果
上面一个告诉你们这个消息是std_msgs/msg/String,那String里面有什么呢?不妨来试一试。
命令
ros2 interface show std_msgs/msg/String
复制代码
结果
命令
ros2 topic pub /chatter std_msgs/msg/String 'data: "123"'
复制代码
结果
若是你们想要了解更多的命令,能够到官网来看一看,下一节小鱼就会来带你们来手动写Python版本的话题通讯。
我是小鱼,一名机器人算法工程师。 目前在作公众号,欢迎你们关注!