ROS学习笔记五:理解ROS topics

2023-05-16

原文链接:https://blog.csdn.net/mountzf/article/details/52314364

本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具。

例子展示
roscore
首先运行roscore系列服务,这是使用ROS所必需的基础

roscore

turtlesim
这里还要用到turtlesim例子,先运行其节点:

rosrun turtlesim turtlesim_node

turtle键盘遥控操作
我们可以运行一个例程,然后通过键盘遥控操作turtle运行:

rosrun turtlesim_teleop_key

然后就可以通过方向键来驱动小海龟运行了。下面来探究一下屏幕背后发生了什么。

ROS topics
上面例程中节点turtlesim_node和节点turtle_teleop_key通过一个ROS topic来互相通信。turtle_teleop_key节点在topic上面发布关键进程,turtlesim_node节点则订阅相同的进程来接收这些关键进程。可以利用rqt_graph工具来显示正在运行的节点和主题之间的关系。

使用rqt_graph
rqt_graph工具是rqt软件包的一部分,可以创建系统中正在运行的节点、主题之间的一个动态关系图。运行命令:

rosrun rqt_graph rqt_graph

然后就可以看到类似如下的关系图,可以看出节点turtle_teleop_key和节点turtlesim_node之间在turtle1/cmd_vel主题上进行通信。

使用rostopic
rostopic工具允许我们获取ROS topics的相关信息。rostopic -h可以知道有如下命令:

Commands:
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic type

使用rostopic echo
rostopic echo显示发布在一个主题上的数据。

rostopic echo [topic]

在此可以利用此命令看一下由turtle_teleop_key发布的command_velocity数据。

rostopic echo /turtle1/cmd/vel

刚运行此命令,应该在屏幕上什么也不会出现,这是因为在这个主题上没有发布任何数据。通过按下方向键来使turtle_teleop_key节点在此topic上发布数据,此时在刚刚的窗口应该出现如下信息:

rostopic echo /turtle1/cmd_vel
linear:
x: -2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0

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

回过头来再看一下rqt_graph中的关系图,发现又多了一个订阅节点,就是用来显示topic数据的节点。

通过命令列出节点:

rosnode list
/rosout
/rostopic_3763_1472092089570
/rqt_gui_py_node_3827
/teleop_turtle
/turtlesim

使用rostopic list
rostopic list命令显示了当前被订阅和被发布的主题列表。

rostopic list
/rosout
/rosout_agg
/statistics
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

ROS Messages
通过在节点之间发送ROS Messages实现节点之间的通信,发布和订阅节点之间发送和接收的数据类型必须一致,这意味着一个主题的数据类型由发布在其上的信息类型所决定。发布在主题上的信息类型可以由rostopic type topic1来显示。

使用rostopic type
rostopic type返回正在使用的主题上的信息的类型。

rostopic type /turtle1/cmd_vel
geometry_msgs/Twist

利用命令rosmsg可以查看信息的详细信息

rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z

现在我们知道了turtlesim需要什么样的数据类型,所以我们可以发布命令给我们的小海龟。

rostopic continued
学习完ROS Messages之后,下面来学习一下rostopic和messages。

使用rostopic pub
rostopic pub直接发布数据到一个主题之上

rostopic pub [topic] [msg_type] [args]
1
对于小海龟的例子

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist – ‘[2.0,0.0,0.0]’ ‘[0.0,0.0,1.8]’
1
给定速度参数竟然只能用逗号隔开,呵呵
上面的命令告诉小海龟按照线速度2角速度1.8进行移动,默认的持续时间是3秒钟,如下图

通过加入选项-r则可以一直向topic发布数据

rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist – ‘[2.0,0.0,0.0]’ ‘[0.0,0.0,1]’
1
再次看一下rqt_graph中发生了什么,其中rostopic pub节点在一直与rostopic echo节点和turtlesim节点进行通信。

使用rostopic hz
rostopic hz返回数据发布的速率。

rostopic hz [topic]
1
利用该命令查看turtlesim发布/turtle1/pose的速度

rostopic hz /turtle1/pose
subscribed to [/turtle1/pose]
average rate: 62.502
min: 0.016s max: 0.016s std dev: 0.00006s window: 60
average rate: 62.501
min: 0.016s max: 0.016s std dev: 0.00005s window: 123
average rate: 62.498
min: 0.016s max: 0.016s std dev: 0.00005s window: 185
1
2
3
4
5
6
7
8
使用rqt_plot
rqt_plot是rqt软件包的一部分,可以动态绘制发布到某一个主题上的数据的图形

rosrun rqt_plot rqt_plot
1
在输入框中输入要绘制的主题名称,选择即可。

