启动节点

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

教程级别: 初学者

时间: 5 分钟

背景

在大多数入门教程中,您都会为运行的每个新节点打开新终端。 随着您创建更复杂的系统,越来越多的节点同时运行,打开终端并重新输入配置详细信息变得乏味。

启动文件允许您同时启动和配置包含 ROS 2 节点的多个可执行文件。

使用“ros2 launch”命令运行单个启动文件将同时启动整个系统 - 所有节点及其配置。

先决条件

在开始这些教程之前,请按照 ROS 2 安装 页面上的说明安装 ROS 2。

本教程中使用的命令假设您遵循了操作系统的二进制包安装指南(Linux 的 deb 包)。 如果您从源代码构建,您仍然可以继续,但安装文件的路径可能会有所不同。 如果您从源代码安装,您也无法使用 sudo apt install ros-<distro>-<package> 命令(在初学者级别教程中经常使用)。

如果您使用的是 Linux 并且还不熟悉 shell,本教程 <https://www.linux.com/training-tutorials/bash-101-working-cli/> 会有所帮助。

任务

运行启动文件

打开一个新终端并运行:

ros2 launch turtlesim multisim.launch.py

此命令将运行以下启动文件:

# turtlesim/launch/multisim.launch.py

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'),
    ])

Note

上面的启动文件是用 Python 编写的,但您也可以使用 XML 和 YAML 创建启动文件。 您可以在 使用 Python、XML 和 YAML 生成 ROS 2 启动文件 中查看这些不同 ROS 2 启动格式的比较。

这将运行两个 turtlesim 节点:

../../../_images/turtlesim_multisim.png

现在,不必担心此启动文件的内容。 您可以在 ROS 2 启动教程 中找到有关 ROS 2 启动的更多信息。

(可选)控制 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}}"

运行这些命令后,您应该看到类似以下内容:

../../../_images/turtlesim_multisim_spin.png

摘要

到目前为止,您所做工作的意义在于,您已经使用一个命令运行了两个 turtlesim 节点。 一旦您学会编写自己的启动文件,您将能够以类似的方式使用 ros2 launch 命令运行多个节点并设置它们的配置。

有关 ROS 2 启动文件的更多教程,请参阅 main launch file tutorial page

下一步

在下一个教程 记录和回放数据 中,您将了解另一个有用的工具 ros2 bag