第二部分 单机以及编队控制实验—初级教程(5)

2.6 重要的话题Topics

机器人有许多的功能,这些功能的实现是依靠着机器人各个模块之间的通信来完成。在ros中有两种通信方式,其中一种就是topic通信(异步通信),而另一种是service(同步通信)通信。本节只对rostopic做一些简单的讲解,详细的了解可以前往ros的wiki上的rostopic。如果您还想了解servicr,可以前往ros的wiki上的rosservice

我们先来了解一下异步通信和同步通信:

  1. 异步通信:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
  2. 同步通信:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

topic是一种节点对节点的单向通信方式,这里的节点指的是ros中的node,单向就是这个节点要么只负责这个话题消息的接受,要么负责这个话题消息的发送,不会同时存在消息接受和发送。在ros中,负责发送消息给话题的叫发布者(Publisher),负责将话题传来的消息接受到的叫订阅者(Subscriber)。

例如:

我们通过键盘控制机器人的移动,就需要键盘和机器人的驱动来进行通信。我们会开启机器人驱动节点和键盘控制节点,其中键盘就是就是发布者,机器人的驱动就是订阅者。

2.6.1 rostopic命令

ros有很多的命令行工具,rostopic就是其中的一个,通过对rostopic的学习,我们可以较直观的看到机器人各个节点是如何通过topic进行通信的。

我们可以通过终端来看看rostopic的用法,打开终端,输入下面指令

rostopic -h

会在终端显示一些关于rostopic的用法

 

翻译如下:

rostopic是一个命令行工具,用于打印有关ROS话题的信息。

命令:

​ rostopic bw 显示话题使用的带宽

​ rostopic delay 从标题中时间戳显示话题延迟

​ rostopic echo 将消息打印到屏幕

​ rostopic find 按类型查找话题

​ rostopic hz 显示话题发布率      

​ rostopic info 打印有关活动主题的信息

​ rostopic list 列出活动话题

​ rostopic pub 将数据发布到话题

​ rostopic type 打印话题或字段类型

键入rostopic -h以了解更详细的用法,例如“rostopic echo -h”。我们主要讲解rostopic list rostopic echorostopic pub

2.6.1.1 通过rostopic list列出活动话题

1)打开一个终端,开启机器人的驱动节点

 roslaunch handsfree_hw handsfree_hw.launch

2)打开一个新终端,将机器人驱动节点的活动话题列出来

 rostopic list

下图为列出来的活动话题

 

3)关掉这两个终端,(关掉机器人驱动节点的终端时,先Ctrl+C结束节点进程,再关掉该终端)

4)重新打开一个终端,开启键盘控制节点,输入下面这段话

 roslaunch handsfree_hw keyboard_teleop.launch

5)打开一个新终端,将键盘控制节点的活动话题列出来

 rostopic list

下图为列出来的活动话题

 

6)通过对比,我们可以看到机器人驱动节点和键盘节点的活动话题有 3 条是相同的,这就代表两个节点之间有通过这几个相同的topcis进行通讯。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值