ROS2 基础概念 话题
ROS2 基础概念 话题
- 1. Topics
- 2. rqt_graph
- 3. 话题
- 4. 话题类型
- 5. 话题发布
- 6. 话题频率
1. Topics
话题是节点交换消息的总线
节点可以向任意数量的话题发布数据,并同时订阅任意数量的话题
指令 | 功能 |
---|---|
ros2 topic bw /topic | 显示话题所使用的带宽 |
ros2 topic hz /topic | 显示话题的发布频率 |
ros2 topic pub /topic type args | 将数据发布到话题中 |
ros2 topic delay /topic | 显示话题的延时 |
ros2 topic type /topic | 显示话题的消息类型 |
ros2 topic echo /topic | 显示话题对应的消息内容 |
ros2 topic info /topic | 显示当前话题的通信信息 |
ros2 topic find message_type | 按照类型查找话题 |
ros2 topic list | 列出当前活动的话题 |
2. rqt_graph
将使用rqt_graph
来可视化不断变化的节点和话题,以及它们之间的连接
/teolep_turtle
节点正在向/turtle1/cmd_vel
话题发布数据
/my_turtle
和 /turtlesim
节点订阅该话题以接收数据
为了后续描述的简便,/my_turtle
节点到此就退出了
3. 话题
在新终端中运行ros2 topic list
命令将返回系统中当前活动的所有话题的列表:
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
ros2 topic list-t
返回的话题列表将话题类型附加在括号中:
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/turtle1/cmd_vel [geometry_msgs/msg/Twist]
/turtle1/color_sensor [turtlesim/msg/Color]
/turtle1/pose [turtlesim/msg/Pose]
由于知道/teolep_turtle
通过/turtle1/cmd_vel
话题向/turtlesim
发布数据
因此使用echo
来查看该话题:
$ ros2 topic echo /turtle1/cmd_vel
一开始没查询到话题,这是因为节点turtle_teleop_key
没有发布该话题的数据
只要切换节点turtle_teleop_key
的终端,使用键盘控制,乌龟会执行控制指令
也可以看到我们发布的话题数据
4. 话题类型
发布者和订阅者必须发送和接收相同类型的消息才能进行通信
cmd_vel
话题的类型为 geometry_msgs/msg/Twist
那么可以查看该话题类型
ros2 interface show geometry_msgs/msg/Twist# This expresses velocity in free space broken into its linear and angular parts.
# 这表示自由空间中的速度,分为线性部分和角度部分。Vector3 linearfloat64 xfloat64 yfloat64 zVector3 angularfloat64 xfloat64 yfloat64 z
5. 话题发布
现在已经有了消息结构,可以使用以下命令行直接将数据发布到话题上:
ros2 topic pub <话题名称> <消息类型> '<数据>'
例如:
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
–once是可选参数,表示“发布一条消息然后退出”
如果要持续发布的话,需要删除--once
选项,添加了--rate 1
选项
话题将以1Hz的频率流发布话题数据
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
海龟就一直转圈圈
6. 话题频率
上面提及到我们以1Hz的频率流发布话题/turtle1/cmd_vel
数据geometry_msgs/msg/Twist
那么可以通过查看 ros2 topic hz
如查看海龟姿态话题的频率:
ros2 topic hz /turtle1/pose
这里可以看到是60Hz左右,所以这个1s过程姿态的更新依靠的是最开始的运动指令
谢谢
ROS2 基础概念 话题相关推荐
- ROS2 基础概念 节点
ROS2 基础概念 节点 1. Nodes 2. 重映射 3. 环境设置 3.1. ROS_DOMAIN_ID 3.2. ROS_LOCALHOST_ONLY 1. Nodes 每个节点应负责单个模块 ...
- ROS2 基础概念 服务
ROS2 基础概念 服务 1. Services 2. 服务 3. 服务类型 4. 查找服务 5. 服务请求 1. Services 服务基于 请求-应答 模型,而不是话题的 发布-订阅 模型 虽然话 ...
- ROS2 基础概念 参数
ROS2 基础概念 参数 1. Parameters 2. 参数 3. 参数查看 4. 参数设置 5. 参数保存 6. 参数加载 1. Parameters 指令 功能 ros2 param dele ...
- UC伯克利教授Stuart Russell人工智能基础概念与34个误区
来源:数据简化DataSimp 数据简化DataSimp导读:UC伯克利教授StuartRussell人工智能基础概念与34个误区,Russell是加州大学伯克利分校人工智能系统中心创始人兼计算机科学 ...
- 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)
一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...
- UC伯克利教授Stuart Russell人工智能基础概念与34个误区 (公号回复“AI基础概念”可下载PDF资料)
UC伯克利教授Stuart Russell人工智能基础概念与34个误区 (公号回复"AI基础概念"可下载PDF资料) 秦陇纪 数据简化DataSimp 今天 数据简化DataSim ...
- Reinforcement Learning 的核心基础概念及实现
Reinforcement Learning 的核心基础概念及实现 Machine Learning | 5 | 5732 2013 年伦敦的一家小公司 DeepMind 发表了一篇论文 ...
- ROS wiki系列|ROS入门基础概念讲解
上一期我们对ROS wiki中ROS部分进行了着重讲解,回顾戳这 这一期我们主要介绍ROS-getting started部分的一些基本概念 相关wiki页面:http://wiki.ros.org/ ...
- 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
二次开发接口(API)与插件(Addin) 许式伟 (版权声明) 2007-4-20 在前文,我们已经解释了: 自动化(Automation)基础概念:COM组件(Component)与接口(Inte ...
最新文章
- 操纵BGP AS-PATH 属性案例(配图+详细验证过程)
- 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎
- 白鹭引擎 - 显示对象的基准点与横纵坐标 ( 绘制一个来回移动的绿色方块 )
- 带有postgres和jupyter笔记本的Titanic数据集
- SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
- 解释一下全连接层CNN中全连接层是什么样的
- SQL Server2008 用编写脚本自动生成的Sql语言出现 “列名显示无效 ”错误
- PostgreSQL的安装和启动方法大全
- 完了!Python开挂! 90%的程序员:痛快!你怎么看? ​
- 计算机本地网络给手机使用吗,电脑共享网络给手机用的方法步骤
- Cross the Wall UVALive - 5097 (贪心+斜率dp)
- UI兼容性测试——一机多控之百度Hydra工具在移动端UI兼容性测试上的高效应用
- kvm切换器linux换屏方法,kvm切换器连接图及安装方法
- 微信公众号排查“该公众号提供的服务出现故障,请稍后再试”问题
- 中国传统文化-雨课堂期末2022
- 连接git仓库失败解决办法
- 51单片机定时器的原理与使用
- 带你入门多目标跟踪(四)外观模型 Appearance Model
- 郭炜-C语言程序设计-程序设计与算法(一)-第五周
- redis key导出及删除
热门文章
- 5 python数据分析基础——批量进行数据分析(一)
- 在开发环境使用 TiUP安装TiDB集群
- 科技论文的分类及写作
- S5PV210开发 -- TTL和CMOS电平
- 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?
- 如何运用Knald烘焙纹理来快速呈现材质纹理细节!
- 什么是循环依赖?Spring如何解决循环依赖?
- HDU-4544-湫湫系列故事——消灭兔子--贪心+优先队列
- Application was not properly initialized at startup, could not find Factory:
- PCIe系列专题之二:2.3 TLP结构解析