本节我们来介绍一下话题,它是 ROS 中最为常用的概念。我们将利用 ROS 中一些常用工具来帮助大家理解话题是如何组织节点间的通信的。
3.5.1 ROS 话题
打开三个终端,分别输入如下指令,来打开节点管理器和 turtlesim_node以及turtle_teleop_key 这两个节点:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
然后我们根据指示,在 turtle_teleop_key 节点的启动界面按下键盘上的方向键,可以发现我们能够通过键盘控制小海龟的移动。这其实就是因为他们通过话题建立一个通信机制, turtle_teleop_key 节点把键盘的触发信息通过话题进行了发布, turtlesim_node 节点订阅了这个话题,因此也同步获取了键盘的触发信息。
我们来使用 rqt_graph 工具来查看当前的动态图表,这能更清晰地解释系统中当前正在发生的事情,打开一个新的终端,输入如下指令:
rosrun rqt_graph rqt_graph
如上图所示,可以看到两个节点的订阅关系,他们通过一个名为 /turtle1/cmd_vel 的话题建立通信。