目标
使用命令行工具一次性启动多个节点。
背景知识
在大多数入门教程里,每当运行一个新节点时,你都需要打开新的终端。当你构建更复杂的系统,同时运行越来越多的节点时,不断打开终端并重新输入配置细节会变得十分繁琐。
启动文件能让你同时启动并配置多个包含ROS2节点的可执行文件。
使用ros2 launch命令运行单个启动文件,就能一次性启动整个系统所有的节点及其配置。
前提条件
往常一样,在每次打开新终端时,别忘了对ROS2进行环境变量设置。
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/jazzy/setup.bash
任务
运行launch文件
打开一个新终端并运行以下命令:
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文件。
这将运行两个海龟仿真节点:
目前,你无需担心这个launch文件的具体内容。你可以在RO2启动教程中找到更多关于ROS2启动的信息。
(可选)控制海龟仿真节点
现在这些节点已经在运行了,你可以像控制其他ROS2节点一样控制它们。例如,你可以通过打开另外两个终端并运行以下命令,让两只海龟朝相反的方向移动:
在第二个终端中运行:
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}}"
运行这些命令后,你应该会看到类似下面的画面:
总结
到目前为止,你所做的工作的意义在于,你用一个命令运行了两个海龟仿真节点。一旦你学会编写自己的launch文件,就可以用ros2 launch命令以类似的方式运行多个节点并设置它们的配置。
关注【智践行】公众号,发送 【机器人】 获得机器人经典学习资料