turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题 来互相通信的。
turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。 下面让我们使用rqt_graph来显示当前运行的节点和话题。
6.2.1 使用 rqt_graph
rqt_graph能够创建一个显示当前系统运行情况的动态图形。 rqt_graph是rqt功能包中的一部分。 如果你没有安装,请通过以下命令来安装:
Copy $ sudo apt-get install ros-indigo-rqt
$ sudo apt-get install ros-indigo-rqt-common-plugins
在一个新终端中运行:
Copy $ rosrun rqt_graph rqt_graph
你会看到类似下图所示的图形:
如果你将鼠标放在/turtle1/command_velocity上方,相应的ROS节点(蓝色和绿色)和话题(红色)就会高亮显示。
正如你所看到的turtlesim_node和turtle_teleop_key节点正通过一个名为/turtle1/command_velocity的话题来互相通信。
6.2.2 rostopic介绍
rostopic命令工具能让你获取有关ROS话题的信息。 你可以使用help选项查看rostopic的子命令:
Copy $ rostopic -h
rostopic bw display bandwidth used by topic
rostopic echo print messages to screen
rostopic hz display publishing rate of topic
rostopic list print information about active topics
rostopic pub publish data to topic
rostopic type print topic type
或者在rostopic之后按Tab键打印可能的子命令:
Copy $ rostopic
bw echo find hz info list pub type
接下来我们将使用其中的一些子命令来查看turtlesim。
6.2.3 使用 rostopic echo
rostopicecho可以显示在某个话题上发布的数据。 用法:
Copy rostopic echo [topic]
让我们在一个新终端中看一下turtle_teleop_key节点在/turtle1/command_velocit话题上发布的数据。
Copy $ rostopic echo /turtle1/cmd_vel
接下来我们通过按下方向键使turtle_teleop_key节点发布数据。
记住如果turtle没有动起来的话就需要你重新选中turtle_teleop_key节点运行时所在的终端窗口。
现在当你按下向上方向键时应该会看到下面的信息:
Copy linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
现在让我们再看一下rqt_graph(你可能需要刷新一下ROS graph)。
6.2.4 使用 rostopic list
rostopic list能够列出所有当前订阅和发布的话题。 让我们查看一下list子命令需要的参数,在一个新终端中运行:
显示
Copy Usage: rostopic list [/topic]
Options:
-h, --help show this help message and exit
-b BAGFILE, --bag=BAGFILE
list topics in .bag file
-v, --verbose list full details about each topic
-p list only publishers
-s list only subscribers
在rostopic list中使用verbose选项:
这会显示出有关所发布和订阅的话题及其类型的详细信息。
Copy Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 2 publishers
* /rosout_agg [rosgraph_msgs/Log] 1 publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
* /rosout [rosgraph_msgs/Log] 1 subscriber