ROS学习-使用rqt_console 和 roslaunch

本文涉及的产品
资源编排,不限时长
简介: 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命令。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
12月前
|
XML C语言 数据格式
[ros基础] --- roslaunch使用详解
[ros基础] --- roslaunch使用详解
237 0
|
C++
ROS学习-写一个tf broadcaster(C++)
ROS学习-写一个tf broadcaster(C++)
139 0
ROS学习-写一个tf broadcaster(C++)
|
数据可视化 Ubuntu 机器人
ROS学习-tf介绍
ROS学习-tf介绍
207 0
ROS学习-tf介绍
|
存储
ROS学习-记录和回放数据
ROS学习-记录和回放数据
366 0
ROS学习-记录和回放数据
|
存储
ROS学习-写一个简单的Publisher和Subscriber
ROS学习-写一个简单的Publisher和Subscriber
122 0
ROS学习-写一个简单的Publisher和Subscriber
|
存储
ROS学习-理解ROS Services 和 Parameters
ROS学习-理解ROS Services 和 Parameters
193 0
ROS学习-理解ROS Services 和 Parameters
ROS学习-理解ROS话题
ROS学习-理解ROS话题
453 0
ROS学习-理解ROS话题
|
C++ Python
ROS学习-理解ROS节点
ROS学习-理解ROS节点
231 0
ROS学习-理解ROS节点
|
传感器 数据可视化 机器人
ROS学习-下一步探索方向
ROS学习-下一步探索方向
91 0
ROS学习-roswtf入门
ROS学习-roswtf入门
129 0

推荐镜像

更多