ROS学习笔记五:理解ROS topics_rostopic hz 中min max


本课程既包含针对初学者提供的入门级学习资料,也设有针对具备三年以上实践经验的专业技术者的高级课程,并覆盖了物联网嵌入式技术领域的95%以上知识点,并真正形成了完整的知识体系。
面对的文档数量较多,在此仅作为参考提供部分目录截图。该套装包含资深大厂面试题库、核心知识点总结(含重点难点解析)、深度学习代码解析(附详细注释)、实际操作案例分析(涵盖常见问题解答)、课程规划路线图(分阶段学习方案)、PDF/Kindle格式存储的学习资料以及配套教学视频资源,并将持续补充更多内容
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
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命令显示了当前被订阅和被发布的主题列表。
ROS主题列表
ros输出
ros输出聚合
统计信息
turtle1的cmd_vel主题
turtle1的颜色传感器主题
turtle1的姿态主题
### ROS Messages
通过在节点之间发送ROS Messages实现节点之间的通信,发布和订阅节点之间发送和接收的数据类型必须一致,这意味着一个主题的数据类型由发布在其上的信息类型所决定。发布在主题上的信息类型可以由`rostopic type topic1`来显示。
#### 使用rostopic type
rostopic type返回正在使用的主题上的信息的类型。
rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
利用命令`rosmsg`可以查看信息的详细信息
rosmsg output geometry_msgs/Twist; define a linear velocity vector with components x, y, and z; all variables are of type float64; similarly, define an angular velocity vector with components x, y, and z; all variables are of type float64.
现在我们知道了turtlesim需要什么样的数据类型,所以我们可以发布命令给我们的小海龟。
### rostopic continued
学习完ROS Messages之后,下面来学习一下rostopic和messages。
#### 使用rostopic pub
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]’
**给定速度参数竟然只能用逗号隔开,呵呵**
上面的命令告诉小海龟按照线速度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]’
再次看一下rqt\_graph中发生了什么,其中rostopic pub节点在一直与rostopic echo节点和turtlesim节点进行通信。
![]()
#### 使用rostopic hz
rostopic hz返回数据发布的速率。
rostopic hz [topic]
利用该命令查看turtlesim发布/turtle1/pose的速度
该节点接收名为/turtle1/pose的消息流
其平均频率约为62.5 Hz
观察到最小值为约16毫秒
最大值与最小值基本相同均为16毫秒
标准偏差约为千分之零点零六秒
窗口大小为6分钟
随后频率略有下降至约62.498 Hz
此时标准偏差维持在千分之零点零五秒水平
窗口大小扩大到183秒
#### 使用rqt\_plot
rqt\_plot是rqt软件包的一部分,可以动态绘制发布到某一个主题上的数据的图形
rosrun rqt_plot rqt_plot
在输入框中输入要绘制的主题名称,选择即可。
![]()
### 总结
这一节的内容较多,首先要理解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]
祝枫
2016年8月25日于哈尔滨
![img]()
![img]()
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新** **需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)** **[如果你需要这些资料,可以戳这里获取]()**
了95%以上物联网嵌入式知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新** **需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)** **[如果你需要这些资料,可以戳这里获取]()**
