ROS机器人编程实战
上QQ阅读APP看书,第一时间看更新

2.6 理解ROS启动(launch)文件

在2.5节中我们创建了多个节点,并在不同的shell中执行了这些节点。我们不妨设想一下,如果20个节点在各自的shell中执行,将会是一种多么糟糕的体验。好在我们可以使用启动(launch)文件来改变这种情形,通过使用扩展名为.launch的文件来加载配置,就可以实现在同一个命令行(shell)中执行多个节点。启动文件是在ROS中运行多个节点时非常有用的一个功能。

为了了解ROS启动文件,我们要在chapter2_tutorials包中创建一个新的文件夹,如下所示:

$ roscd chapter2_tutorials/
$ mkdir launch
$ cd launch
$ vim chapter2.launch

在启动文件chapter2.launch中添加以下代码:

<?xml version="1.0"?>
<launch>
   <node name ="example1a" pkg="chapter2_tutorials" type="example1a"
output="screen"/>
   <node name ="example1b" pkg="chapter2_tutorials" type="example1b"
output="screen"/>
</launch>

这个文件很简单,但是如果你愿意,也可以将其写成一个非常复杂的文件。例如控制一个完整的机器人,比如PR2。它们可以是真的机器人或者是可以在ROS模拟的机器人。

ROS启动文件是一个扩展名为.launch的XML文件,其中包含一个launch标签。在这个标签中,我们还可以找到node标签。它可以启动一个功能包中的节点。例如,chapter2_tutorials功能包中的example1a节点。

chapter2.launch文件将启动两个节点—— 本章的前两个示例:example1a和example1b。

使用如下所示的命令来启动这个文件:

$ roslaunch chapter2_tutorials chapter2.launch

我们将在屏幕上看到类似图2-18所示的内容。

图2-18 ROS启动

图2-18中列出了正在运行的节点。当我们要运行一个启动文件时,无须在roscore命令之前执行它,roslaunch可以替我们完成这个操作。