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话题---节点之间通信的方式的更多相关文章

  1. 前端面试 vue 部分 (5)——VUE组件之间通信的方式有哪些

    VUE组件之间通信的方式有哪些(SSS) 常见使用场景可以分为三类: 父子通信: null 父向子传递数据是通过 props ,子向父是通过 $emit / $on $emit / $bus Vuex ...

  2. React中组件之间通信的方式

    一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同 ...

  3. Vue.js 父子组件之间通信的方式

    Vue 父子组件之间的同学有一下几种方式: 1. props 2. $emit -- 组件封装用的比较多 3. .sync -- 语法糖 4. $attrs 和 $listeners -- 组件封装用 ...

  4. ngularJs项目实战!05: 不同controller作用域之间通信的方式

    最近在做d3js + angularjs项目中,经常遇到d3组件与angularjs模块间通信的问题,以及angularjs多个作用域之间互相通信的问题.关于angularjs的作用域概念及其继承模式 ...

  5. hadoop节点之间通信问题

    前天遇到一个hadoop问题,由于之前都是伪分布的情况,没有真正的涉及到集群的环境,最近按照一些资料自己搭建了一个集群环境,三台虚拟机,一个master,两个slave,利用jps查看节点信息,启动了 ...

  6. ROS Learning-008 beginner_Tutorials ROS话题

    ROS Indigo beginner_Tutorials-07 ROS话题 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LT ...

  7. 理解ros话题--6

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

  8. ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)

    ROS Indigo beginner_Tutorials-10 编写 ROS 话题版的 Hello World 程序(Python版) 我使用的虚拟机软件:VMware Workstation 11 ...

  9. Elasticsearch-2.4.3的3节点安装(多种方式图文详解)(含 head、kopf、marvel、shield和watcher插件安装和使用)

    前提: Elasticsearch-2.4.3的下载(图文详解) Elasticsearch-2.4.3的单节点安装(多种方式图文详解) 我这里,以192.168.80.10(HadoopMaster ...

随机推荐

  1. 4.ClassLink - 一种新型的VPC 经典网络的连接方式

    阿里云CLassLink文档地址:https://help.aliyun.com/document_detail/65412.html?spm=a2c4g.11186623.2.9.41a25a07F ...

  2. Linux下查看与修改mtu值

    MTU:通信术语 最大传输单元(Maximum Transmission Unit)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位). 我们在使用互联网时进行的各种网络操作,都是通 ...

  3. mysql 回顾

    主键可以是一个或者是多个列,但所有的列(或者是列的组合)必须是唯一的,非空的 关键字distinct 可以去重,实现该效果还可以使用group by limit 默认从 0 开始,limit 5 其实 ...

  4. git 恢复到旧版本命令

    1.第一步:找到你想恢复到的版本号:可以在git提交日志中查看-> 找到版本号,复制下来,在git项目根目录下打开git命令窗口: 输入:git reset --hard xxxxxxxxxxx ...

  5. .Net中使用ODP.net访问Oracle数据库

    ODP.Net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. .net framework4中会将 ...

  6. C# Excel导数据

    遇到的几个坑,记录一下. 隐藏表,隐藏行,隐藏列, 单元格合并 => 拆分并填充内容, 显示隐藏列,结果那个列 还是不显示出来,拖动旁边的列也不显示. 结果在旁边的列上,按左右箭头键就出来了,也 ...

  7. java.security.MessageDigest (2) 生成安全令牌!

    时候,我们需要产生一个数据,这个数据保存了用户的信息,但加密后仍然有可能被人使用,即便他人不确切的了解详细信息... 好比,我们在上网的时候,很多网页都会有一个信息,是否保存登录信息,以便下次可以直接 ...

  8. idea 修改 使用的git账号

    打开控制面板-->用户账户-->凭证管理器 如下图点击进入,删除原有的账号 当在idea中再提交或下载代码时,就会弹出如下提示框: 重新输入你自己的账号就可以了.

  9. SVN 不显示状态图标--解决方法

    [SVN 不显示状态图标--解决方法] 在名字前面加空格, 三个六个空格随意: 参考:https://www.cnblogs.com/lzpong/p/6187366.html

  10. yum被锁定:Another app is currently holding the yum lock; waiting for it to exit…

    yum被锁定无法使用,错误信息截图如下: 解决方法:rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了