总结
这一节的内容较多,首先要理解ROS topics、ROS nodes、ROS Messages之间的关系。目前个人的理解是:ROS topics是ROS nodes之间进行通信的枢纽,ROS messages是ROS nodes订阅和发布数据的载体。两个ROS nodes欲实现通信,则其中一个节点向ROS topic发布ROS messages,另一节点则通过订阅此topic来接收messages,两者的message类型一定要相同,而message的类型由主题确定,通过rostopic type命令可以查看topic的数据类型。

然后就是辅助查看ROS中节点关系和数据的工具:rqt_graph和rqt_plot,两者都是针对ROS类型的,其中rqt_graph工具会自动搜寻系统中正在运行的节点和主题,并动态绘制出关系图,rqt_plot则是绘制发布到topic上的数据的图形,因此两者使用的前提是有ROS的进程在运行。

运行节点:roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
查看节点关系图:rosrun rqt_graph rqt_graph

显示topic1上所发布的数据:rostopic echo topic1
列出当前处于激活状态的topic列表:rostopic list -v
显示topic1的数据类型:rostopic type topic1
显示类型更加详细的信息:rosmsg show type1
直接向主题topic1发布数据:rostopic pub [topic1] [msg_type] [args]
显示主题topic1上数据的发布速率:rostopic hz [topic1]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习笔记五:理解ROS topics 的相关文章

  • Realsense D435i运行ORB-SLAM3

    ORB SLAM3 根目录下的CMakeList txt opencv版本改为3 xff0c 目的是与ROS下的CMakeList txt指定的opencv版本相同 xff0c 都为3 否则会段错误 build sh build ros s
  • VINS-Fusion运行相关

    如何安装VINS Fusion 根据网址安装 xff1a https github com HKUST Aerial Robotics VINS Fusion 先装ceres xff08 网址中的改成 xff1a sudo make ins
  • jetson xavier nx 上 bash: nvcc: command not found

    jetson Xavier nx上已经默认安装好了cuda cuda 10 2和cudnn等 出现这个问题是因为 我们需要把cuda目录下的bin文件添加到环境变量中 解决方案 vim bashrc 按 i 进入输入模式 xff0c 在最后
  • ROS下使用intel Realsense摄像头进行人脸检测

    使用准备条件 xff1a ROS indigo intel Realsense摄像头 xff08 我使用的依旧是R200 xff09 确保已经正常安装驱动 xff0c 安装方法见博文 http blog csdn net may0324 a
  • 【VINS-MONO】RealsenseD435i运行VINS-Mono

    1 查看需要的 camera imu的topic内容格式 xff1a roscore rosbag play lt bag gt rostopic list rostopic echo lt topic gt 2 对齐XJ2 bag中的IM
  • vsCode如何自动保存代码

    文件 勾选自动保存 xff0c 即可
  • 智能设备WIFI配网方式汇总

    当前很多物联网设备大都无没有人机交互界面 xff0c 也就没有像手机或者PC那样有wifi的配置界面 xff0c 汇总了一下设备入网的方式大概有如下几种 xff1a 1 xff1a AP 模式流程如下 1 将Dev手动设置为AP模式 xff
  • 平凡的人生or开挂的人生——对知乎相关问题的回答

    知乎原题 xff1a 为什么有些人的人生和开了挂一样 xff1f https www zhihu com question 37106162 楼上说的都特别好 xff0c 我很想补充一点 我先抛出一个背景概念 我认为开挂人生 xff0c 本
  • Linux内核机制总结中断异常和系统调用之系统调用(三十三)

    文章目录 1 系统调用1 1 定义系统调用1 2 执行系统调用 重要 xff1a 本系列文章内容摘自 lt Linux内核深度解析 gt 基于ARM64架构的Linux4 x内核一书 xff0c 作者余华兵 系列文章主要用于记录Linux内
  • Web前端工程化之VSCode+Git 解决冲突和error

    多人协作开发使用版本控制难免会有冲突 xff0c 在前端使用VSCode和Git过程中 xff0c 就会遇到大大小小的冲突 xff0c 有的merge一下 xff0c 然后提交推送就可解决 xff0c 有的是因为HEAD指针混乱造成 xff
  • 平时积累(四)

    1 重启Android运行环境 xff1a xff08 1 xff09 sudo adb shell stop xff08 2 xff09 sudo adb shell start 2 设置Android系统属性 xff1a xff08 1
  • 速度环+直立环+转向环

    文章目录 直立环直立环调节速度环速度环调节转向环 直立环 车模平衡控制也是通过负反馈来实现的 xff0c 与上面保持木棒直立比较则相对简单 因为车模有两个轮子着地 xff0c 车体只会在轮子滚动的方向上发生倾斜 控制轮子转动 xff0c 抵
  • 六轴传感器+卡尔曼滤波+一阶低通滤波

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 角度与角速度测量1 角度与角速度获取2 互补滤波3卡尔曼滤波4 实现卡尔一阶低通滤波5 实现卡尔曼滤波算法 角度与角速度测量 1
  • Android 自定义注解之运行时注解(RetentionPolicy.RUNTIME)

    RetentionPolicy RUNTIME xff1a 注解不仅被保存到class文件中 xff0c jvm加载class文件之后 xff0c 仍然存在 获取注解的常用方法 xff1a 获取指定类型的注解 public lt A ext
  • H5C3__元素垂直居中的方法

    在 CSS 中对元素进行水平居中是非常简单的 xff1a 如果它是一个行内元素 xff0c 就对它的父元素应用 text align center 如果它是一个块级元素 xff0c 就对它自身应用 margin auto 还有没有其他的方法
  • 2013年期中总结 2013年9月10日20:17:49

    题目中的时间 xff0c 我改了几次 xff0c 一直在想这半年来的经历 xff0c 我想我是成长着的吧 xff01 继上次总结 2012年年度总结 2013年2月25日21 49 44 xff0c 眨眼过去了半年 xff0c 细细想来这半
  • 关于行业代码对应表的数据库设计及导入(4位行业代码)

    最近使用asp net 43 sqlserver 43 layui前端框架完成了一个小页面 xff0c 其中有一个功能是需要将行业代码表导入倒数据库 看到这个行业代码表 xff0c 刚开始还真是无从下手 xff0c 经过查询找到一个页面是关
  • Gitblit服务器邮件配置

    关于Gitblit在windows下邮箱配置 xff0c 网上资料比较少 xff0c 自己摸索步骤如下 xff0c 实测有效 xff0c 另外 xff0c 如果不了解SMTP协议 xff0c 建议配置之前先去大概了解下 xff0c 当然没有
  • 当你不想学习的时候,来看看大脑是怎么想的《摘抄与所想》

    尽管科学家一个接一个的科研成果让我们对记忆有了越来越多的了解 xff0c 但直到今天 xff0c 科学家所发现的所谓大脑的秘密也只是冰山一角 xff0c 在很大程度上 xff0c 大脑和记忆仍是神秘的 研究人员认为 xff0c 记忆是一个过
  • English learning method ---学英语重中之重打通“任督二脉”

    漫漫十年艰辛路 xff0c 英语学习之旅 曾经秉承 路漫漫其修远兮 xff0c 吾将上下而求索 的信念 xff0c 初一那年了解到原来 xff08 a b c d e f g xff09 不仅仅读作 xff08 啊 xff0c 波 xff0

