首先需要打开一个终端在里面运行roscore:

roscore

再打开一个终端,在里面运行一个turtlesim_node节点:

rosrun turtlesim turtlesim_node

打开另一个终端,在里面输入:

rosrun turtlesim turtle_teleop_key

在运行完这条命令后,在这个终端下,按键盘上的方向键可以看到,之前我们运行的乌龟开始移动,:-),很有意思吧。

turtlesim_node和turtle_teleop_key通过ROS的话题来相互通信。turtle_teleop_key把用户按下的键发布到话题上,turtlesim_node也订阅了同一个话题用来接收用户按下的键,并做出相应的动作。我们有这个例子可以体会到话题的作用,更加深刻的认识到了节点的概念。

rqt_graph创建了一个当前系统中运行的节点的动态图。如果你没有安装rqt的话,请首先安装:

sudo apt-get install ros-hydro-rqt
sudo apt-get install ros-hydro-rqt-common-plugins

首先按照ROS学习(六)博客中讲到的例子运行一下,即通过按键来控制乌龟的移动。我们在终端中输入命令:

rosrun rqt_graph rqt_graph

就可以看到一个表示节点之间的关系的图。将鼠标放在图片上面可以看到图片会变为高亮。可以看到两个节点是通过 /turtle1/command_velocity话题来进行通信的。

使用rostopic echo命令可以查看在一个话题上发布的数据。它的使用方法如下:

rostopic echo [topic]

例如,我们可以输入:

rostopic echo /turtle1/cmd_vel 

之后我们在运行turtle_teleop_key节点的窗口下按方向键,就可以在刚才的窗口看到输出的数据如下:

linear: x: 2.0y: 0.0z: 0.0
angular: x: 0.0y: 0.0z: 0.0
---
linear: x: 2.0y: 0.0z: 0.0
angular: x: 0.0y: 0.0z: 0.0
---

现在我们重新运行:

rosrun rqt_graph rqt_graph

就可以看到话题刚才只有一个订阅者 现在又多了一个订阅者。

使用rostopic list可以列举出当前系统中的话题:

rostopic list

使用

rostopic list -v

可以查看每一个话题的发布者和订阅者的个数。

话题上的通信通过节点之间发送消息来完成。对于发布者(turtle_teleop_key)和接收者(turtlesim_node)的通信,发布者和接收者必须使用类型相同的消息。也就是说,一个话题的类型是通过在它上面发布的消息的类型来定义的。可以通过:

rostopic type /turtle1/cmd_vel

来查看/turtle1/cmd_vel的消息类型。你得到的返回类型如下:

geometry_msgs/Twist

我们可以使用rosmsg来查看一个消息类型的详细信息:

rosmsg show geometry_msgs/Twist

得到的结果如下:

geometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 z
geometry_msgs/Vector3 angularfloat64 xfloat64 yfloat64 z

现在我们已经知道了turtlesim接收的消息类型,现在我们可以给它发布消息了。rostopic pub命令用来发布消息,它的使用方法如下:

rostopic pub [topic] [msg_type] [args]

实例如下:

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

我们可以看到,乌龟运动了一个弧度。这是一个非常复杂的命令,我们详细分析一下:

rostopic pub

这个命令发布话题,

-1 

这个参数的意思是只发布一个命令,然后退出。

/turtle1/cmd_vel

这是要发布消息的话题,

--
2.0 1.8 

这两个参数我们可以先不用深究。我们可以使用 rostopic pub -r命令让乌龟持续运动,如:

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

我们可以看到,乌龟围绕着一个圈在不停的运动。

通过上面丰富的实例,相信大家会对ROS的话题概念会有一个清楚的认识。

