首先,在正式开始这一节内容之前,我们需要安装一些必要的功能包:
sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim
接下来,我们使用rqt_console
和rqt_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有一个命名空间,命名空间分别是turtlesim1
和turtlesim2
,这就允许我们启动两个仿真器而没有名字冲突。
接着,我们启动了名字为mimic的节点,伴随着话题的输入和输出被重命名为turtlesim1
和turtlesim2
,这个重命名将导致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
输出结果为: