蹄牛操作系统TINIUX
ROS中文社区
查看: 7734|回复: 5

[跟我学ROS]8.rqt_console和roslaunch的用法

[复制链接]
发表于 2013-5-18 17:42:43 | 显示全部楼层 |阅读模式
Turtlebot2
本帖最后由 时飞 于 2013-5-18 17:49 编辑


描述:这篇教程介绍ROS系统中rqt_console和rqt_logger_level的调试方式,利用roslaunch一次启动多个节点;如果采用早期的版本(fuerte及以前的版本),rqt也许并不能用,可以采用基于rx的相关工具。

1.        rqt的前期准备和turtlesim功能包

这篇教程同时用到了rqt和turtlesim功能包。为了完成这部教程,请安装这两个功能包,可以通过如下命令安装:
[Bash shell] 纯文本查看 复制代码
$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim


替换命令中的<distro>位你使用的ROS版本号,如electric,fuerte,groovy等;

注意:你也许已经在前面的教程中编译过rqt和turtlesim了,如果你不确定,可以重新安装一下,不会有任何影响。


2.        rqt_console和rqt_logger_level的用法

rqt_console依附于ROS系统的日志框架,用于显示节点的输出信息。通过rqt_logger_level可以调整当前运行节点输出信息的显示级别(DEBUG,WARN,INFO和ERROR);

现在我们利用rqt_console查看一下turtlesim的输出信息,同时用rqt_logger_level调整一下日志级别。在启动turtlesim前,重新打开两个命令终端,分别启动rqt_console和rqt_logger_level:
[Bash shell] 纯文本查看 复制代码
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level


这时会弹出两个窗口信息:
7.1.png


7.2.png

这时我们在新的命令终端启动turtlesim:
$ rosrun turtlesim turtlesim_node

因为默认的logger级别为INFO,我们可以看到turtlesim启动时发布出的任何信息,输出信息会如下所示:
7.3.png

我们在rqt_logger_level窗口调整一下日志级别到Warn级别,如下所示,选择Warn:
7.4.png

此时我运行小乌龟,让它碰到墙壁(注:窗口边缘),查看一下rqt_console里的输出信息:
[Bash shell] 纯文本查看 复制代码
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0

7.5.png
2.1 Quick Note about logger levels

日志级别的优先级顺序如下所示:
Fatal
Error
Warn
Info
Debug

Fatal优先级最高级别,Debug优先级最低。通过设置日志级别,你可以得到同级及更高级的所有输出信息,如果设置级别为Warn,你将会得到Warn,Error及Fatal级别的日志输出信息;

输入Crtl+C结束turtlesim,通过roslaunch产生多个turtlesim节点,并让其中的一个节点模仿另一个节点运行:

3 Using roslaunch

Roslaunch会按照启动文件描述的方式启动节点:

用法:
[Bash shell] 纯文本查看 复制代码
$ roslaunch [package] [filename.launch]


首先进入beginner_tutorials功能包:
[Bash shell] 纯文本查看 复制代码
$ roscd beginner_tutorials


如果roscd失败,可以在命令终端设置ROS_PACKAGE_PATH的变量,命令如下所示:
[Bash shell] 纯文本查看 复制代码
$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials


如果仍然无法找到beginner_tutorials,则需要按照前面的课程重新创建这个功能包了。

然后我们需要创建一个启动目录:
[Bash shell] 纯文本查看 复制代码
$ mkdir launch
$ cd launch


3.1 The Launch File

现在我们创建名字为turtlemimic.launch的启动文件,并在里面粘贴如下内容:

[XML] 纯文本查看 复制代码
<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>


3.2 The Launch File Explained

现在我们分开介绍一下launch的内容:

[XML] 纯文本查看 复制代码
<launch>


启动配置文件利用launch作为开始标签,这样这个文件就被标识为启动文件。

[XML] 纯文本查看 复制代码
  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>


这里配置两个组,分别命名为turtlesim1和turtlesim2,这两个组,功能源于同样的功能包turtlesim,同样的名字sim及同样的类型turtlesim_node,这样启动两个模拟器可以避免名字方面的冲突。

[XML] 纯文本查看 复制代码
  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>


接着我们启动模拟节点,并把输入话题及输出话题分别命名为turtlesim1和turtlesim2,重命名之后,将会让turtlesim2模仿turtlesim1运行。

[XML] 纯文本查看 复制代码
</launch>


这个xml标签作为启动文件配置的结束。

3.3 roslaunching

现在通过roslaunch启动launch文件:
[Bash shell] 纯文本查看 复制代码
$ roslaunch beginner_tutorials turtlemimic.launch


两个turtlesims已经启动了,在新的命令终端发送rostopic命令如下:
[Bash shell] 纯文本查看 复制代码
$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8


可以看到,即使命令发给了turtlesim1,但两个乌龟均开始运动,
7.6.png

我们可以借助于rqt_graph来更好的理解launch文件做了什么,启动rqt的主窗口然后选择rqt_graph:
[Bash shell] 纯文本查看 复制代码
$ rqt


或者简单的输入:
[Bash shell] 纯文本查看 复制代码
$ rqt_graph 

7.7.png

我们成功的采用rqt_console和roslaunch,下一步我们了解一下ROS系统中的编辑选项。现在可以通过Ctrl-C终止所有的turtlesims了,下一个教程中我们并不需要他们了。

英文文档链接:http://www.ros.org/wiki/ROS/Tutorials/UsingRqtconsoleRoslaunch

注:欢迎你转载本篇文章,时飞提醒你转载时请注明出处!

回复

使用道具 举报

蹄牛操作系统TINIUX技术论坛
发表于 2013-12-6 14:18:16 | 显示全部楼层
MakeBlock
本帖最后由 lligen 于 2013-12-6 14:19 编辑

这里存在问题:
如果roscd失败,可以在命令终端设置ROS_PACKAGE_PATH的变量,命令如下所示:        
$ export ROS_PACKAGE_PATH=~/<distro>_workspace/sandbox:$ROS_PACKAGE_PATH

根据hytro教程一步步下来应该是
$ export ROS_PACKAGE_PATH=~/catkin_ws/scr:$ROS_PACKAGE_PATH
回复 支持 反对

使用道具 举报

发表于 2013-12-6 14:41:12 | 显示全部楼层
SeeedStudio
For hydro的代码是有点不同的,wiki上有,希望斑竹更新~~~
回复 支持 反对

使用道具 举报

发表于 2016-8-12 16:46:41 | 显示全部楼层
thanks a lot
回复 支持 反对

使用道具 举报

发表于 2017-2-8 21:49:31 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|智能硬件开发社区 ( 京ICP备14010787号 )

GMT+8, 2019-2-16 18:57 , Processed in 0.098833 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表