启动多个节点
目标: 使用命令行工具一次性启动多个节点。
教程级别: 初级
预计用时: 5 分钟
在大多数入门教程中,每运行一个新节点都需要打开一个新的终端。 随着系统越来越复杂、同时运行的节点越来越多,反复打开终端并重新输入配置信息会变得非常繁琐。
launch 文件可以同时启动和配置多个可执行文件,每个可执行文件中包含 ROS 2 节点。
使用 ros2 launch 命令运行一个 launch 文件,就能一次性启动整个系统——包括所有节点及其配置。
在开始本教程之前,请按照 ROS 2 安装页面上的说明安装 ROS 2。
本教程中使用的命令假定你按照操作系统的二进制包安装指南(Linux 上的 deb 包)进行了安装。
如果你是从源码编译安装的,也可以继续学习,但 setup 文件的路径可能会有所不同。
此外,你也无法使用 sudo apt install ros-<distro>-<package> 命令(该命令在初级教程中经常出现)。
如果你使用的是 Linux 且对 shell 还不熟悉,这个教程 会对你有所帮助。
和之前一样,每次打开新终端时别忘了 source ROS 2。
运行 launch 文件
Section titled “运行 launch 文件”打开一个新终端,运行以下命令:
$ ros2 launch turtlesim multisim.launch.py该命令会运行以下 launch 文件:
from launch import LaunchDescriptionimport launch_ros.actions
def generate_launch_description(): return LaunchDescription([ launch_ros.actions.Node( namespace='turtlesim1', package='turtlesim', executable='turtlesim_node', output='screen'), launch_ros.actions.Node( namespace='turtlesim2', package='turtlesim', executable='turtlesim_node', output='screen'), ])注意:上面的 launch 文件是用 Python 编写的,但你也可以使用 XML 或 YAML 来创建 launch 文件。关于这些格式之间的区别,请参阅 ROS 2 launch 文件不同格式的对比。
这将运行两个 turtlesim 节点:

目前不必深究这个 launch 文件的具体内容。你可以在 ROS 2 launch 教程中找到更多相关信息。
(可选)控制 turtlesim 节点
Section titled “(可选)控制 turtlesim 节点”既然这些节点已经在运行,就可以像控制其他 ROS 2 节点一样控制它们。 例如,你可以打开两个额外的终端并运行以下命令,让两只乌龟朝相反方向移动。
在第二个终端中:
$ ros2 topic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"在第三个终端中:
$ ros2 topic pub /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"运行这些命令后,你应该会看到类似下面的效果:

本教程的核心在于:用一条命令运行了两个 turtlesim 节点。
学会编写自己的 launch 文件后,你就能用 ros2 launch 命令以类似的方式运行多个节点并完成配置。
有关 ROS 2 launch 文件的更多内容,请参阅 launch 文件主教程页面。
在下一个教程中,你将学习另一个有用的工具:ros2 bag。