ROS学习-使用rqt_console 和 roslaunch

主要介绍rqt_console命令和 rqt_logger_level命令来进行调试,roslaunch进行一次性启动多个节点。

# <distro>替换为自己电脑上对应的ROS版本
sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim

我们在前述博客中已经安装过这些包,如果没有安装的话可以执行上面的sudo apt-get install命令。安装的包如下:

ros-<distro>-rqt
ros-<distro>-rqt-common-plugins
ros-<distro>-turtlesim

使用rqt_console 和 rqt_logger_level命令

首先,我们退出之前的节点和ROSCore。重新打开一个Terminal,输入下述命令:

$ rosrun rqt_console rqt_console

启动如下所示的界面:
在这里插入图片描述
接着输入下述命令:

$ rosrun rqt_logger_level rqt_logger_level

启动如下所示的界面:
在这里插入图片描述
现在,我们再打开一个新的Terminal,然后启动turtlesim包中的turtlesim_node节点。
因为默认的记录器级别为INFO,我们可以看到turtlesim启动时在console中发布的信息,如下所示:
在这里插入图片描述
现在我们通过在rqt_logger_level的窗口中选择为Warn,并刷新把记录器级别改为Warn。
在这里插入图片描述
现在,我们让小乌龟动起来,一直往前走撞墙,并查看rqt_console中的输出情况,输入命令:

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

小乌龟行走一段时间撞墙:
在这里插入图片描述
在rqt_console中可以看到,一直在输出warn警告信息。
在这里插入图片描述

关于logger级别的快速说明

记录器级别按照以下的优先级别进行排序。

Fatal
Error
Warn
Info
Debug

Fatal是最高的优先级,Debug有最低的优先级。通过设置logger的级别,我们可以得到当前优先级或者更高级别的消息。例如,通过设置级别为Warn,则可以得到Warn、Fatal、Error等级别的logging消息。

下面我们使用Ctrl + C结束现有的turtlesim节点,接着使用roslaunch命令来调用多个turtlesim节点和一个模拟节点,来使一个节点来模拟另外一个。

使用roslaunch

roslaunch命令可以通过在launch文件中定义来启动多个节点。用法如下:

$ roslaunch [package] [filename.launch]

首先,我们切换到前述博客中所创建的beginner_tutorials包中:

$ roscd beginner_tutorials

如果上述命令提示类似于没有这个包之类的错误,则原因可能是因为我们没有激活catkin_ws的工作环境(参考:ROS学习-创建一个工作空间

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

然后在beginner_tutorials包中创建一个launch文件夹,并切换到launch文件夹中,创建一个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>

launch文件解析

现在我们对上述中所创建的turtlemimic.launch文件内容进行解析。
首先,launch文件以一个标志开头,让这个文件能够被识别为launch文件。

<launch>

接下来,我们开始两个命名空间ns为turtlesim1 和 turtlesim2的groups,节点名称为"sim"。这允许我们启动两个模拟器而不会产生名称冲突。如下所示:

  <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,此重命名将使turtlesim2模仿turtlesim1。如下所示:

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

最后,我们通过下述结尾,即以一个 xml 标签的形式对launch文件进行结尾。

</launch>

roslaunch命令

现在,我们使用roslaunch命令来启动上述所创建的launch文件。命令如下:

$ roslaunch beginner_tutorials turtlemimic.launch

可以看到一次性启动了两个小乌龟,其中turtlesim2是在模仿turtlesim1的一系列行为。
在这里插入图片描述
接着,如果我们在一个新的Terminal中发送一个rostopic命令给turtlesim1节点,使其进行运动。命令如下:

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

则可以发现两个turtlesim1节点同时旋转起来:
在这里插入图片描述
我们也可以使用 rqt_graph 命令来查看当前节点,理解Launch文件中的关系。

使用rqt_graph命令,查看各节点之间的关系如下:

$ rosrun rqt_graph rqt_graph

也可以简单的使用命令:

$ rqt

或者命令:

$ rqt_graph

打开rqt主界面,依次点击Plugins -> IntroSpection -> Node Graph 添加节点图。

输出结果如下图所示:
在这里插入图片描述

上述介绍中,我们成功使用了 rqt_console 和 roslaunch命令。

猜你喜欢

转载自blog.csdn.net/wxc_1998/article/details/121334763
今日推荐