Skip to main content

启动节点教程

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

教程级别: 初学者

时间: 5 分钟

背景

在大多数入门教程中,我们为每个新运行的节点都打开了新的终端。随着我们创建越来越复杂的系统,同时运行的节点越来越多,打开终端并重新输入配置细节变得非常繁琐。

启动文件允许我们同时启动和配置多个包含 ROS 2 节点的可执行文件。使用ros2 launch命令运行单个启动文件将一次性启动我们的整个系统——所有节点及其配置。

先决条件

在开始这些教程之前,请按照 《配置环境变量并熟悉基础工具》 上的说明安装 ROS 2。

如果你使用的是 Linux,并且还不熟悉 shell,这个教程会有所帮助。

一如既往,不要忘记在每个新开的终端中初始化 ROS 2 环境

任务

运行一个启动文件

打开一个新的终端并运行:

ros2 launch turtlesim multisim.launch.py
info

File location: /opt/ros/kilted/share/turtlesim/launch/multisim.launch.py.

Have an investigation of directory structure of ROS 2.

Hint: /opt/ros/kilted/.

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


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

注意

上述启动文件是用 Python 编写的,但我们也可以使用 XML 和 YAML 来创建启动文件。

更多内容请自行搜索、研究、学习。

这将运行两个 turtlesim 节点:

turtlesim_multisim

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

总结

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

下一步

在下一个教程记录与回放数据中,我们将学习另一个有用的工具ros2 bag

vim:filetype=markdown