随机推荐

  • DRP过后,感受知识间的通性

    DRP视频看了不短的时间 xff0c 真正开始DRP的时间是7月17号 xff0c 至今两个月了 由于暑假期间英语的学习占得时间比较多 xff0c 所以DRP视频进行的很慢 9月11号看完了DRP所有的视频 xff0c 这个项目完成后最大的
  • English learning method ---我谈音标学习

    最近在想这样一个问题 xff1a 每个地方都有自己的方言 xff0c 有些方言我们完全听不懂 xff0c 但是他们当地人却可以交流的很好 xff1b 而非本地人说方言 xff0c 就要模仿他们的腔调 xff0c 模仿的多了说出来的味也就像了
  • English learning method ---如何加强听力

    在之前的一篇博客 English learning method 学英语重中之重打通 任督二脉 中主要讲述的是听力的重要性 xff0c 在这篇博客中主要讲述如何加强听力 学习理论 语言学习始于听 xff0c 小孩首先通过近两年的听来学习语言
  • 电脑软件--开机提示ntldr is missing的原因和解决方法

    早上一朋友打电话来说 xff1a 你赶紧帮我问问老师 xff0c 我这电脑开始提示ntldr丢失该怎么解决 xff0c 这是公司电脑 xff0c 最好不要重装系统 我一听 xff0c 感觉她不相信我的能力 xff0c 跟她解释 xff1a
  • 走近SSH之Hibernate--com.mysql.jdbc.CommunicationsException: Communications link failure due to underlyi

    进行java的学习已有几个月的时间了 xff0c 可还是感觉使用vs 43 sqlserver开发比较舒服 xff0c 最近学习java框架 xff0c 接触了很多新概念 xff0c 遇到各式各样的问题真有些不习惯 xff0c 提示都是英文
  • English learning method ---听转向说的过渡期

    2013年暑假之后 xff0c 我们慢慢进入了一种新的英语学习阶段 沉默了两年的小宇宙 xff0c 终于要爆发了 xff0c 开口说英语的时候发现自己说英语跟纯正的英语还是有区别的 xff0c 就像地方方言跟普通话的区别一样 xff1b 我
  • 我的2013----IT女的一年经历

    2012对我来说是不平坦的一年 xff0c 经历了各种不顺 xff1b 还记得2012年结尾的总结 xff1a 2012草草走过 xff0c 只希望自己2013能努力 xff0c 努力 xff0c 再努力 2013一路走来感觉这条路挺畅通的
  • Eclipse下导入外部jar包的3种方式

    我们在用Eclipse开发程序的时候 xff0c 经常要用到第三方jar包 引入jar包不是一个小问题 xff0c 由于jar包位置不清楚 xff0c 而浪费时间 下面配图说明3种Eclipse引入jar包的方式 1 最常用的普通操作方式
  • Git 创建合并分支详解

    新建分支 xff1a step1 xff1a 在本地创建子分支 weimx 64 18NB0373 MINGW64 e test project Server master git branch newtest step2 xff1a 将本
  • Multiple markers at this line @Override的解决方法

    使用Eclipse 进行项目开发 xff0c 在实现类中的方法前面如果添加 64 Override就提示 Multiple markers at this line 的错误 xff0c 问题描述如下 Multiple markers at
  • C# web端 NPOI导出Excel详解

    最近的项目需求 xff0c 需要将SqlServer数据库中的数据导出到Excel中 xff0c 导出excel方式有很多 xff0c 其中一种方式是使用NPOI xff0c NPOI具体是什么 xff0c 可以参考博客NPOI使用手册 接
  • vs2010 "行号显示"设置(vs简单使用)

    Microsoft Visual Studio 2010 默认情况下是不显示代码的行号的 xff0c 但是在编译出错时 xff0c 可点击下面输出窗口中的错误提示进行定位 但是这样操作起来你有没有感觉到不方便呢 不显示行号时 xff0c 代
  • Win7下配置"JAVA环境变量"---JDK的安装与配置

    一 JDK的安装 JDK安装过程很简单 xff0c 可以均选择默认设置 xff0c 直接点击 34 下一步 34 即可 xff1b 安装目录可自定义到自己想安装的文件夹中 xff0c 这里 xff0c 我选择的安装目录为 xff1a E P
  • asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    开发web项目时需要安装IIS xff0c 在安装好IIS的Windows7本上发布asp net网站时 xff0c web程序已经映射到了本地IIS上 xff0c 但运行如下错误提示 处理程序 PageHandlerFactory Int
  • 廊坊师范学院IT提高班,你真正了解多少?

    最近在csdn博文中经常看到博友们问 xff0c 什么是提高班 xff1f 更有人对提高班怀有疑惑 or 不理解 廊坊师范学院信息技术提高班到底是怎样的一个地方 xff0c 你对这个地方又有怎样的认识 xff1f 你对这个地方是否怀有一份好
  • 那个大雨之夜,您与我们同在_____生活中的素质教育

    爱人者 xff0c 人恒爱之 xff1b 敬人者 xff0c 人恒敬之 题记 不幸此文让我写成了流水账 xff0c 仍真心的恳请您拿出宝贵的几分钟时间 静下心来细细品味这篇文章 xff0c 文字不够华丽 xff0c 但字字发自内心 那一个大
  • 菜鸟之系统建模经验之谈----"机房收费系统"三层架构

    经历了错误 xff0c 才懂得正确的来由 学习就是一个不断经历错误 不断改正 不断得出认知的过程 题记 一 四大发明之活字印刷 面向对象思想的甘露 每一位优秀程序员都知道编写一个软件 xff0c 前期的软件需求分析 软件设计与建模要比编写代
  • 合理使用“搜索引擎和工具书”,提升“速度和加速度”

    如今在我们的工作和学习中 xff0c 搜索引擎和工具书是我们成长的巨人 xff0c 合理使用 搜索引擎和工具书 xff0c 会让我们成长的 速度和加速度 大大提升 使用搜索引擎查找问题的答案 xff0c 速度快 xff0c 但是搜索到的答案
  • 使用visio 2010建立sql server数据模型——手动画、利用逆向工程

    基础数据库这个词不在新鲜 xff0c 老早就提出了 咱们从出生 xff0c 个人信息就被放到一个基本信息库中了 xff0c 在全国各地 xff0c 通过身份证号就能知道你的基本信息 最近米老师下发了一个任务 xff0c 让我们开发几个小项目
  • ROS学习笔记五:理解ROS topics

    原文链接 xff1a https blog csdn net mountzf article details 52314364 本节主要介绍ROS topics并且使用rostopic和rqt plot命令行工具 例子展示 roscore