首先,在正式开始这一节内容之前,我们需要安装一些必要的功能包:

sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim

接下来,我们使用rqt_consolerqt_logger_level

rqt_console依附于ROS的日志框架,用于显示来自节点的输出。

rosrun rqt_console rqt_console

输出结果为:

![Screenshot from 2017-10-16 20:14:43](/home/liuqiang/Pictures/Screenshot from 2017-10-16 20:14:43.png)

rqt_logger_level允许我们更改节点运行时的日志的详细级别,包括:DEBUG,WARN,INFO和ERROR

rosrun rqt_logger_level

输出结果为:

![Screenshot from 2017-10-16 20:14:59](/home/liuqiang/Pictures/Screenshot from 2017-10-16 20:14:59.png)

我们可以通过上边第二幅图更改节点日志输出的级别,然后通过节点发布消息在第一个图中查看各节点输出日志的级别。

日志按照重要性级别,分为如下的几个层级:

Fatal
Error
Warn
Info
Debug

Fatal拥有最高的优先级,而Debug拥有最低的优先级。

使用roslaunch

首先,我们需要通过ctrl + c来终止相关节点,然后接下来,我们将讲解如何通过.launch文件来一次启动多个节点,并且让一个节点模仿另一个节点的相关行为。

启动节点的命令格式如下:

roslaunch [package] [filename.launch]

接下来,我们需要进入到我们在第一节里面创建的beginner_tutorials功能包中:

cd catkin_ws
source devel/setup.bash
roscd beginner_tutorials

然后,我们需要在该功能包里面创建一个文件夹:

mkdir launch
cd 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>

从上面的启动文件中可以看出,我们定义了两个group,每一个group有一个命名空间,命名空间分别是turtlesim1turtlesim2,这就允许我们启动两个仿真器而没有名字冲突。

接着,我们启动了名字为mimic的节点,伴随着话题的输入和输出被重命名为turtlesim1turtlesim2,这个重命名将导致turtlesim2模仿turtlesim1

现在,我们来启动turtlemimic.launch文件:

roslaunch beginner_tutorials turtlemimic.launch

上面的命令将运行两个turtlesim节点,接着,我们需要新开一个终端,输入如下的命令:

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来查看节点之间同通信情况:

rqt_graph

输出结果为: