《 无人驾驶原理与实践》一2.2ROS的核心概念

举报
华章计算机 发表于 2019/05/30 20:06:41 2019/05/30
【摘要】 本书摘自《 无人驾驶原理与实践》一第二章,第2.2节,编著是申泽邦 雍宾宾 周庆国 李良 李冠憬

2.2ROS的核心概念

需要理解的ROS核心概念包括[4]:
     ▲    Master(主节点)
     ▲    Node(节点)
     ▲    Topic(话题)
     ▲    Message(消息)

1 Master(主节点)

       ROS Master用于管理各节点间的通信,它通过RPC[7](Remote Procedure Call,远程过程调用)提供了节点的登记列表和对其他计算资源信息的查找。如果没有Master,其他节点通信时将无法找到与之交互的节点交换消息或调用服务。但有了Master,在某些方面又增加了系统的风险,如节点都通过Master来管理和调用服务,一旦Master崩溃,其他所有节点都会受到影响。因此,在ROS2版本中提出了一种新的消息通信架构——DDS[8](Data Distribution Service ),它用于解决此类问题,以及实现实时传输。启动Master的命令如下:

            roscore

2 Node(节点)

       节点又被称为“软件模块”,是一些独立编译、执行运算任务的进程。通常情况下,ROS利用规模可增长的方式使代码模块化:一个系统就是由很多节点组成的。我们使用“节点”使得基于ROS的系统在运行的时候更加形象化:当许多节点同时运行时,可以很方便地将点对点通信绘制成一个图表,在这个图表中,进程就是图中的节点,而点对点的连接关系就是其中的连接线。使用如下指令运行节点:

                   rosrun package_name node_name

                   查看激活节点列表:

                   rosnode list


                   列出节点信息:

                   rosnode info node_name


                   “杀死”指定运行节点:

                   rosnode kill node_name


       在节点崩溃又不运行的情况下,使用此命令清除节点注册信息,可以清理节点运行环境:

                   rosnode cleanup


                   列出运行在指定计算机上的节点信息,或者列出机名:

                   rosnode machine machine-name

3 Topic(话题)

       在ROS中,消息以发布/订阅的方式进行传递。一个节点可以在一个给定的主题中发布消息,另一个节点针对某个主题关注与订阅特定类型的数据,可能同时有多个节点发布或者订阅同一个主题的消息。总体上,发布者和订阅者不必了解彼此的存在。想象一下我们在论坛里发帖子,帖子的主题就是一个Topic,发帖人发帖后,每个参与讨论的人就是一个Node,所有的言论都发布在这个Topic之下。有的人发表一些言论,这就是Node发布一些Message到Topic上;有的人回复某些言论,写下自己的见解,对方就可以收到回复通知,对于对方来说,这就是消息通知订阅。发布和订阅是完全独立的对象操作。查看激活话题:


                    rostopic list-v


                    显示一个Topic的实时内容:

                    rostopic echo /topic_name


                    把bagfile里的Topic数据输出到指定csv格式的文件中,并使用Excel绘图功能,将其轨迹、路线等画出来,提高数据可视化程度,特别适合于路径、GPS轨迹等:

rostopic echo -b bagfilebag -p /topic_name > datacsv


       如图21所示就是通过Topic输出的csv文件,使用Excel这样简单的工具即可完成复杂的轨迹复现功能,非常实用。

image.png

       显示话题相关信息:

       rostopic info /topic_name


       显示Topic发布频率,在查看传感器数据发布频率是否符合期望时很有用:

       rostopic hz /topic_name


       发布数据到指定的Topic上,在调试数据时很有用:

       rostopic pub /topic type args

4 Message(消息)

       消息是用来定义话题类型的数据结构,它支持整型、浮点型、布尔型、字符串等一系列数据结构,格式为*msg文件。
       查看话题所承载的消息类型:

       rostopic type /topic_name


       也可用此命令继续深入查看Message信息:

       rosmsg info message_type


       列出所有Message:

       rosmsg list


       显示Message内的字段定义:

       rosmsg show message_name


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。