Description:  本教程介绍如何使用 rqt_console 和 rqt_logger_level 进行调试,以及如何使用 roslaunch 同时运行多个节点。早期版本中的 rqt 工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考 这个页面 学习使用老版本的“rx”工具。

Tutorial Level:  BEGINNER

Next Tutorial:   如何使用rosed

目录

  1. 预先安装rqt和turtlesim程序包
  2. 使用rqt_console和rqt_logger_level
    1. 日志等级说明
    2. 使用roslaunch
    3. Launch 文件
    4. Launch 文件解析
    5. roslaunching

预先安装rqt和turtlesim程序包

本教程会用到rqt 和 turtlesim这两个程序包,如果你没有安装,请先安装:

$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

请使用ROS发行版名称(比如 electric、fuerte、groovy、hydro或最新的indigo)替换掉<distro>。

注意: 你可能已经在之前的某篇教程中编译过rqt和turtlesim,如果你不确定的话重新编译一次也没事。

使用rqt_console和rqt_logger_level

rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。

现在让我们来看一下turtlesim在rqt_console中的输出信息,同时在rqt_logger_level中修改日志等级。在启动turtlesim之前先在另外两个新终端中运行rqt_consolerqt_logger_level

$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

你会看到弹出两个窗口:

现在让我们在一个新终端中启动turtlesim:

$ rosrun turtlesim turtlesim_node

因为默认日志等级是INFO,所以你会看到turtlesim启动后输出的所有信息,如下图所示:

现在让我们刷新一下rqt_logger_level窗口并选择Warn将日志等级修改为WARN,如下图所示:

现在我们让turtle动起来并观察rqt_console中的输出(非hydro版):

rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0

hydro版:

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

日志等级说明

日志等级按以下优先顺序排列:

Fatal
Error
Warn
Info
Debug

Fatal是最高优先级,Debug是最低优先级。通过设置日志等级你可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,你会得到WarnErrorFatal这三个等级的所有日志消息。

现在让我们按Ctrl-C退出turtlesim节点,接下来我们将使用roslaunch来启动多个turtlesim节点和一个模仿节点以让一个turtlesim节点来模仿另一个turtlesim节点。

使用roslaunch

roslaunch可以用来启动定义在launch文件中的多个节点。

用法:

$ roslaunch [package] [filename.launch]

先切换到beginner_tutorials程序包目录下:

$ roscd beginner_tutorials

如果roscd执行失败了,记得设置你当前终端下的ROS_PACKAGE_PATH环境变量,设置方法如下:

$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials

如果你仍然无法找到beginner_tutorials程序包,说明该程序包还没有创建,那么请返回到ROS/Tutorials/CreatingPackage教程,并按照创建程序包的操作方法创建一个beginner_tutorials程序包。

然后创建一个launch文件夹:

$ mkdir launch
$ cd launch

Launch 文件

现在我们来创建一个名为turtlemimic.launch的launch文件并复制粘贴以下内容到该文件里面:

切换行号显示

   1 <launch>
   2
   3   <group ns="turtlesim1">
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>
  10
  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  15
  16 </launch>

Launch 文件解析

现在我们开始逐句解析launch xml文件。

切换行号显示

   1 <launch>

在这里我们以launch标签开头以表明这是一个launch文件。

切换行号显示

   3   <group ns="turtlesim1">
   4     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   5   </group>
   6
   7   <group ns="turtlesim2">
   8     <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
   9   </group>

在这里我们创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。

切换行号显示

  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>

在这里我们启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。

切换行号显示

  16 </launch>

这个是launch文件的结束标签。

roslaunching

现在让我们通过roslaunch命令来启动launch文件:

$ roslaunch beginner_tutorials turtlemimic.launch

现在将会有两个turtlesims被启动,然后我们在一个新终端中使用rostopic命令发送速度设定消息:

非hydro版:

$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8

hydro版:

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

你会看到两个turtlesims会同时开始移动,虽然发布命令只是给turtlesim1发送了速度设定消息。

我们也可以通过rqt_graph来更好的理解在launch文件中所做的事情。运行rqt并在主窗口中选择rqt_graph:

