【ROS2】初级:CLI工具- 启动节点

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

 教程级别:初学者

 时间:5 分钟

 目录

  •  背景

  •  先决条件

  •  任务

    • 运行启动文件

    • 控制 Turtlesim 节点(可选)

  •  摘要

  •  下一步

 背景

在大多数入门教程中,您每运行一个新节点就会打开一个新终端。随着您创建的系统越来越复杂,同时运行的节点越来越多,不断打开终端并重新输入配置细节变得很繁琐。

启动文件允许您同时启动和配置包含 ROS 2 节点的多个可执行文件

使用 ros2 launch 命令运行单个启动文件将一次性启动您的整个系统——所有节点及其配置。

 先决条件

在开始这些教程之前,请按照 ROS 2 安装页面上的说明安装 ROS 2。

本教程中使用的命令假设您已按照操作系统的二进制包安装指南(Linux 的 Debian 包)进行了安装。如果您是从源代码构建的,仍然可以继续操作,但您的设置文件的路径可能会有所不同。如果您从源代码安装,您也无法使用 sudo apt install ros-<distro>-<package> 命令(在初级教程中经常使用)。

如果您使用的是 Linux 并且还不熟悉 shell,本教程将会有所帮助。

 任务

1. 运行启动文件

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

ros2 launch turtlesim multisim.launch.py

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

f4f02ea6816430e5e667db54c2d4aee5.png

#!/usr/bin/env python3
# 这是一个Python脚本的shebang行,指定使用Python 3解释器执行脚本


# Copyright 2023 Open Source Robotics Foundation, Inc.
# 版权声明,表明该代码的版权归Open Source Robotics Foundation, Inc.所有


#
# Licensed under the Apache License, Version 2.0 (the "License");
# 根据Apache许可证2.0版(“许可证”)授权
# you may not use this file except in compliance with the License.
# 除非符合许可证,否则你不能使用这个文件
# You may obtain a copy of the License at
# 你可以在以下网址获取许可证副本
#
#     http://www.apache.org/licenses/LICENSE-2.0
# 许可证的URL地址
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# 除非适用法律要求或书面同意,依据许可证分发的软件按“原样”提供
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# 不提供任何明示或暗示的担保或条件
# See the License for the specific language governing permissions and
# limitations under the License.
# 详见许可证了解具体的权限和限制


from launch import LaunchDescription
# 从launch模块导入LaunchDescription类
import launch_ros.actions
# 导入launch_ros.actions模块


def generate_launch_description():
# 定义一个名为generate_launch_description的函数
    return LaunchDescription([
    # 返回一个LaunchDescription对象
        launch_ros.actions.Node(
        # 创建一个Node对象
            namespace='turtlesim1', package='turtlesim',
            # 设置命名空间为'turtlesim1',包名为'turtlesim'
            executable='turtlesim_node', output='screen'),
            # 可执行文件为'turtlesim_node',输出到屏幕
        launch_ros.actions.Node(
        # 创建另一个Node对象
            namespace='turtlesim2', package='turtlesim',
            # 设置命名空间为'turtlesim2',包名为'turtlesim'
            executable='turtlesim_node', output='screen'),
            # 可执行文件为'turtlesim_node',输出到屏幕
    ])
    # 结束LaunchDescription对象的定义

 便条

上述启动文件是用 Python 编写的,但您也可以使用 XML 和 YAML 来创建启动文件。您可以在《使用 Python、XML 和 YAML 进行 ROS 2 启动文件》中看到这些不同 ROS 2 启动格式的比较。

这将运行两个 turtlesim 节点:

9c287d172444d38a18cb23948a6d3bb0.png

目前,不用担心这个启动文件的内容。您可以在 ROS 2 启动教程中找到更多关于 ROS 2 启动的信息。https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Launch/Launch-Main.html

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

执行这些命令后,您应该会看到类似以下内容:

5742203361638d1fbcd0bbe825c84f7d.png

摘要

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

有关 ROS 2 启动文件的更多教程,请参见主启动文件教程页面https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Launch/Launch-Main.html。

 下一步

在下一个教程中,记录和回放数据https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.html,您将了解另一个有用的工具, ros2 bag 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值