ROS wiki系列|通过ROS wiki-tutorials学习话题

上一期指路:ROS wiki系列|通过ROS wiki-tutorials学习节点
这一期我们就用ROS wiki中的tutorials来学习ROS中另外一个重要的概念:topic——话题
在前面讲解入门概念的时候我们也讲过了,节点通过将消息发布到给定的主题来发送消息,而对某种类型的数据感兴趣的节点将订阅适当的主题,从逻辑上讲,可以将主题看作强类型消息总线。每个总线都有一个名称,任何人都可以连接到总线来发送或接收消息。
同时在上一节对节点的讲解中,我们也在节点编写的过程中了解到了话题的创建与发布等,因此今天我们主要围绕话题相关的一些工具来看看它们的使用方法。
ROS tutorials中与topic有关的教程有:
Understanding ROS Topics
这个教程介绍了ROS主题以及rostopic和rqt_plot命令行工具的使用。
开始学习之前我们要跑点东西:
1.roscore:roscore
2.turtlrsim:rosrun turtlesim turtlesim_node
3.turtle keyboard teleoperation:rosrun turtlesim turtle_teleop_key
运行以上三个之后就可以用键盘上的方向键来操控小海龟运动啦~
小插曲之小海龟撞墙:
在这里插入图片描述
OK,正式开始教程学习
首先前面我们在运行了小海龟节点以及小海龟的键盘控制节点之后,这两个节点之间是靠一个话题来进行通信的,turtle_teleop_key节点在话题上发布键值,而turtlesim节点订阅该话题来获取键值,这里我们可以使用rqt_graph来查看正在运行的节点与话题。

1.Using rqt_graph

rqt_graph创建系统中正在发生的事情的动态图。rqt_graph是rqt包的一部分。
在新终端运行:rosrun rqt_graph rqt_graph
一开始看到的是没有颜色的,当我们把鼠标移至/turtle1/command_velocity时节点和话题将会高亮(这里是变色),也就是说turtlesim_node和turtle_teleop_key节点是通过话题/turtle1/command_velocity来进行通信的。
在这里插入图片描述

2.Introducing rostopic

rostopic工具的作用是获取关于ROS话题的信息。
你可以使用帮助选项来获取rostopic可用的子命令:rostopic -h

rostopic bw     显示话题使用的带宽
rostopic echo   将消息打印到屏幕
rostopic hz     显示话题的发布速率    
rostopic list   打印有关活跃话题的信息
rostopic pub    将数据发布到话题上
rostopic type   打印话题类型

接下来我们就来看看这些命令行工具的使用场景吧~

3.Using rostopic echo

rostopic echo显示发布到话题上的数据
使用方法:rostopic echo [topic]
依旧使用小海龟为例。运行小海龟节点与小海龟控制节点,然后新终端运行rostopic echo /turtle1/cmd_vel,接下来用键盘方向键控制小海龟,我们将会看到终端输出:
在这里插入图片描述

4.Using rostopic list

rostopic list返回当前订阅和发布的所有主题的列表
同时它还有一些子命令,我们运行rostopic list -h可以查看
可选项:
-h,-help:显示帮助信息并退出
-b BAGFILE, --bag=BAGFILE:在.bag文件中显示话题列表
-v,–verbose:列出每个话题的详细信息
-p:仅列出发布者
-s:仅列出订阅者
我们可以运行一下试试,运行后我们将会看到:
在这里插入图片描述

5.Using rostopic type

节点之间的话题通信是通过消息传递来完成的,同一个话题的发布者和订阅者之间发送和接收的消息类型必须是一致的,因此我们也需要了解话题数据的消息类型~
rostopic type返回正在发布的任何主题的消息类型
使用方法:rostopic type [topic]
在终端输入:rostopic type /turtle1/cmd_vel终端将会返回geometry_msgs/Twist,也就是这个话题的消息类型,我们也可以用rosmsg来看一下这个消息类型的详细内容,运行rosmsg show geometry_msgs/Twist,终端将会返回:
在这里插入图片描述

6.Using 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]'
小海龟将会以一个圆形轨迹运动,此时它的线速度为2,角速度为1.8。
-1 将会使话题只发布一次数据
我们会注意到这里小海龟只运动了一下,因为如果需要持续运动我们需要让话题以一定的频率循环发布(这里是1Hz),可使用rostopic pub -r指令:rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
这下小海龟就会持续运动啦~

7.Using rostopic hz

rostopic hz报告话题数据的发布速率
使用方法:rostopic hz [topic]
我们同样来尝试一下:rostopic hz /turtle1/pose
终端将会输出:
在这里插入图片描述
我们也可以将rostopic type和rosmsg show结合使用,来深入了解一个话题的信息:rostopic type /turtle1/cmd_vel | rosmsg show

8.Using rqt_plot

rqt_plot显示在话题上发布的数据的滚动时间图,这里我们将使用rqt_plot来绘制在/turtle1/pose主题上发布的数据,在新终端运行:rosrun rqt_plot rqt_plot
将会出现一个弹窗,弹窗左上角可以选择添加对应的话题,减号也可以隐藏之前添加的话题,我们可以看一下/turtle/pose
在这里插入图片描述
ok,到这里我们就基本讲完话题相关命令行工具的使用方法了,在ROS的使用与开发中,这些同样也是我们经常会使用到的命令行工具,大家也可以多摸索一下它们的使用方法,下课!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值