ROS的学习(七)ROS的话题相关推荐

  1. 12.ROS编程学习:ROS常用指令

    目录 rosnode 1.rosnode list--list active nodes 2.rosnode ping--test connectivity to node 3.rosnode inf ...

  2. 【ROS入门学习01| ROS命令行工具的使用】

    ROS命令行工具的使用 -----------------可以配合古月居的ROS入门教程来学习实践. 文章目录 ROS命令行工具的使用 一.roscore 二.rosrun 三.rqt_graph 四 ...

  3. 13.ROS编程学习:话题发布控制乌龟

    目录 准备工作 c++控制乌龟运动 python控制乌龟运动 参考学习资料:赵虚左的课程+古月的ROS机器人开发实践P56的例程. 准备工作 打开ROS乌龟仿真器 roscore rosrun tur ...

  4. ROS学习(一)——话题通信的C++与Python实现

    ROS学习(一)--话题通信的C++与Python实现 引言:本文分为三个部分,分别为话题通信的理论模型以及其C++与Python的实现代码. 一.理论模型 在我们的实际使用中,需要注意的几个东西就是 ...

  5. ROS wiki系列|通过ROS wiki-tutorials学习话题

    上一期指路:ROS wiki系列|通过ROS wiki-tutorials学习节点 这一期我们就用ROS wiki中的tutorials来学习ROS中另外一个重要的概念:topic--话题 在前面讲解 ...

  6. ros入门--中科院软件所ros学习笔记

    视频链接: 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 另外有一个不错的 学习网址: ...

  7. ros melodic学习之plugin

    ros melodic学习之plugin 开发环境说明及项目创建 plugin具体步骤 创建功能包 创建基类 创建plugin类 注册插件 编译插件的动态链接库 将插件加入ros 创建pluginli ...

  8. ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)

    ROS中的基本对象和概念学习笔记(ROS入门学习笔记一) ROS中创建工作区和包(ROS入门学习笔记二) ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三) 1.roslaunc ...

  9. ROS学习----依据ROS入门教程,整理的ROS命令

    文章目录 ROS命令学习 文件系统介绍 ROS文件系统工具命令:rospack,rosstack roscd,rosls 创建ROS程序包命令:roscreate,catkin程序包结构,catkin ...

  10. ROS进阶学习的过程

    文章目录 使用技巧 环境的安装与配置 初探与摸索 针对于开发.应用中 ROS功能包的使用 使用技巧 使用catkin_make 编译workspace下的指定package catkin_make - ...

最新文章

  1. awk3.0 — awk变量
  2. 大学计算机信息技术一级考题,大学计算机信息技术一级试题新.pdf
  3. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
  4. Spring Bean 装配和依赖注入
  5. mysql不能写重复键_错误1022-无法写入;表中的重复键
  6. 详解操作系统中虚拟内存与物理内存的关系
  7. php石头剪刀布五局三胜,求程序,下面是剪刀石头布的程序,谁能帮忙改成能选择三局两胜,五局三胜……的?能成功运行的加分...
  8. 退休后工资1700多元的人多吗?
  9. java runtime environment 55_jre7下载|Java Runtime Environment(Java运行环境JRE)JRE7 官方版_ - 极光下载站...
  10. Android TableLayout 表格布局
  11. LINUX下使用scp命令与其他机器远程交换文件
  12. [APIO2009]抢掠计划 ($Tarjan$,最长路)
  13. 20200802每日一句(0729--0802)
  14. CMMI3-CMMI5认证费用及认证周期
  15. 盘点目前初学者适合用的C语言编程工具!C语言初学者必看!
  16. sd卡插入计算机要格式化,内存卡一直提示格式化,内存卡插电脑要格式化-
  17. 网络扫描工具ncnmap
  18. 使用chat-gpt 最新最快方法
  19. ps保存psd后图层全没了_PS画图后保存PSD格式,然后就打不开了
  20. excel表格转vcf图文教程详解

热门文章

  1. [转载] python hex转字符串_Python hexstring-list-str之间的转换方法
  2. [转载] C++学习之异常处理详解
  3. fedora30删除 gnome自带的Videos软件
  4. H3C 单路径网络中环路产生过程(3)
  5. ISP图像调试工程师——3D和2D降噪(熟悉图像预处理和后处理技术)
  6. 杭电2391--Filthy Rich(DP)
  7. CSS从零开始(1)--CSS基础语法
  8. Ubuntu下安装opencv3.2.0,解决anaconda下的Python和安装opencv3.2.0冲突的问题
  9. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. 2021年淮南高考成绩查询,2021年淮南高考最高分多少分,历年淮南高考状元