您的位置:首页 > 其它

ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 6 理解ROS话题

2017-04-13 22:22 696 查看

前言

这个教程介绍ROS的主题,包括使用rostopic和rqt_plot命令行工具。

1.启动ROS

1.1 roscore

在一个新的终端中通过roecore来启动ROS:

$ roscore


任何时候只能有一个roscore在运行。

1.2 启动turtlesim

这个教程我们任然使用turtlesim来做演示。在一个新终端中:

$ rosrun turtlesim turtlesim_node


1.3 使用键盘控制turtle

通过turtle_teleop_key节点使用键盘控制小乌龟

$ rosrun turtlesim turtle_teleop_key


现在,我们就可以使用键盘来控制小乌龟了。

这背后是如何实现的?我们看下面:


2. ROS 的主题

上面我们使用rosrun运行了两个节点 turtlesim_node和turtle_teleop_key,它们通过主题传递传递信息。

turtle_teleop_key发布键盘信息到一个主题上,turtlesim_node订阅了该主题,我们使用rqt_graph来可视化的查看节点和它们用于通信的主题。

2.1 使用rqt_graph

rqt_graph为在系统上运行的节点和主题等信息创建一个动态的图,rqt_graph是rqt包的一部分。可以通过如下方法安装:

$ sudo apt-get install ros-<distor>-rqt
$ sudo apt-get install ros-<distor>-rqt-common-plugins


在一个新的终端中:

$ rosrun rqt_graph rqt_graph


你可以看到如下图:

其中椭圆形表示节点;

箭头表示主题,方向指向订阅者,另一端是发布者。

2.2 rostopic工具

rostopic工具能过获得主题的信息。可以使用-h选项获得rostopic帮助简介:

$ 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


2.3 使用rostopic echo

rostopic echo显示发布到主题上的数据。

$ rostopic echo ROS_TOPIC


这时,可以通过刷新rqt_graph可以查看新的图,会发现rostopic echo也订阅了该主题。

2.4 使用rostopic list

rostopic list返回一个当前所有被订阅和发布主题的列表。

可以通过-h选项详细的列出可用参数:

$ rostopic list -h
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


3. ROS Messages

节点通过主题通信时,在主题上发布或订阅主题上的消息。通信双方必须发布或订阅相同类型的消息,这就意味着,一个主题的类型是由发布到该主题上的消息类型决定的。发送到主题上的消息类型可以由rostopic type工具来查看。

3.1 使用 rostopic type

rostopic type [topic]


例如:

$ rostopic type /turtle1/cmd_vel
//返回:
geometry_msgs/Twist


可以使用rosmsg 工具来查看更详细的信息:

$ rosmsg show geometry_msgs/Twist
//返回:
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z


4. 继续rostopic

上面我们已经学习了ROS的messages,下面我们结合messages使用rostopic。

4.1 使用rostopic pub

rostopic pub 可以在主题上发布消息:

rostopic pub [topic] [msg_type] [args]

例如:

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]''[0.0, 0.0, 1.8]'


4.2 使用rostopic hz

rostopic hz报告主题上消息发布的频率:

rostopic hz [topic]


5. 使用rqt_plot

rqt_plot显示主题上随时间变化的数据:

首先我们运行rqt_plot:

$ rosrun rqt_plot rqt_plot


会有如下UI显示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