在笔记四中,我们理解了ros话题的意思,并且学习了ros话题常用的命令,接下来,我们学习使用rqt_console和rqt_logger_level对ros进行调试。
rqt_console属于ros日志框架的一部分,是用来显示节点输出信息的。而rqt_logger_level允许我们修改节点运行时输出信息的日志等级(loggers level)(包括DEBUG、WARN、INFO、ERROR)。
其中有一个专业名词叫日志等级,那日志等级是什么意思呢?为什么要修改日志的等级呢?
首先,日志的意思是记录系统运行过程中的重要信息的文件,ok,既然日志是记录重要信息的文件,那日志等级是啥意思呢?
日志等级的意思是:在ros运行过程中,系统会给出信息,这些信息的重要性按等级排序,我们预先设置的日志等级是哪一个,最终我们就会输出我们预先设置好的等级信息。通俗一点讲就是:这就是一个日志过滤器,可以将低等级的信息筛选掉,留下重要的,需要知道的信息。
-------------------------------------------------------------------------------------------------------
ok,现在,我们理解了rqt_console和rqt_logger_level的意思以及用途,接下来,我们尝试理解roslaunch的意思以及用途。
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>
其中的意思,如下表格所示:
group ns | 设置命名空间 |
node pkg | 节点包 |
name | 节点名称 |
type | 节点类型(与节点话题类似) |
remap | 允许在master中对话题进行重映射,以解决通信问题。 |
通过这段代码,我们设置了两个命名空间,并在两个命名空间中分别设置了一样的节点包、节点名称以及节点类型,可以使我们同时打开两个一样的节点而不会产生命名冲突,在最后,启动了模仿节点,让turtlesim2模仿turtlesim1。
-------------------------------------------------------------------------------------------------------------
既然知道了launch文件的作用了,那么我们应该如何去生成一个launch文件呢?
在笔记二中,我们创建了一个功能包test_pkg,接下来,我们将launch文件储存在test_pkg中。
首先,进入test_pkg功能包目录下:
roscd test_pkg
然后,创建一个launch的目录
mkdir launch
cd launch
接着,创建一个名为turtlemimic.launch的文件
touch turtlemimic.launch
接着,打开tutlemimic.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>
然后,按下save,并在终端里运行turtlemimic.launch文件
roslaunch test_pkg turtlemimic.launch
最终,我们能看见有两个turtlesim的小乌龟显示出来:
至此,我们已经理解了rqt_console和rqt_logger_level日志等级的意思和使用方法以及roslaunch的意思以及使用方法!!!!φ(゜▽゜*)♪