Skip to content

启动多个节点

目标: 使用命令行工具一次性启动多个节点。

教程级别: 初级

预计用时: 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。

打开一个新终端,运行以下命令:

Terminal window
$ ros2 launch turtlesim multisim.launch.py

该命令会运行以下 launch 文件:

from launch import LaunchDescription
import 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 节点:

turtlesim 多模拟器

目前不必深究这个 launch 文件的具体内容。你可以在 ROS 2 launch 教程中找到更多相关信息。

既然这些节点已经在运行,就可以像控制其他 ROS 2 节点一样控制它们。 例如,你可以打开两个额外的终端并运行以下命令,让两只乌龟朝相反方向移动。

在第二个终端中:

Terminal window
$ 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}}"

在第三个终端中:

Terminal window
$ 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 多模拟器旋转

本教程的核心在于:用一条命令运行了两个 turtlesim 节点。 学会编写自己的 launch 文件后,你就能用 ros2 launch 命令以类似的方式运行多个节点并完成配置。

有关 ROS 2 launch 文件的更多内容,请参阅 launch 文件主教程页面。

在下一个教程中,你将学习另一个有用的工具:ros2 bag。