zoukankan      html  css  js  c++  java
  • ROS学习笔记6-理解主题

    本文来源于:http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

    1. ROS主题
      假设turtlesim节点已经运行,打开一个新终端,使用如下命令运行键盘控制节点
      $ rosrun turtlesim turtle_teleop_key
      

      则终端会弹出来如下窗口:

       表示从键盘读取输入来控制小海龟移动。
      将焦点选中到该窗口,即可使用键盘上的方向键来移动小 海龟。

       下来我们来分析一下在这背后,发生了什么。

    2. 理解ROS主题(Topic)
      上面有两个节点:turtlesim和turtle_teleop_key,他们通过ROS主题来进行通信。其中,turtle_teleop_key将键盘点击信息发布到消息中,turtlesim节点通过订阅该主题来接收键盘点击信息。
      1.  使用rqt_graph
        ROS提供了可视化工具,rqt_graph来查看ROS系统中运行了什么东西。该工具属于rqt_graph包,我们可以通过如下命令安装该包。
        $ sudo apt-get install ros-<distro>-rqt
        $ sudo apt-get install ros-<distro>-rqt-common-plugins
        

        其中,distro为ROS发行版本,本教程中使用kinetic版本。
        然后在新终端中运行:

        $ rosrun rqt_graph rqt_graph
        

         则会出现如下界面:

         如果将鼠标放在/turtle1/cmd_vel上,则界面中两个椭圆会颜色会发生如下变化:

         其中,变为红色的主题(Topics),蓝色和绿色的为节点(Nodes),其中蓝色为该主题的发布节点,绿色为该主题的订阅节点。

      2. rostopic
        ROS提供了rostopic命令来查看主题相关的信息。
        rostopic有一些子命令,可以使用rostopic -h查看,如下所示:
      3.  rostopic echo
        其中,rostopic echo命令可以打印主题消息。语法如下:

        rostopic echo [topic]
        

        例如我们之前用rqt_graph查看到一个主题:/turtle1/cmd_vel,我们可以用如下命令来查看该中主题中的消息:

         如上图所示,运行了

        rostopic echo /turtle1/cmd_vel
        

         之后,将焦点中选中到键盘节点的窗口,点击方向键,则可以打印出该主题的消息内容。
        现在如果再运行rqt_graph,则显示如下:

         可以看出来多了一个节点来订阅/turtle1/cmd_vel主题,该节点即为rostopic echo节点。

      4. rostopic list
        rostopic list命令可以列出当前订阅或发布的主题,用法如下:

        若使用-v选项,则会列出来当前订阅和发布主题的完整信息。

      5. rostopic type
        节点之前通过订阅和发布主题来进行通信,而发送和接收的数据需要是同一类型的消息,通信的内容形式即为消息(Message)。
        这些消息的类型可以通过rostopic type命令查看,该命令用法为:
        rostopic type [topic]
        

        例如,我们可以查看/turtle1/cmd_vel中的消息类型:

        该主题的消息类型为:geometry_msgs/Twist。
        可以使用如下命令查看该消息类型的数据成员:

        spy@spy-pc:~$ 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
        

         可以看出来该消息类型包含两个向量Vector3类型的结构体,分别表示速度和角速度。

      6. rostopic pub
        rostopic pub命令可以直接发布ros主题的消息。该命令用法如下:
        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]'
        

         该命令表示发布类型为geometry_msgs/Twist的消息到/turtle1/cmd_vel主题,该消息参数为:'[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'表示速度为向前2.0,角速度为1.8,-1表示只发布一次消息。
        这组参数使用的是YAML语法,关于该语法的更多信息请参考YAML command line documentation.

        两个短杠--表示,后面的均是参数,不是选项,以防止解析器解析错误,例如含有符号的参数,如不加区分,解析器可能会按照选项来解析。
        在该命令下,小乌龟移动界面如下图所示:

         可以看出,小乌龟大约 移动了1/4段圆弧。

        为了使小乌龟持续移动,我们需要持续发布该消息,需要加入持续发布消息的频率参数,该参数可以使用-r选项指定,例如使用如下语句:
        rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
        

        就可以让乌龟持续转圈:

         再使用rqt_graph查看主题:

         可以看出来多了一个节点来发布/turtle1/cmd_vel主题到/turtlesim节点的。

      7. 消息数据的可视化
        1.  rostopic hz
          rostopic hz命令可以查看一个主题的发布频率,例如:
          rostopic hz /turtle1/pose
          subscribed to [/turtle1/pose]
          average rate: 62.485
          	min: 0.004s max: 0.028s std dev: 0.00250s window: 63
          average rate: 62.495
          	min: 0.004s max: 0.028s std dev: 0.00180s window: 125
          average rate: 62.489
          	min: 0.004s max: 0.028s std dev: 0.00149s window: 188
          average rate: 62.495
          	min: 0.002s max: 0.029s std dev: 0.00181s window: 250
          average rate: 62.500
          	min: 0.002s max: 0.029s std dev: 0.00175s window: 313
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00190s window: 375
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00176s window: 438
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00166s window: 501
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00165s window: 563
          average rate: 62.502
          	min: 0.002s max: 0.029s std dev: 0.00175s window: 626
          average rate: 62.498
          	min: 0.002s max: 0.029s std dev: 0.00178s window: 688
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00171s window: 751
          average rate: 62.498
          	min: 0.002s max: 0.029s std dev: 0.00165s window: 813
          average rate: 62.501
          	min: 0.002s max: 0.029s std dev: 0.00159s window: 876
          average rate: 62.500
          	min: 0.002s max: 0.029s std dev: 0.00158s window: 938
          average rate: 62.499
          	min: 0.002s max: 0.029s std dev: 0.00153s window: 1001
          average rate: 62.499
          	min: 0.002s max: 0.029s std dev: 0.00149s window: 1064
          average rate: 62.500
          	min: 0.002s max: 0.029s std dev: 0.00147s window: 1126
          average rate: 62.499
          	min: 0.001s max: 0.032s std dev: 0.00161s window: 1189
          average rate: 62.499
          	min: 0.001s max: 0.032s std dev: 0.00162s window: 1251
          average rate: 62.499
          	min: 0.001s max: 0.032s std dev: 0.00159s window: 1314
          average rate: 62.501
          	min: 0.001s max: 0.032s std dev: 0.00155s window: 1376
          average rate: 62.500
          	min: 0.001s max: 0.032s std dev: 0.00152s window: 1439
          average rate: 62.500
          	min: 0.001s max: 0.032s std dev: 0.00149s window: 1501
          average rate: 62.500
          	min: 0.001s max: 0.032s std dev: 0.00147s window: 1564
          average rate: 62.500
          	min: 0.001s max: 0.032s std dev: 0.00145s window: 1627
          average rate: 62.499
          	min: 0.001s max: 0.032s std dev: 0.00142s window: 1689
          average rate: 62.500
          	min: 0.001s max: 0.032s std dev: 0.00140s window: 1752
          average rate: 62.444
          	min: 0.001s max: 0.041s std dev: 0.00155s window: 1813
          

          可以看出,turtlesim节点发布的/turtle1/pose主题频率约为62Hz,并且给出了统计特性,最大值,最小值和方差。

        2. rqt_plot
          该命令会把消息数据绘图:
          rosrun rqt_plot rqt_plot
          

           会弹出rqt_plot的界面,然后在界面中Topic后面的文本框中输入主题名,例如输入:/turtle1/pose然后就会显示/turtle1/pose主题中的消息数据曲线。


            
  • 相关阅读:
    Knockout应用开发指南 第八章:简单应用举例(2)
    微软ASP.NET站点部署指南(7):生产环境部署
    Knockout应用开发指南 第七章:Mapping插件
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(6)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(5)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(3)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(8)
    Microsoft Visual Studio .NET 2003 引导程序插件下载地址(非官方)
    Vs2010在没有安装SQL Server 2005/2008 Express时如何连接MDF数据文件?
  • 原文地址:https://www.cnblogs.com/spyplus/p/11518480.html
Copyright © 2011-2022 走看看