ROS学习笔记(七)学会使用rqt_console 和 roslaunch

**简介:**本章学习如何使用rqt_console以及rqt_logger_level来debug,以及如何使用roslaunch一次性打开多个节点

1.所需工具包
运行以下命令安装所需要的工具包

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

2.使用rqt_console和rqt_logger_level
rqt_console方便我们查看节点输出日志
rqt_logger_level方便我们调整logger的优先级来确定要显示哪些信息

2.1分别运行rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level打开这两个节点,会弹出两个窗口
在这里插入图片描述
在这里插入图片描述
2.2 接着运行rosrun turtlesim turtlesim_node打开乌龟节点。
会发现在console串口多了一行信息
在这里插入图片描述
2.3 命令行输入rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'让小乌龟一直往右走,直到撞墙。
这时候console会一直显示warning信息。
在这里插入图片描述
我们可以通过在logger_level里调整turtlesim节点logger优先级来控制要输出哪些信息,优先级有以下几种级别,从上到下优先级逐渐降低。

Fatal
Error
Warn
Info
Debug

如果我们在logger_level里把节点turtlesim里的日志记录器ros.turlesim优先级设为debug,那么所有优先级等于或高于debug的日志信息都能显示,带来的直接后果就是console里面既输出了debug信息,也输出了warn信息。如果设为warn,那么console只输出了warn信息。如果设为error,那么什么信息都不显示。

3.使用roslaunch
3.1 用法
roslaunch可以执行一个launch文件,根据launch文件里面的内容执行相应操作,因此我们就可以通过把多个命令放进launch文件来实现一句命令打开多个节点的操作。

roslaunch [package] [filename.launch]

3.2 准备工作:创建工作空间和package

  • 创建和编译catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
  • 创建catkin package
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
  • 创建文件夹
roscd beginner_tutorials
mkdir launch
cd launch

3.3新建并编辑launch文件

gedit 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>

接着载入该文件

roslaunch beginner_tutorials turtlemimic.launch

弹出两只小乌龟,用rosnode list查询节点得到有四个节点在运行

/mimic
/rosout
/turtlesim1/sim
/turtlesim2/sim

终端输入rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'发现两只小乌龟都在转圈圈

3.4 launch文件内容分析

  • 文件头尾表示该文件是launch文件
<launch>
...
<launch>
  • 新建两个有不同命名空间的组(group),命名空间的名字分别为turtlesim1turtlesim2,这两个组里面分别有一个在package turlesim里的turtlesim_node节点,名字都为sim
   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>
  • 打开turtlesim里的mimic节点并取名为mimic,让mimic的输入是乌龟1号的输出,得到输入之后输出给乌龟2号,以达到乌龟2号模仿乌龟1号的效果。remap from ... to ...起到了规定输入输出的作用。
  11   <node pkg="turtlesim" name="mimic" type="mimic">
  12     <remap from="input" to="turtlesim1/turtle1"/>
  13     <remap from="output" to="turtlesim2/turtle1"/>
  14   </node>
  • 查看节点之间的信号流图
rqt_graph

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhelijun/article/details/86538502
今日推荐