理解rostopic

来源:互联网 发布:直接淘宝代购找衣服 编辑:程序博客网 时间:2024/06/06 04:46

分别在三个控制台中运行一下三个命令:

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

现在可以用方向键移动turtle了,如果不能,请选定打开turtle_teleop_key这个node的控制台再按方向键。

使用rqt_graph

rqt_graph可以显示节点和话题之间的关系,

安装rqt_graph

sudo apt-get install ros-<distro>-rqt

sudo apt-get install ros-<distro>-rqt-common-plugins

distro为对应的ROS版本,我的是hydro

使用rostopic

查看rostopic帮助

rostopic -h

有以下6种用法:

rostopic bw display bandwidth used by topic
rostopic echo print messages toscreen
rostopic hz display publishing rate
oftopic
rostopic list print information about activetopics
rostopic pub publish data to topic
rostopic type printtopic type

rostopic echo

对于hydro版本

运行以下命令:

rostopic echo /turtle1/cmd_vel

/turtle1/cmd_vel发布的信息打印到屏幕上

重新选定turtle_teleop_key控制台,使用方向键移动turtle可以看到发布的信息

在之前打开的rqt_graph中点击刷新按钮,可以看到多出了一个订阅者

rostopic list

显示当前运行中的topic

运行

rostopic list -v

结果

Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
*/turtle1/command_velocity [turtlesim/Velocity] 1 publisher
*/rosout [roslib/Log] 2 publishers
* /rosout_agg [roslib/Log] 1publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:
* /turtle1/command_velocity [turtlesim/Velocity] 1subscriber
* /rosout [roslib/Log] 1 subscriber

ROS的信息

发布者与话题和订阅者与话题之间的交流是通过信息进行的,发布者给话题的信息类型与订阅者接受的信息类型必须一致,这意味者话题定义了在上面发布的信息的类型。

rostopic type

rostopic type [topic]

查看topicmessage类型

例如

rostopic type /turtle1/cmd_vel

显示

geometry_msgs/Twist

rosmsg show

查看message类型的具体信息

例如

rosmsg show geometry_msgs/Twist

得到

geometry_msgs/Vector3linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3angular
float64 x
float64 y
float64 z

rostopic pub

rostopic pub [topic] [msg_type] [args]

向一个具体的topic发布一个消息

例如

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

-1

表示只发布一条消息

/turtle1/cmd_vel

发布的topic对象

geometry_msgs/Twist

发布的消息类型

--

之后的arg不再是该命令的选项

rostopic hz

rostopic hz [topic]

数据的发布频率

rqt_plot

rosrunr qt_plot rqt_plot

topic中输入

/turtle1/pose/x 

就可以看到位置在x方向时间变化曲线



原文地址

理解topic





0 0
原创粉丝点击