醋醋百科网

Good Luck To You!

ROS2 Jazzy:启动多个节点

目标

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

背景知识

在大多数入门教程里,每当运行一个新节点时,你都需要打开新的终端。当你构建更复杂的系统,同时运行越来越多的节点时,不断打开终端并重新输入配置细节会变得十分繁琐。

启动文件能让你同时启动并配置多个包含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命令以类似的方式运行多个节点并设置它们的配置。


关注【智践行】公众号,发送 【机器人】 获得机器人经典学习资料

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言