ROS的学习(七)ROS的话题
首先需要打开一个终端在里面运行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的话题相关推荐
- 12.ROS编程学习:ROS常用指令
目录 rosnode 1.rosnode list--list active nodes 2.rosnode ping--test connectivity to node 3.rosnode inf ...
- 【ROS入门学习01| ROS命令行工具的使用】
ROS命令行工具的使用 -----------------可以配合古月居的ROS入门教程来学习实践. 文章目录 ROS命令行工具的使用 一.roscore 二.rosrun 三.rqt_graph 四 ...
- 13.ROS编程学习:话题发布控制乌龟
目录 准备工作 c++控制乌龟运动 python控制乌龟运动 参考学习资料:赵虚左的课程+古月的ROS机器人开发实践P56的例程. 准备工作 打开ROS乌龟仿真器 roscore rosrun tur ...
- ROS学习(一)——话题通信的C++与Python实现
ROS学习(一)--话题通信的C++与Python实现 引言:本文分为三个部分,分别为话题通信的理论模型以及其C++与Python的实现代码. 一.理论模型 在我们的实际使用中,需要注意的几个东西就是 ...
- ROS wiki系列|通过ROS wiki-tutorials学习话题
上一期指路:ROS wiki系列|通过ROS wiki-tutorials学习节点 这一期我们就用ROS wiki中的tutorials来学习ROS中另外一个重要的概念:topic--话题 在前面讲解 ...
- ros入门--中科院软件所ros学习笔记
视频链接: 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 中科院软件所-机器人操作系统入门(ROS入门教程)_哔哩哔哩_bilibili 另外有一个不错的 学习网址: ...
- ros melodic学习之plugin
ros melodic学习之plugin 开发环境说明及项目创建 plugin具体步骤 创建功能包 创建基类 创建plugin类 注册插件 编译插件的动态链接库 将插件加入ros 创建pluginli ...
- ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)
ROS中的基本对象和概念学习笔记(ROS入门学习笔记一) ROS中创建工作区和包(ROS入门学习笔记二) ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三) 1.roslaunc ...
- ROS学习----依据ROS入门教程,整理的ROS命令
文章目录 ROS命令学习 文件系统介绍 ROS文件系统工具命令:rospack,rosstack roscd,rosls 创建ROS程序包命令:roscreate,catkin程序包结构,catkin ...
- ROS进阶学习的过程
文章目录 使用技巧 环境的安装与配置 初探与摸索 针对于开发.应用中 ROS功能包的使用 使用技巧 使用catkin_make 编译workspace下的指定package catkin_make - ...
最新文章
- awk3.0 — awk变量
- 大学计算机信息技术一级考题,大学计算机信息技术一级试题新.pdf
- SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
- Spring Bean 装配和依赖注入
- mysql不能写重复键_错误1022-无法写入;表中的重复键
- 详解操作系统中虚拟内存与物理内存的关系
- php石头剪刀布五局三胜,求程序,下面是剪刀石头布的程序,谁能帮忙改成能选择三局两胜,五局三胜……的?能成功运行的加分...
- 退休后工资1700多元的人多吗?
- java runtime environment 55_jre7下载|Java Runtime Environment(Java运行环境JRE)JRE7 官方版_ - 极光下载站...
- Android TableLayout 表格布局
- LINUX下使用scp命令与其他机器远程交换文件
- [APIO2009]抢掠计划 ($Tarjan$,最长路)
- 20200802每日一句(0729--0802)
- CMMI3-CMMI5认证费用及认证周期
- 盘点目前初学者适合用的C语言编程工具!C语言初学者必看!
- sd卡插入计算机要格式化,内存卡一直提示格式化,内存卡插电脑要格式化-
- 网络扫描工具ncnmap
- 使用chat-gpt 最新最快方法
- ps保存psd后图层全没了_PS画图后保存PSD格式,然后就打不开了
- excel表格转vcf图文教程详解
热门文章
- [转载] python hex转字符串_Python hexstring-list-str之间的转换方法
- [转载] C++学习之异常处理详解
- fedora30删除 gnome自带的Videos软件
- H3C 单路径网络中环路产生过程(3)
- ISP图像调试工程师——3D和2D降噪(熟悉图像预处理和后处理技术)
- 杭电2391--Filthy Rich(DP)
- CSS从零开始(1)--CSS基础语法
- Ubuntu下安装opencv3.2.0,解决anaconda下的Python和安装opencv3.2.0冲突的问题
- 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
- 2021年淮南高考成绩查询,2021年淮南高考最高分多少分,历年淮南高考状元