一、准备工作

1、打开roscore

roscore

2、turtlesim

  打开一个turtulesim节点

rosrun turtlesim turtlesim_node

3、turtle keyboard teleoperation

rosrun turtlesim turtle_teleop_key

现在你可以使用键盘上的方向键来控制turtle运动了。如果不能控制,请选中turtle_teleop_key所在的终端窗口以确保你的按键输入能够被捕获。

二、ROS Topic

  turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim订阅该话题以接收该消息。下面让我们使用rqt_graph来显示当前运行的节点和话题。

1、Using rqt_graph

  rqt_graph能够创建一个显示当前系统运行情况的动态图形

(1)安装:

sudo apt-get install ros-kinetic-rqt

(2)使用:

rosrun rqt_graph rqt_graph

              

  如果你将鼠标放在适当位置,相应的ROS节点(蓝色和绿色)和话题(红色)就会高亮显示。正如你所看到的,turtlesim_nodeturtle_teleop_key节点正通过一个名为 /turtle1/cmd_vel的话题来互相通信。

2、介绍rostopic

  rostopic命令工具能让你获取有关ROS话题的信息。

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

3、使用rostopic echo

(1)语法:

rostopic echo [topic]

(2)作用:

   Rostopic echo可以显示在某个话题上发布的数据。

(3)demo

rostopic echo /turtle1/cmd_vel

4、使用rostopic list

(1)作用:

   Rostopic list能够列出所有当前订阅和发布的话题。

(2)语法:

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 list only subscribers

(3)demo

rostopic list -v

三、ROS Messages

话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器(turtle_teleop_key)和订阅器(turtulesim_node)之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型

1、使用rostopic type

(1)作用:

   可以返回所发布话题的消息类型

(2)语法:

rostopic type [topic]

(3)demo

rostopic type /turtle1/cmd_vel

 返回  geometry_msgs/Twist   我们可以看看这个消息类型的具体信息(使用rosmsg)

rosmsg show geometry_msgs/Twist

四、使用rostopic发送消息

1、rostopic pub

(1)语法:

rostopic pub [topic] [msg_type] [args]

(2)作用:

  可以把数据发布到当前某个正在广播的话题上。

(3)demo

命令成分 作用  
rostopic pub 发布消息到话题的指令 
-1 只发送一次
-r 表示重复发送命令
/turtle1/cmd_vel 发送给哪个话题
geometry_msgs/Twist 发送消息类型
-- 表示后面出现的 ' - '  不表示命令
'[2,0,0]' '[0,0,1.8]' 发送消息内容,格式可以查询http://wiki.ros.org/ROS/YAMLCommandLine

发送一次命令:

rostopic pub - /turtle1/cmd_vel geometry_msgs/Twist -- '[2,0,0]' '[0,0,1.8]'

重复发送命令

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

2、rostopic hz

(1)作用:

  查询消息发布的频率

(2)语法:

rostopic hz [topic]

(3)demo:

rostopic hz /turtle1/pose

(4)我们也可以结合rostopic typerosmsg show命令来获取关于某个话题的更深层次的信息

rostopic type /turtle1/cmd_vel | rosmsg show

5、rqt_plot

(1)作用:

   rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形

(2)用法:

rosrun rqt_plot rqt_plot

  然后可以跳出的小程序中加入话题数据即可。

ROS学习(七)—— 理解ROS Topic的更多相关文章

  1. ROS学习笔记七:在ROS中使用USB摄像头

    下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...

  2. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  3. ROS知识(2)----理解ROS系统结构

    学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架 ...

  4. 理解ros话题--6

    理解ROS话题(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) Description: 本教程介绍ROS话题(topics)以及如何使用ro ...

  5. 关于ROS学习的一些反思

    距离发布上一篇ROS的博客已经过去两年了,才发现原来自己已经这么久可没有写过关于ROS的文章,想来很是惭愧.这两年时间,自己怀着程序员的梦想,研究过RTOS,探索过Linux,编写过Android应用 ...

  6. SLAM+语音机器人DIY系列:(二)ROS入门——7.理解tf的原理

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  7. ROS学习笔记(一) : 入门之基本概念

    目录 基本概念 1. Package 2. Repositories 3. Computation Graph 4. Node 5. Master 6. Message 7. Topic 8. Ser ...

  8. ROS学习手记 - 8 编写ROS的Publisher and Subscriber

    上一节我们完成了 message & srv 文件的创建和加入编译,这次我们要玩简单的Publisher 和 Subscriber 要玩 Publisher 和 Subscriber, 需要具 ...

  9. ROS学习手记 - 7 创建ROS msg & srv

    至此,我们初步学习了ROS的基本工具,接下来一步步理解ROS的各个工作部件的创建和工作原理. 本文的详细文档:http://wenku.baidu.com/view/623f41b3376baf1ff ...

  10. 2017年7月ROS学习资料小结

    <孙子兵法·谋攻篇>:"上兵伐谋,其次伐交,其次伐兵,其下攻城:攻城之法为不得已." 任何发生在自己国土上的战争,即便胜利,也饱含屈辱. ----~~~~----Gaz ...

随机推荐

  1. Centos下配置单元测试工具gtest

    gtest是google提供的一个非常强大的单元测试工具,下载地址:https://code.google.com/p/googletest 我下载的是gtest-1.6.0.拷贝到Centos系统上 ...

  2. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十六)Structured Streaming中ForeachSink的用法

    Structured Streaming默认支持的sink类型有File sink,Foreach sink,Console sink,Memory sink. ForeachWriter实现: 以写 ...

  3. Chrome DevTools — Network

    Chrome DevTools — Network https://segmentfault.com/a/1190000008407729 chrome DevTools的各种使用: 在dev too ...

  4. Python 编码风格指南

    原文:http://python.jobbole.com/84618/ 本文超出 PEP8 的范畴以涵盖我认为优秀的 Python 风格.本文虽然坚持己见,却不偏执.不仅仅涉及语法.模块布局等问题,同 ...

  5. esUtil.h中的m变量报错

    引用了OpenGL ES自带的esUtil.h, 编译的时候报错:     typedef struct     {         GLfloat m[4][4];     } ESMatrix; ...

  6. 【Python】使用torrentParser1.03对多文件torrent的分析结果

    Your environment has been set up for using Node.js 8.5.0 (x64) and npm. C:\Users\horn1>cd C:\User ...

  7. 关于ThinkPHP的一些编程技巧

    在TP学习过程中难免会遇到一些大大小小的问题,把这些问题积累下来就可以在以后遇到时能很快速的解决,提高编程效率. 1.让Runtime下的文件格式化:入口文件处:define(‘STRIP_RUNTI ...

  8. background-size中contain和cover中的数学公式

    background-size的contain和cover是怎么用的,大家应该都明白.但是里面也有一些有趣的数学关系. 基本概念 上面就是我们对于 rimage (图片宽高比).rviewport ( ...

  9. Windows 服务安装教程

    一.安装服务1.已管理员的身份启动CMD2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车3.输入 InstallUtil.exe Win ...

  10. .net部署时常见问题

    站点提示“不允许的父路径”怎么办 error: 40 - Could not open a connection to SQL Server解决办法 无法识别的属性“targetFramework”. ...