ROS 2 Iron 教程 第一章 CLI Tools 第九节 启动节点
前言
本系列文章是由笔者翻译自ROS 2 官方教程。笔者水平有限,如有错误,还请读者指正。
本节教程中部分代码为 Liunx下,请使用其他操作系统的读者前往原文查看。
背景
在先前的大多数介绍性教程中,我们几乎一直都在终端中运行节点。但当我们创建拥有更多节点同时运行的系统时,打开终端并重复输入配置信息将会变得冗杂。
启动文件允许我们同时配置并启动包含 ROS 2 节点的可执行文件。
使用ros2 launch
命令运行一个启动文件将会启动整个系统,包括所有的节点以及它们的配置文件。
先决条件
在开始跟随后续教程之前,确保你的 ROS 2 已经安装完成,详见 ROS 2 安装教程页面。
后续教程中使用的命令假定你安装了二进制软件包。如果你使用源代码安装,你仍可以继续,但启动文件的路径可能有所不同。如果你从源代码安装,你将无法使用sudo apt install ros-<distro>-<package>
命令(这在初学者教程中会被频繁使用)。
任务
Running a Launch File (运行启动文件)
打开一个新终端并运行:
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'),
])
注意:
上方的启动文件是由 Python 编写的,但你也可以使用 XML 和 YAML 来编写启动文件。有关于它们的差别,详见Using Python, XML, and YAML for ROS 2 Launch Files。
它将会运行两个 turtlesim 节点:
目前你可以不必关心启动文件的内容。关于启动文件的更多信息,详见:[ROS 2 launch tutorials](https://docs.ros.org/en/iron/Tutorials/Intermediate/Launch/Launch-Main.html)。
Control the Turtlesim Nodes (可选的 - 控制海龟节点)
既然这两个节点正在运行,你可以像其他 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
命令配置并运行多个节点。