$ rqt

或者直接运行:

$ rqt_graph

到此,我们算是已经学会了rqt_console和roslaunch命令的使用,接下来我们开始学习使用rosed——ROS中的编辑器。现在你可以按Ctrl-C退出所有turtlesims节点了,因为在下一篇教程中你不会再用到它们。

使用 rqt_console 和 roslaunch相关推荐

  1. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  2. Using rqt_console and roslaunch

    Description: This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and r ...

  3. ROS学习(九)—— rqt_console 和 roslaunch

    一.rqt_console 和rqt_logger_level 1.作用: rqt_console依据ROS编译日志,输出节点信息 rqt_logger_level可以改变节点的警告出差的警告等级 2 ...

  4. ROS的学习(十)rqt_console和roslaunch

    打开一个新的终端在里面输入: sudo apt-get install ros-hydro-rqt ros-hydro-rqt-common-plugins ros-hydro-turtlesim 安 ...

  5. 使用rqt_console和roslaunch---ROS学习第7篇

    文章目录 1. 准备工作 2.使用rqt_console和rqt_logger_level 2.1 日志记录器级别 2.2 使用roslaunch 2.3 launch文件 2.4 launch解析 ...

  6. ROS学习——3 roslaunch的使用

    在我们安装ros的时候都测试过小海龟的案例,但是当我们同时开启两个小海龟的时候,旧的小海龟就会被关闭(原因是节点名相同).下面记录如何同时打开两个小海龟节点. 官网教程:使用rqt_console和r ...

  7. ROS 命令以及相关内容学习(二)

    在上一节中我们已经学习了package node topic message 这些的运行方式,下面我们去理解service 的运行方式. 1.sevice 1 #命令 2 rosservice lis ...

  8. ROS入门_1.10 理解ROS服务和参数

    目录 ROS Services 使用rosservice rosservice list rosservice type rosservice call Using rosparam rosparam ...

  9. ROS官网新手级教程总结

    第 1 关卡:安装和配置 ROS 环境 目标:在计算机上安装和配置 ROS 环境. 安装 ROS 按照 ROS 安装说明进行安装. 管理环境 确定环境变量 ROS_ROOT 和 ROS_PACKAGE ...

最新文章

  1. 关于JSON基础的总结
  2. UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or dir
  3. 将Android实例导入project
  4. centos7.8源码编译安装nginx1.17.10
  5. django报错500排查方法
  6. python买东西_Python实战之ATM+购物车
  7. WSARecv参数lpNumberOfBytesRecvd的一个变态问题
  8. 简单粗暴 我再送一波教程资料,Vue、大数据、AI都有
  9. Linux 目录栈及目录切换
  10. Spring Boot 开源软件都有哪些?
  11. MS DOS窗口进入JAVA源程序,从java程序运行MS-DOS命令
  12. apex英雄机器人探路者怎么玩_LOL有哪些英雄,是你怎么玩都玩不会的?
  13. 三菱PLC编程指令简介
  14. DSP烧写程序的步骤流程
  15. php滚动播报,卫星云图滚动播放(实时更新)
  16. 15个常用excel函数公式_(干货)EXCEL常用函数公式大全及举例
  17. 致加西亚的信 谁动了我的奶酪
  18. 哪些交易2010年可能出问题
  19. /hv/hv_go.h:14:27: fatal error: metslib/mets.hh: No such file or director解决办法
  20. VBA使用PING测试网络连接

热门文章

  1. git保留两个repo的commit并进行合并
  2. C#学习笔记-数据的传递(公共变量)以及Dictionary
  3. 2-jQuery - AJAX load() 方法【进阶篇】
  4. 什么是REST API?
  5. BFS HDOJ 1242 Rescue
  6. viewgroup 渲染过程
  7. Java学习笔记12——JVM入门
  8. =在 java中怎么表示_在Java中各种类型运算符的介绍与其基本使用方式(有具体使用示例)...
  9. mysql定时增量备份_Mysql日常自动备份和增量备份脚本
  10. shell变量里的字符替换