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. Cookie-base 认证实现(学习笔记)

    第一步 新建一个ASP.NET core 默认项目 新建 AdminController public class AdminController : Controller { [Authorize] ...

  2. gitlab docker安装配置ldap

    镜像下载 直接从dockerhub 下载官方镜像即可 docker pull gitlab/gitlab-ce 首次运行 在某个位置创建一个文件夹并运行如下命令: docker run --hostn ...

  3. Open Tools API :IDE Main Menus

    http://www.davidghoyle.co.uk/WordPress/?p=777 http://www.davidghoyle.co.uk/WordPress/?page_id=1110 h ...

  4. django使用restframework实现安全的api

    参考地址:https://github.com/tomchristie/django-rest-framework/ 一般如果在批量修改多的时候,不建议使用,一般在get请求,或者修改单条数据的时候使 ...

  5. 命令行下IIS的配置脚本Adsutil.vbs

    命令行下IIS的配置脚本Adsutil.vbs 2009-08-20 12:26:52  www.hackbase.com  来源:Jackal's Blog Jackal's Blog文件存在于:C ...

  6. C# 保证数据长度相同

    /// <summary> /// 保证数据长度相同 /// </summary> /// <param name="obj"></par ...

  7. Kubernetes+Prometheus+Grafana部署笔记

    一.基础概念 1.1 基础概念 Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可 ...

  8. Numpy知识(一)

    先了解ndarray(一个多维数组)的生成. 第一种生成方法就是np.random.randn(n,m),这回生成一个形状是n*m的ndarray.如下图. 第二种生成方法:传入一个列表listDem ...

  9. 1.3.7、CDH 搭建Hadoop在安装之前(端口---第三方组件使用的端口)

    第三方组件使用的端口 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. Component ...

  10. java正则验证

    String regex ="[A-Z]{4}[0-9]{7}"; List<String> non= new ArrayList<String>(); f ...