ROS机器人操作系统的安装、配置与初级教程 9

来源:互联网 发布:maxwell软件 编辑:程序博客网 时间:2024/06/06 15:43

使用 rqt_console 和 roslaunch

简介: 本教程介绍如何使用rqt_console和rqt_logger_level进行调试,以及如何使用roslaunch同时运行多个节点。

难度: 初级

下节: 如何使用rosed

相关资料:使用 rqt_console 和 roslaunch

1 预先安装rqt和turtlesim程序包

从本节开始,为提高效率,请先下载在Github上的ros turorials功能包,https://github.com/ros/ros_tutorials/tree/indigo-devel 。

本教程会用到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,如果你不确定的话重新编译一次也没事。

2 使用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_console 和 rqt_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,如下图所示:

此处输入图片的描述

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

此处输入图片的描述

2.1 日志等级说明

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

FatalErrorWarnInfoDebug

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

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

2.2 使用roslaunch

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

用法:

$ roslaunch [package] [filename.launch]

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

$ roscd beginner_tutorials

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

$ roscd beginner_tutorials

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

然后创建一个launch文件夹:

$ mkdir launch$ cd launch

2.3 Launch 文件

现在我们来创建一个名为 turtlemimic.launch 的 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>

2.4 Launch 文件解析

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

  <launch>

在这里我们以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>

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

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

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

   </launch>

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

2.5 使用roslaunch

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

$ roslaunch beginner_tutorials turtlemimic.launch

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

$ 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节点了,因为在下一篇教程中你不会再用到它们。

阅读全文
0 0
原创粉丝点击