zoukankan      html  css  js  c++  java
  • ROS学习笔记8-rqt_console和roslaunch

    本教程来自于:http://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch

    rqt_console 和 rqt_logger_level 是ros的调试工具(类似于控制台和日志)。roslaunch可以用于一次启动多个节点(不同于rosrun只能启动一个节点)。

    1. 使用rqt_console和rqt_logger_level
      假设安装了ros和rqt工具,以及小乌龟的示例包。rqt_console控制台将ros的日志系统关联到节点的显示输出,rqt_logger_level允许我们在节点运行期间改变他们的信息显示级别。
      信息显示级别包括:DEBUG(调试信息), WARN(警告信息), INFO(提示信息), 和ERROR(错误信息)。
      在运行小乌龟的示例之前,在两个新的终端中分别运行如下语句,打开rqt_console和rqt_logger_level的界面:
      $ rosrun rqt_console rqt_console
      $ rosrun rqt_logger_level rqt_logger_level
      

      rqt_console界面

       rqt_logger_level界面

       现在我们在一个新终端中运行小乌龟的示例:

      $ rosrun turtlesim turtlesim_node
      

      则控制台中会出来如下信息:

       然后我们可以在rqt_logger_level中改变信息级别。

       将显示级别改为Warning,然后运行如下命令,让乌龟撞墙:

      rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
      

       然后我们再看rqt_console中的信息:

      可以看出显示出了警告信息。

      所有的日志级别如下:

      Fatal
      Error
      Warn
      Info
      Debug
      

      其中,Debug是最低级别,Fatal是最高级别,选择一个级别后,会显示选择级别以及比他低的级别。例如,选择Warn后,会显示Debug、Info和Warn级别的信息。

    2. roslaunch
      roslaunch 通过一个启动文件来启动节点
      用法如下:

      $ roslaunch [package] [filename.launch]
      

       使用如下命令进入一个ros包,该例中进入beginner_tutorials

      $ roscd beginner_tutorials
      

       如果提示没有该包,参考文档创建一个ros包。运行如下命令,建立ros的环境。

      $ cd ~/catkin_ws
      $ source devel/setup.bash
      $ roscd beginner_tutorials
      

      然后使用如下命令创建一个启动文件目录:

      $ mkdir launch
      $ cd launch
      

       事实上,不用单独建立个目录来存储启动文件,启动文件可以存放在包目录下的任何位置,ros会自动寻找他,不过为便于文件组织,还是单独创建一个目录比较好。

      然后创建一个启动文件,文件名为:turtlemimic.launch,内容如下:
      <launch>
      
        <group ns="turtlesim1">
          <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
        </group>
      
        <group ns="turtlesim2">
          <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
        </group>
      
        <node pkg="turtlesim" name="mimic" type="mimic">
          <remap from="input" to="turtlesim1/turtle1"/>
          <remap from="output" to="turtlesim2/turtle1"/>
        </node>
      
      </launch>
      

      从启动文件的标签可以看出,该文件采用的xml语法,有两个group和一个node,其中,两个group都有一个ns的标签指定命名空间(namespace)为turtlesim1和turtlesim2,两个group中各有一个node,node的名字(name)为sim。这样可以让我们同时启动两个仿真器而没有命名冲突。然后,我们定义了一个模拟(mimic)节点,该节点有输入输出主题,输入和输出分别被重映射到turtlesim1 和 turtlesim2,该重命名会让turtlesim2模拟turtlesim1(将turtlesim1的输出直接给turtlesim2)。
      然后我们采用roslaunch来启动该文件。

      $ roslaunch beginner_tutorials turtlemimic.launch
      

       输出如下:

      started roslaunch server http://UAVlab1:36470/
      
      SUMMARY
      ========
      
      PARAMETERS
       * /rosdistro: kinetic
       * /rosversion: 1.12.14
      
      NODES
        /
          mimic (turtlesim/mimic)
        /turtlesim1/
          sim (turtlesim/turtlesim_node)
        /turtlesim2/
          sim (turtlesim/turtlesim_node)
      
      ROS_MASTER_URI=http://localhost:11311
      
      process[turtlesim1/sim-1]: started with pid [4107]
      process[turtlesim2/sim-2]: started with pid [4108]
      process[mimic-3]: started with pid [4109]
      

      可以看出来,运行了三个节点,分别为/mimic,/turtlesim1/sim和/turtlesim2/sim。
      并出现了两个小乌龟:

       我们再启动一个新终端,在其中发布消息让turtlesim1中的乌龟开始移动:

      $ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
      

       可以看出来两个窗口里的小乌龟都开始移动:

       可以看出来其中的消息传递:

       /mimic节点起到了消息转发的作用。




             


  • 相关阅读:
    grails How to check if element in groovy array/hash/collection/list? Stack Overflow
    慧忠里自提点
    GroovyQ | 关注Groovy社区动态,分享Groovy开发经验。
    strupr strlwr
    Faqseafilevssvn seafile
    C++ STL下载和安装
    Emacs中学习gdb调试
    Readlineselect
    Diskfileio GongGeng
    Achieving Groovylike Fluency in Java with Google Collections | The Kaptain on ... stuff
  • 原文地址:https://www.cnblogs.com/spyplus/p/11539844.html
Copyright © 2011-2022 走看看