6、rqt_console和roslaunch

Posted by pzque on 2016-04-14     

一、准备

确保你已经安装了rqt和turtlesim包,没有的话,使用以下命令安装:

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

请用你所使用的版本(比如indigo、jade)代替<distro>

二、使用rqt_console and rqt_logger_level命令

rqt_console连接着ROS的日志框架,可以查看节点的输出 rqt_logger_level 则可以调整节点输出信息的详细级别(DEBUG, WARN, INFO, and ERROR)。

现在我们使用rqt_console查看小海龟节点的日志输出,使用rqt_logger_level调整日志输出级别。

在启动小海龟之前,先在两个终端分别启用两条命令:

1
rosrun rqt_console rqt_console

1
rosrun rqt_logger_level rqt_logger_level

你将看到:

rqt_console

和:

rqt_logger_level

然后我们启动小海龟:

1
rosrun turtlesim turtlesim_node

图形界面的操作很简单,不再细说,放个链接:ROS wiki

1、信息优先级

各种级别的优先级由上到下越来越低:

1
2
3
4
5
Fatal
Error
Warn
Info
Debug

现在我们可以按Ctrl-C退出小海龟了,

2、使用roslaunch

roslaunch可以启动launch文件内定义的所有节点,用法:

1
roslaunch [package] [filename.launch]

首先进入我们前一步创建的beginner_tutorials包:

1
roscd beginner_tutorials

如果你已经把它删除而且忘记怎么创建包的话,请参阅本系列的最前面两篇文章。

然后创建并进入launch文件夹:

1
2
mkdir launch
cd launch

3、launch文件

创建一个turtlemimic.launch文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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>

4、launch文件解释

1
<launch>

这是一个xml文件,它首先以一个launch标签开头,以表明它是一个launch文件。

1
2
3
4
5
6
7
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>

<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>

然后使用命名空间ns标签创建了两个组,分别命名为turtlesim1turtlesim2,命名空间内都只有一个名为sim的海龟节点。而两个节点位于不同的命名空间从而避免了命名冲突。

1
2
3
4
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>

然后我们启动了mimic节点,它的topic输入输出分别被重命名为turtlesim1turtlesim2。以这种方式可以令turtlesim2模仿turtlesim1

1
</launch>

最后是launch文件的结束标签。

5、roslaunching

现在我们可以使用roslaunch命令启动这个launch文件了:

1
roslaunch beginner_tutorials turtlemimic.launch

可以看到两只龟已经启动起来了。

在一个新终端里,我们向turtlesim1发送信息:

1
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

然后就可以看到海龟2模仿海龟1开始转圈。

我们可以使用rqt_graph命令查看节点关系图来更好地理解两个节点的关系:

1
rqt_graph

rqt_graph

可以看到micmic节点起到一个中继的作用,它将turtlsim1发布的信息发布给turtlesim2,从而使turtlesim2模仿turtlesim1的运动轨迹。