ROS2 基础概念 话题


1. Topics

话题是节点交换消息的总线
节点可以向任意数量的话题发布数据,并同时订阅任意数量的话题
在这里插入图片描述

指令功能
ros2 topic bw /topic显示话题所使用的带宽
ros2 topic hz /topic显示话题的发布频率
ros2 topic pub /topic type args将数据发布到话题中
ros2 topic delay /topic显示话题的延时
ros2 topic type /topic显示话题的消息类型
ros2 topic echo /topic显示话题对应的消息内容
ros2 topic info /topic显示当前话题的通信信息
ros2 topic find message_type按照类型查找话题
ros2 topic list列出当前活动的话题

2. rqt_graph

将使用rqt_graph来可视化不断变化的节点和话题,以及它们之间的连接

在这里插入图片描述

/teolep_turtle节点正在向/turtle1/cmd_vel话题发布数据
/my_turtle/turtlesim 节点订阅该话题以接收数据
为了后续描述的简便,/my_turtle 节点到此就退出了


3. 话题

在新终端中运行ros2 topic list命令将返回系统中当前活动的所有话题的列表:

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

ros2 topic list-t 返回的话题列表将话题类型附加在括号中:

/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/turtle1/cmd_vel [geometry_msgs/msg/Twist]
/turtle1/color_sensor [turtlesim/msg/Color]
/turtle1/pose [turtlesim/msg/Pose]

由于知道/teolep_turtle通过/turtle1/cmd_vel话题向/turtlesim发布数据
因此使用echo来查看该话题:

$ ros2 topic echo /turtle1/cmd_vel

一开始没查询到话题,这是因为节点turtle_teleop_key没有发布该话题的数据
只要切换节点turtle_teleop_key的终端,使用键盘控制,乌龟会执行控制指令
也可以看到我们发布的话题数据
在这里插入图片描述


4. 话题类型

发布者和订阅者必须发送和接收相同类型的消息才能进行通信
cmd_vel 话题的类型为 geometry_msgs/msg/Twist
那么可以查看该话题类型

ros2 interface show geometry_msgs/msg/Twist

# This expresses velocity in free space broken into its linear and angular parts.
# 这表示自由空间中的速度,分为线性部分和角度部分。

    Vector3  linear
            float64 x
            float64 y
            float64 z
    Vector3  angular
            float64 x
            float64 y
            float64 z

5. 话题发布

现在已经有了消息结构,可以使用以下命令行直接将数据发布到话题上:

ros2 topic pub <话题名称> <消息类型> '<数据>'

例如:

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}}"

–once是可选参数,表示“发布一条消息然后退出”

在这里插入图片描述如果要持续发布的话,需要删除--once选项,添加了--rate 1选项
话题将以1Hz的频率流发布话题数据

ros2 topic pub --rate 1 /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}}"

在这里插入图片描述
海龟就一直转圈圈


6. 话题频率

上面提及到我们以1Hz的频率流发布话题/turtle1/cmd_vel数据geometry_msgs/msg/Twist
那么可以通过查看 ros2 topic hz
如查看海龟姿态话题的频率:

ros2 topic hz /turtle1/pose

在这里插入图片描述
这里可以看到是60Hz左右,所以这个1s过程姿态的更新依靠的是最开始的运动指令


谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

氢键H-H

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

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

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

打赏作者

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

抵扣说明:

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

余额充值