Advertisement

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

阅读量:
img
img

本课程既包含针对初学者提供的入门级学习资料,也设有针对具备三年以上实践经验的专业技术者的高级课程,并覆盖了物联网嵌入式技术领域的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 (备注嵌入式)** **[如果你需要这些资料,可以戳这里获取]()**

全部评论 (0)

还没有任何评论哟~