上一期指路: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的使用与开发中,这些同样也是我们经常会使用到的命令行工具,大家也可以多摸索一下它们的使用方法,下课!

ROS wiki系列|通过ROS wiki-tutorials学习话题相关推荐

  1. ROS wiki系列|通过ROS wiki-tutorials学习服务和参数

    依旧是上一期指路:ROS wiki系列|通过ROS wiki-tutorials学习话题 前面讲了节点和话题,我们接下来讲服务和参数,走你~ 同样甩上我们今天的教程页面链接:Understanding ...

  2. ROS wiki系列|通过ROS wiki-tutorials学习节点

    前面几期我们讲的都是一些入门相关的内容-- ROS wiki系列|ROS wiki初探(自用) ROS wiki系列|Documentation-ROS部分讲解 ROS wiki系列|ROS入门基础概 ...

  3. ROS wiki系列|Documentation-ROS部分讲解

    上一篇文章介绍了ROS wiki的大体结构,回顾戳→ROS wiki系列|ROS wiki初探 接下来的内容就是分模块介绍啦,首先是重头戏Documentation中的ROS部分,上一篇文章讲到这部分 ...

  4. ROS wiki系列|ROS wiki初探(自用)

    在进行ROS学习的过程中,我们总是需要借助一些资料来进行学习,其中,ROS wiki是每个ROS人都必不可少会使用到的工具,在ROS学习中我们也经常要使用ROS wiki来查阅一些语法的解析.功能包的 ...

  5. ROS wiki系列|ROS入门基础概念讲解

    上一期我们对ROS wiki中ROS部分进行了着重讲解,回顾戳这 这一期我们主要介绍ROS-getting started部分的一些基本概念 相关wiki页面:http://wiki.ros.org/ ...

  6. 【ROS wiki】利用ros wiki寻求问题答案

    ROS wiki系列文章简介:ROS wiki系列文章是本人ROS专栏下的子专题.该系列文章主要用来介绍:ROS初学者如何利用好ROS官方提供的ROS wiki平台,来查询ROS资料,了解ROS包的功 ...

  7. ros入门--中科院软件所ros学习笔记

    视频链接: 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 另外有一个不错的 学习网址: ...

  8. 古月居《ROS入门21讲》零基础学习笔记

    文章目录 前言 1.课程简介 2.Linux系统介绍及安装 3.Linux基础操作(操作集) 命令结构 常用命令 快捷操作 4.cpp&python极简基础(操作集) 简单对比 安装编译器 编 ...

  9. ROS机器人开发实践 [胡春旭] 学习笔记与资料

    资料链接: https://pan.baidu.com/s/1MRYL3asMJhOzWiAsBZKfzg 提取码: 9t3e 复制这段内容后打开百度网盘手机App,操作更方便哦 ROS常用的概念(一 ...

最新文章

  1. Android 活动与活动间数据传递
  2. 为什么清北硕博扎推街道办毫不意外, 反会越来越多?
  3. c#/.net 循序渐进理解-委托
  4. 005-对象——对象的 final const
  5. html4.0编辑器,KindEditor HTML(在线编辑器)
  6. Codeforces Round #377 (Div. 2) E. Sockets
  7. wxWidgets:wxApp概览
  8. idea 中maven依赖报错3部曲
  9. 计算机网络之数据链路层:6、后退N帧协议(GBN)
  10. Oracle RMAN 学习
  11. 集群间动态扩展和删除hdfs的datanode和hbase的regionserver
  12. pandas—显示行索引与列索引(数组或者列表)
  13. 绝地求生透视辅助视频
  14. pytorch(11)-- crnn 车牌端到端识别
  15. HP RDX备份磁带系统的突破性特点
  16. centos改变文件拥有者_linux修改文件所有者和文件所在组
  17. Markdown 语法手册全
  18. Taro微信小程序实现 美团购物车小红点动画效果
  19. 第一次课 优秀作业展示
  20. MATLAB-7-程序流程控制

热门文章

  1. TikZ从零开始(一)——A Picture for Karl’s Students(上篇)
  2. php程序+打印机,php程序怎么调用打印机
  3. highchart图表
  4. X10SRA以及X10SRA-F主板启动针脚在先马黑洞机箱上的插法
  5. 列表文本框html,HTML列表添加文本框
  6. [机缘参悟-5]:科学、哲学、宗教大一统架构
  7. 近百种围巾的系法和搭配
  8. 掌财社:最强鸿蒙概念股”停牌核查 润和软件被散户买爆?
  9. javascript数组去重
  10. 如何简单快速复制网页上的文字?