ROS2学习笔记(3)什么是ROS2 topics

什么是ROS2 topics


上一篇笔记学习了节点,ROS2正是帮我们可以把一个复杂的系统分解成很多个模块化的节点。

topics(话题)是ROS的重要元素,它的作用就充当这些模块化的节点之间交换信息的总线。

节点通过发布和订阅的方式进行话题消息通信。话题不是只有点对点的通信方式。一个节点可以发布向任意数量的话题发布数据,同时也可以订阅任意数量的话题。从而实现一对多、多对一、多对多的通信方式。

请添加图片描述


话题里是什么样?

先来再次跑起海龟模拟器(turtlesim)和海龟操控键盘(turtle_teleop_key)。


查看话题列表

新开一个终端输入ros2 topic list可以查看系统中当前存在的话题列表。

终端返回:

/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

目前存在5个话题,从前一篇学习笔记中知道/turtlesim/teleop_turtle节点都有*/turtle1/cmd_vel*这个话题。从名称cmd_vel可以猜测:是command velocity (速度命令)的缩写,/teleop_turtle节点通过这个话题发布速度,订阅者/turtlesim节点收到后移动海龟。


话题回显

可以用ros2 topic echo <topic_name>这个命令来回显话题中的数据。

来看一下/turtle1/cmd_vel这个话题的数据:

ros2 topic echo /turtle1/cmd_vel

运行后没有看到任何东西,这时候在运行turtle_teleop_key的终端操作方向键,就立看到回显的话题数据了

在这里插入图片描述

所以正是通过/turtle1/cmd_vel这个话题来使海龟移动。


查看话题信息

前面的操作已经知道了话题列表里话题的名称,现在可以用ros2 topic info <topic_name>命令来看话题的更多信息。

查看一下/turtle1/cmd_vel这个话题

ros2 topic info /turtle1/cmd_vel

终端返回:

在这里插入图片描述

可以看到这个话题的类型是geometry_msgs/msg/Twist,发布者的数量1个,订阅者的数量1个。可以尝试多开几个海龟窗口,看看话题信息的变化。


ros2 interface show

我们已经了解到,节点使用消息通过话题发送数据。

发布者和订阅者必须传输相同类型的消息才能进行通信。

通过topic info命令,我们知道了/turtle1/cmd_vel的类型是geometry_msgs/msg/Twist。(使用ros2 topic list -t这个命令可以同时查看话题列表和每个话题的类型)。

geometry_msgs/msg/Twist表示在geometry_msgs包中有一个msg叫做Twist

通过**ros2 interface show <msg type>**这个命令可以查看消息类型的更多细节,特别是消息的数据结构。

查看一下geometry_msgs/msg/Twist

在这里插入图片描述

可以了解到这个消息类型中包含两个三维向量,分别是线速度和角速度。


其它补充

使用命令将数据发布到话题。可以使用ros2 topic pub <topic_name> <msg_type> '<args>'这个命令直接在命令行测试消息发布到话题。

需要注意的是 '<args>'参数需要以 YAML 语法输入,比如用以下命令发布一次消息:

ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

使用命令查看话题中数据发布的频率。可以使用ros2 topic hz <topic_name>


ROS2话题的学习就先到这了。


参考:
  • ROS 2 Documentation:https://docs.ros.org/en/galactic/index.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kal-Lai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值