ROS2 Journey III

1. Background

Topics 扮演的角色主要是 nodes 间交换信息用。

同样的,这个传递不是 1 to 1 的,可以是 1 to 1, 1 to many, many to 1 或 many to many。

Topics 是数据在节点或系统不同部分传递的主要方式。

2. Tasks

首先打开 /turtlesim_node/turtle_teleop_key

接下来使用rqt_graph来可视化。直接输入rqt_graph

这张图上,/turtlesim node 和 /tele_turtle通过topic互相交互。/teleop_turtle节点通过/turtle1/cmd_vel推数据。

3.ros2 topic list

ros2 topic list来查看当前的活跃话题。

ros2 topic list -t会额外显示话题类型。

4. Ros2 topic echo

要看数据就用 ros2 topic echo <topic_name>,在这里,teleop通过cmd_vel将数据传递到/turtlesim。用ros2 topic echo /turtle1/cmd_vel

rqt_gui_py_node_11547是echo创建的node。

5. ros2 topic info

ros2 topic info /turtle1/cmd_vel将返回

这里看到这个topic有1个publisher,两个subscription。

6. Ros2 interface show

ros2 topic list -t输出type。

代表在geometry_msgs 里有一个叫msg

ros2 interface show /geometry_msgs/msg/Twist可以查看具体的数据类型。

这说明/turtlesim节点传递了两个vectors,Linear and angular。

7. ros2 topic pub

也可以手动publish data。

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

例如这里测试一下/turtle1/cmd_vel geometry_msgs/msg/Twist。

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表示之外,还可以用– rate 1表示按1Hz执行。

下图可以很明显看出/turtle1/cmd_vel接收两个输入。

8. ros2 topic hz

可以查看rate。

Summary

Nodes publish information over topics, which allows any number of other nodes to subscribe to and access that information. In this tutorial you examined the connections between several nodes over topics using rqt_graph and command line tools. You should now have a good idea of how data moves around a ROS 2 system.