ROS学习笔记(五)
rqt_console
这部分我们将ros_console与rqt_logger_level作为工具来讲解如何通过roslaunch启动多节点程序。建议先终止前面各环节的终端窗口后,在新窗口中执行相关操作:
$ roscore
将其挂到后台或者重新开一个新的terminal,启动我们的工具:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
我们还可以这样直接启动他们:
$ rqt_console
$ rqt_logger_level


rqt_console与ROS日志框架实现了集成关系,并支持显示节点的日志信息。rqt_logger_level参数提供了设置日志输出级别(包括DEBUG、WARN、INFO及ERROR)的选择项,默认设置为INFO级别的日志输出。现在让我们启动小乌龟节点来对比这两个工具的表现:
$ rosrun turtlesim turtlesim_node

让我们改变一下日志显示的级别到WARN:

既然日志要看WARN,那我们肯定要制造一点WARN嘛 XD :
$ 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}}'

OK,请让我们一起了解不同类型的系统日志等级:包括 Fatal、Error、Warning、Info 和 Debug 等等类别。这些等级按照从高到低排列顺序依次为 Fatal 最高、Debug 最低。当我们将 logging 级别设定为较低优先级时可查看所有高于或等于当前级别的日志记录。例如将 Info 级别设为 logging 级别时将能够捕获并显示 Fatal、Error、Warning 以及 Info 四个等级的日志信息
roslaunch
roslaunch指令用于启动由特定启动文件配置的节点运行。此操作相当于开机启动,并用于查看其使用方法。
用法:$ roslaunch [package] [filename.launch]
我们先设置一个文件夹用于存储launch文件。然而这样做并非必要操作。实际上,默认情况下roslaunch程序能够自行识别并选择最适合的launch脚本。不过这种做法能带来更为直观的操作体验:
$ roscd beginner_tutorials
$ mkdir launch
$ cd launch
$ gedit 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>
以下是改写后的文本
$ roslaunch beginner_tutorials turtlemimic.launch
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

最后我们要看看节点之间的通信情况,看看是如何实现这个功能的:
$ rqt_graph

通过查看图形可以看出,具体来说,turtlesim1首先订阅了消息,并将该消息转发给mimic;随后mimic又将该消息进一步转发给了turtlesim2。
