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 基础概念 话题相关推荐

  1. ROS2 基础概念 节点

    ROS2 基础概念 节点 1. Nodes 2. 重映射 3. 环境设置 3.1. ROS_DOMAIN_ID 3.2. ROS_LOCALHOST_ONLY 1. Nodes 每个节点应负责单个模块 ...

  2. ROS2 基础概念 服务

    ROS2 基础概念 服务 1. Services 2. 服务 3. 服务类型 4. 查找服务 5. 服务请求 1. Services 服务基于 请求-应答 模型,而不是话题的 发布-订阅 模型 虽然话 ...

  3. ROS2 基础概念 参数

    ROS2 基础概念 参数 1. Parameters 2. 参数 3. 参数查看 4. 参数设置 5. 参数保存 6. 参数加载 1. Parameters 指令 功能 ros2 param dele ...

  4. UC伯克利教授Stuart Russell人工智能基础概念与34个误区

    来源:数据简化DataSimp 数据简化DataSimp导读:UC伯克利教授StuartRussell人工智能基础概念与34个误区,Russell是加州大学伯克利分校人工智能系统中心创始人兼计算机科学 ...

  5. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

  6. UC伯克利教授Stuart Russell人工智能基础概念与34个误区 (公号回复“AI基础概念”可下载PDF资料)

    UC伯克利教授Stuart Russell人工智能基础概念与34个误区 (公号回复"AI基础概念"可下载PDF资料) 秦陇纪 数据简化DataSimp 今天 数据简化DataSim ...

  7. Reinforcement Learning 的核心基础概念及实现

    Reinforcement Learning 的核心基础概念及实现  Machine Learning  |   5  |   5732 2013 年伦敦的一家小公司 DeepMind 发表了一篇论文 ...

  8. ROS wiki系列|ROS入门基础概念讲解

    上一期我们对ROS wiki中ROS部分进行了着重讲解,回顾戳这 这一期我们主要介绍ROS-getting started部分的一些基本概念 相关wiki页面:http://wiki.ros.org/ ...

  9. 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)

    二次开发接口(API)与插件(Addin) 许式伟 (版权声明) 2007-4-20 在前文,我们已经解释了: 自动化(Automation)基础概念:COM组件(Component)与接口(Inte ...

最新文章

  1. 操纵BGP AS-PATH 属性案例(配图+详细验证过程)
  2. 【Open Search产品评测】- 来往,7天轻松定制属于自己的搜索引擎
  3. 白鹭引擎 - 显示对象的基准点与横纵坐标 ( 绘制一个来回移动的绿色方块 )
  4. 带有postgres和jupyter笔记本的Titanic数据集
  5. SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
  6. 解释一下全连接层CNN中全连接层是什么样的
  7. SQL Server2008 用编写脚本自动生成的Sql语言出现 “列名显示无效 ”错误
  8. PostgreSQL的安装和启动方法大全
  9. 完了!Python开挂! 90%的程序员:痛快!你怎么看? ​
  10. 计算机本地网络给手机使用吗,电脑共享网络给手机用的方法步骤
  11. Cross the Wall UVALive - 5097 (贪心+斜率dp)
  12. UI兼容性测试——一机多控之百度Hydra工具在移动端UI兼容性测试上的高效应用
  13. kvm切换器linux换屏方法,kvm切换器连接图及安装方法
  14. 微信公众号排查“该公众号提供的服务出现故障,请稍后再试”问题
  15. 中国传统文化-雨课堂期末2022
  16. 连接git仓库失败解决办法
  17. 51单片机定时器的原理与使用
  18. 带你入门多目标跟踪(四)外观模型 Appearance Model
  19. 郭炜-C语言程序设计-程序设计与算法(一)-第五周
  20. redis key导出及删除

热门文章

  1. 5 python数据分析基础——批量进行数据分析(一)
  2. 在开发环境使用 TiUP安装TiDB集群
  3. 科技论文的分类及写作
  4. S5PV210开发 -- TTL和CMOS电平
  5. 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?
  6. 如何运用Knald烘焙纹理来快速呈现材质纹理细节!
  7. 什么是循环依赖?Spring如何解决循环依赖?
  8. HDU-4544-湫湫系列故事——消灭兔子--贪心+优先队列
  9. Application was not properly initialized at startup, could not find Factory:
  10. PCIe系列专题之二:2.3 TLP结构解析