(六)ROS话题---节点之间通信的方式
1. 理解 ROS 话题:
(Ctrl+Alt+T 打开一个新终端)
运行下面的命令:
$ roscore
(Ctrl+Alt+T 打开一个新终端)
$ rosrun turtlesim turtlesim_node
(Ctrl+Alt+T 打开一个新终端)
$ rosrun turtlesim turtle_teleop_key
我现在可以控制小海龟:(要在 turtle_teleop_key 所在的终端窗口,按键盘的 方向键 来控制小海龟运动。)
使用 rosnode list 命令来看看这个例子里,都运行了哪些节点:
输出:
/rosout
/teleop_turtle
/turtlesim
解释:
/teleop_turle 节点向 ROS 网络总线上发布话题;
/turtlesim 节点接收了 /teleop_turle 发布的这个话题。 那么这个话题具体是什么,我们怎样可以知道呢?
上面打开的终端窗口不要关闭,我们继续进行下面的教程。
2. 使用图形化工具可视化话题的发布接收
我们可以使用 ROS 网络图形化工具来 直观 的感受这个话题的发布接收:
如果没有安装 rqt ,先安装。执行下面的命令进行安装:
$ sudo apt-get install ros-indigo-rqt
$ sudo apt-get install ros-indigo-rqt-common-plugins
现在重新打开一个终端, 运行下面的命令:
$ rosrun rqt_graph rqt_graph
# 或者,你也可以直接使用下面的命令。这两个命令是等价的。
$ rqt_graph
都能得到下面的GUI界面---可直观的看到了一个节点间通信的可视图。
3. rostopic 命令的使用:
rostopic 命令的帮助,里面罗列了 rostopic 命令的所有的参数:
rostopic --help
输出:
rostopic is a command-line tool for printing information about ROS Topics. Commands:
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic type
Type rostopic <command> -h for more detailed usage, e.g. 'rostopic echo -h'
3.1 list : (列出所有话题(包括发布的和订阅的))
(新开个终端)
$ rostopic list //能够列出所有当前正在订阅和发布的话题
$ rostopic list -v //-v 可以得到当前正在订阅和发布的话题的详细内容介绍
输出:
3.2 echo : (监听话题)
$ rostopic echo /turtle1/cmd_vel //这个命令的作用就是来打印指定话题内的通信内容的
运行效果: 当你在 turtle_teleop_key 所在终端上控制 方向键(发布 /turtle1/cmd_vel 话题), /turtle1/cmd_vel 话题内的数据就会打印出来:
这个时候,你在刷新一下 rqt_gragp 软件窗口 就可以看到,现在有2个节点订阅了 /turtle1/cmd_vel 话题:

http://www.cnblogs.com/aobosir/p/5928588.html
总结:
我们这一讲介绍了ROS节点之间,如何使用话题进行通信。其实节点之间的通信方式不只话题这一种方式。
节点之间通信的方式 : 话题(rostopic) 和 服务(rosservice)。
所以,我们下一讲来讲 节点之间如何使用服务(rosservice) 来进行通信。
(六)ROS话题---节点之间通信的方式的更多相关文章
- 前端面试 vue 部分 (5)——VUE组件之间通信的方式有哪些
VUE组件之间通信的方式有哪些(SSS) 常见使用场景可以分为三类: 父子通信: null 父向子传递数据是通过 props ,子向父是通过 $emit / $on $emit / $bus Vuex ...
- React中组件之间通信的方式
一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同 ...
- Vue.js 父子组件之间通信的方式
Vue 父子组件之间的同学有一下几种方式: 1. props 2. $emit -- 组件封装用的比较多 3. .sync -- 语法糖 4. $attrs 和 $listeners -- 组件封装用 ...
- ngularJs项目实战!05: 不同controller作用域之间通信的方式
最近在做d3js + angularjs项目中,经常遇到d3组件与angularjs模块间通信的问题,以及angularjs多个作用域之间互相通信的问题.关于angularjs的作用域概念及其继承模式 ...
- hadoop节点之间通信问题
前天遇到一个hadoop问题,由于之前都是伪分布的情况,没有真正的涉及到集群的环境,最近按照一些资料自己搭建了一个集群环境,三台虚拟机,一个master,两个slave,利用jps查看节点信息,启动了 ...
- ROS Learning-008 beginner_Tutorials ROS话题
ROS Indigo beginner_Tutorials-07 ROS话题 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LT ...
- 理解ros话题--6
理解ROS话题(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) Description: 本教程介绍ROS话题(topics)以及如何使用ro ...
- ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)
ROS Indigo beginner_Tutorials-10 编写 ROS 话题版的 Hello World 程序(Python版) 我使用的虚拟机软件:VMware Workstation 11 ...
- Elasticsearch-2.4.3的3节点安装(多种方式图文详解)(含 head、kopf、marvel、shield和watcher插件安装和使用)
前提: Elasticsearch-2.4.3的下载(图文详解) Elasticsearch-2.4.3的单节点安装(多种方式图文详解) 我这里,以192.168.80.10(HadoopMaster ...
随机推荐
- mysql 忘记密码解决方案
Mysql 忘记root密码的完美解决方法 转载 2016-12-23 作者:MR.QiGao 我要评论 通常在使用Mysql数据库时,如果长时间没有登陆,或者由于工作交接完成度不高,会导 ...
- 找某個ColumnName在那些Tables
想找ColumnName叫CRE_USR的欄位在那些Table呢? (For SQL Server) SELECT o.name, o.* FROM syscolumns c INNER JOIN s ...
- [PHP]PHP定时任务的实现
---------------------------------------------------------------------------------------------------- ...
- [Shell]Shell脚本的执行方式
---------------------------------------------------------------------------------------------------- ...
- 6.面向对象 -类.md
目录 1. static: 2. 类在内存中,每一个类在创建在栈内存中,当创建一个对象的时候,将非类变量再堆内存中创建,而类变量是不会因为创建对象而在堆中重新创建 3. 对象.引用和指针: 4. 类名 ...
- Structs复习 开始 第一个helloworld项目
大体已经学完ssh了 感觉一起做一个项目有点难 计划先用一下独立的Structs 然后再把数据库操作换成hibernate 然后在用Spring 整合 计划用10天左右吧 但今天开始用Struct ...
- 新建gradle文件
按照新建自动步骤,建好文件后,在build-gradle 里面 写上: allprojects { group 'aaaa' version '1.0-SNAPSHOT' apply plugin: ...
- spark pyspark 常用算法实现
利用Spark-mllab进行聚类,分类,回归分析的代码实现(python) http://www.cnblogs.com/adienhsuan/p/5654481.html 稀疏向量: 关于Spar ...
- python os模块的使用(转)
os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os ...
- python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)
一.类 先看一段代码: class Person: animal = '高级动物' walk_way = '直立行走' # 静态属性,静态变量,静态字段 language = '语言' def __i ...