目标:使用一个命令行工具同时启动多个节点。教程级别:入门级时间: 5 分钟
目录
- 背景
- 前置条件
- 任务
- 运行启动文件
- (可选)控制 Turtlesim 节点
- 总结
- 后续步骤
本教程需要使用的命令如下:
$ ros2 launch turtlesim multisim.launch.py
$ 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}}"
$ ros2 launch turtlesim multisim.launch.py$ 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}}"
背景
在大多数入门教程中,你每运行一个新节点就要打开一个新终端。当你创建更复杂的系统,同时运行越来越多的节点时,打开终端并重新输入配置细节变得非常繁琐。
启动文件允许你同时启动和配置多个包含 ROS 2 节点的可执行文件。
使用ros2 launch命令运行一个启动文件,就可以一次性启动你的整个系统——包括所有节点及其配置。
前置条件
在开始这些教程之前,请按照 ROS 2 安装页面上的说明安装 ROS 2。本教程中使用的命令假设你按照二进制包安装指南(Linux 为 deb 包)进行安装。如果你从源码构建,也可以继续学习,但设置文件的路径可能会不同。如果你从源码安装,也将无法使用sudo apt installros-<distro>-<package>命令(在初级教程中频繁使用)。
如果你使用的是 Linux 并且不熟悉 shell,本教程会有所帮助。和往常一样,别忘了在打开的每个新终端中加载 ROS 2 环境。
任务
运行启动文件,打开一个新终端并运行:
$ ros2 launch turtlesim multisim.launch.py该命令将运行以下启动文件:
from launch import LaunchDescriptionimport launch_ros.actionsdef 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 来创建启动文件。你可以在使用 XML、YAML和 Python 编写 ROS 2 启动文件中,查看这些不同 ROS 2 启动格式的对比。
运行两个 turtlesim 节点:
现在,不必担心这个启动文件的内容。可以在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}}"运行这些命令后,你应该会看到类似下面的结果:
总结
到目前为止你所做的事情的重要意义在于:你只用一个命令就运行了两个 turtlesim 节点。一旦你学会编写自己的启动文件,你就可以用类似的方式,通过ros2 launch命令运行多个节点并设置它们的配置。
关于 ROS 2 启动文件的更多教程,请参阅启动文件教程主页面。
后续步骤
在下一个教程记录和回放数据中,你将学习另一个有用的工具:ros2 bag。
本文档完整翻译自 ROS 2 Lyrical 官方文档,仅用于学习交流。
夜雨聆风