ROS新手指导3 - Topics
2020-07-03 本文已影响0人
irene0_0
7 理解ROS Topic
前置条件
- roscore
首先确认已经启动了roscore - turtlesim
在新终端运行小乌龟
$ rosrun turtlesim turtlesim_node
- turtle keyborad teleoperation
在新窗口执行
$ rosrun turtlesim turtle_teleop_key
现在我们可以使用键盘的上下左右键驱动小乌龟了
接下来我们看下,在这个场景下边是什么在运行
ROS Topics
turtlesim_node和turtle_teleop_key节点是通过彼此的一个ROS topic通信的。turtle_teleop_key在topic上发布了消息,然后turtlesim订阅一样的topic去接受消息。rqt_graph可以展示当前正在运行的节点和topic。
- 使用rqt_graph
如果没有,就安装它
$sudo apt-get install ros-<distro>-rqt
$sudo apt-get install ros-<distro>-rqt-common-plugins
打开一个新终端,运行它
$ rosrun rqt_graph rqt_graph
我们可以看到一个图展示
椭圆形的是节点,箭头上的是topic
- rostopic 说明
我们可以使用rostopic查看发布的topic信息
$ rostopic -h
- 使用rostopic echo
这个命令展示了发布在topic上的数据
打开一个新终端
$ rostopic echo /turtle1/cmd_vel
执行完之后,你可能什么数据都没有看到,让我们来让turtle_teleop_key通过键盘发布一些数据
打开运行turtle_teleop_key的终端,使用键盘上下移动,此时查看echo的终端,就会看见数据了。
现在我们再来看rqt_graph,展示的带有一串数字的就是rostopic echo,它也订阅了上边发布的topic
- 使用rostopic list
这个展示了当前所有的已经订阅的发布的topic
打开一个新的终端
$ rostopic list -h
展示简要信息
$ rostopic list -v
展示详细的topic信息
ROS Messages
节点之间通信通过topic发送消息信息。对于发布者和订阅者来说,他们必须发送和接收相同类型的消息。在topic上发送的消息类型可以通过rostopic type来决定。
- 使用rostopic type
$ rostopic type /turtle1/cmd_vel
我们可以使用rosmsg show geometry_msgs/Twist,查看类型的具体信息
rostopic 扩展
- 使用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 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
- 使用rostopic hz
它展示了数据发布的速度
$rostopic hz /turtle1/pose
可以看到基本在60hz
$rostopic type /turtle1/cmd_vel | rosmsg show
使用rqt_plot
打开新终端
rosrun rqt_plot rqt_plot
左上角输入 /turtle1/pose/x,点击右侧加号,再输入 /turtle1/pose/y,再点击+号,可以看到两条线
那个界面,最小化或者拖着放大的时候,会core...