ROS2 中的 launch 文件入门的 6 个疑问

本文介绍了ROS2中launch文件的作用、使用方法、内容构成、编写方式,以及如何传递参数和使用remap功能。通过实例展示了如何创建、启动和调试launch文件,帮助初学者理解ROS2的节点管理和话题映射。
摘要由CSDN通过智能技术生成

本文记录了 ROS2 中 launch 文件学习过程中我个人觉得重要的 6 个基本问题,和大家分享,希望可以帮到初学者。

疑问1:launch 文件有什么用?

通过 launch 文件,ROS2 可以同时启动许多节点,这样简化了用命令行去多次启动不同的 Node。

疑问2:launch 文件怎么用?

完整的命令:

ros2 launch <package_name> <launch_file_name>

也可以直接启动 launch 文件,像这样:

ros2 launch turtlesim_mimic_launch.py

turtlesim_mimic_launch.py 是一个 python 文件,在里面定义了一个 launch 文件的内容。

但 ROS1 launch 是不支持 py 文件的,而事实上 launch 文件在 ROS2 中有 3 种格式可以实现:

  1. python 脚本
  2. xml 文件
  3. yaml 文件

疑问3:launch 文件里面应该有什么?

node 相关

launch file 文件当中最重要的是 node 信息,它指定了包的信息、node 的名字还有可执行文件的路径。

<node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim2">
    <param name="background_r" value="$(var background_r)"/>
    <param name="background_g" value="$(var background_g)"/>
    <param name="background_b" value="$(var background_b)"/>
  </node>

include

include 可以在一个 launch file 中包含另外的 launch file

group

group 可以把多个 node 组合在一起

疑问4:如何编写一个 launch file?

无论是 python、xml 还是 yaml,编写 launch file 的步骤差不多一样。

  1. 设置命令行参数的默认值,
  2. 设置 launch file 的包含关系,通过 标签
  3. 设置 Node 信息,包括 name、namespace、parameter
  4. 如果需要设置 remmaping 则设置 remapping 关系

官方文档有出示个一个例子

# example.launch.py

import os

from ament_index_python import get_package_share_directory

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.actions import IncludeLaunchDescription
from launch.actions import GroupAction
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration
from launch.substitutions import TextSubstitution
from launch_ros.actions import Node
from launch_ros.actions import PushRosNamespace


def generate_launch_description():

    # args that can be set from the command line or a default will be used
    background_r_launch_arg = DeclareLaunchArgument(
        "background_r", default_value=TextSubstitution(text="0")
    )
    background_g_launch_arg = DeclareLaunchArgument(
        "background_g", default_value=TextSubstitution(text="255")
    )
    background_b_launch_arg = DeclareLaunchArgument(
        "background_b", default_value=TextSubstitution(text="0")
    )
    chatter_ns_launch_arg = DeclareLaunchArgument(
        "chatter_ns", default_value=TextSubstitution(text
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值