1. roslaunch 命令
roslaunch 命令允许我们一次启动 launch 文件中定义的多个 ROS 节点,启动参数等在启动文件(launch 文件)中配置,并且如果系统之前没有启动 roscore,则 roslaunch 会自动启动它。
roslaunch 的命令行用法如下:
roslaunch [package] [filename.launch]
例如:
roslaunch beginner_tutorials turtlemimic.launch
其中 beginner_tutorials 是 turtlemimic.launch 文件中定义的一个节点,那 launch 文件是什么呢?我们来看下。
2. 解析 launch 文件
简单来说 launch 文件就是一堆节点和参数的集合,使用 launch 文件的目的是为了一键启动。因为目前运行在机器人上的 ROS 系统一般都要同时运行多个节点,如果我们开机启动时,一个一个的输入命令来启动每一个节点,想想就可怕,所以 ROS 系统就给我们提供了这么一个 launch 文件,可以方便我们将要启动的节点和对应的参数全部写到这个文件中,然后使用 roslaunch 命令一键启动!
一个 lanunch 文件例子:
<launch>
<!-- local machine already has a definition by default.
This tag overrides the default definition with
specific ROS_ROOT and ROS_PACKAGE_PATH values -->
<machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
<!-- a basic listener node -->
<node name="listener-1" pkg="rospy_tutorials" type="listener" />
<!-- pass args to the listener node -->
<node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" />
<!-- a respawn-able listener node -->
<node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" />
<!-- start listener node in the 'wg1' namespace -->
<node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" />
<!-- start a group of nodes in the 'wg2' namespace -->
<group ns="wg2">
<!-- remap applies to all future statements in thi