ROS2官网学习笔记 理解ROS2话题篇


学习目标:使用rqt_graph和命令行工具查看ROS2的话题.

背景

ROS2将一个复杂的系统分解为由许多模块化的节点组成。话题是ROS网络的重要元素,它充当节点交换消息的总线。一个节点可以将数据发布到任意数量的话题,同时也可以订阅任意数量的话题。同ros1一样话题是数据在节点之间传递的重要方式之一。

要准备的条件

需要完成前面的所有教程。

学习内容

1. 启动节点

打开一个终端启动一个节点

ros2 run turtlesim turtlesim_node

启动另一个节点

ros2 run turtlesim turtle_teleop_key

2. rqt_graph

在之前的教程中我们把rqt的所有工具都装了,和ros1一样rqt_graph用于显示话题和节点的连接关系

rqt_graph

运行过后我们得到下面的连接图
在这里插入图片描述
我们也可以先运行rqt然后依次点击Plugins > Introspection > Nodes Graph也可以打开rqt_graph

3. ros2 topic list

和ros1类似运行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]

4. ros2 topic echo

和ros1一样这是一个比较重要的命令,可以查看ros话题中当前的发布的消息内容

ros2 topic echo <topic_name>

5. ros2 topic info

和ros1一样节点不是点对点,可以多对多,也可以多对一,一对多
通过下面的命令我们可以查看当前话题的订阅发布节点的数量

ros2 topic info <topic_name>

6. ros2 interface show

这个操作和ros1一样用于查看消息话题的消息结构

ros2 interface show <msg_name>.msg

例如

ros2 interface show geometry_msgs/msg/Twist.msg

我们得到如下的结果

# This expresses velocity in free space broken into its linear and angular parts.

Vector3  linear
Vector3  angular

7. ros2 topic pub

在我们知道了消息类型的结构过后可以通过命令行向指定话题发送消息。
args为消息的内容,值得注意的是需要按照YAML格式进行输入

ros2 topic pub <topic_name> <msg_type> '<args>'

例如运行下面的命令乌龟就会移动一段距离,--once是可选选项,代表发布一次消息过后退出

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

我们还可以使用--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}}'

8. ros2 topic hz

我们可以用下面命令查看话题的发布速率

ros2 topic hz <topic_name>

例如

ros2 topic hz /turtle1/pose

终端输出发布频率

average rate: 63.594
	min: 0.001s max: 0.017s std dev: 0.00193s window: 64
average rate: 63.050
	min: 0.001s max: 0.017s std dev: 0.00142s window: 127
average rate: 62.858

9. 关闭节点

Ctrl + C关闭所有节点

总结

总的来说和ros1差不多

发布了63 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38649880/article/details/104394588
今日推荐