【ROS 快速解决】launch 文件编写

  • 通过launch文件以及roslaunch命令可以一次性启动多个节点,并且可以设置丰富的参数
    • 通常存放路径:工作空间目录 / launch / xxx.launch
    • launch 文件本质是一个 xml 类型的文件,基本格式如下
      <launch>
      <node .../>  ## 最重要的标签
      <param .../>
      <rosparam .../>
      <include .../>
      <remap .../>
      <arg .../>
      <group>  </group>
      </launch>
      

  • _________________ <node> 标签:指定一个准备运行的ROS节点
    <node pkg="package_name" type="executable_node" name="node_name" args="$()" respawn="true" output="sceen">
    
    • pkg:节点所在功能包名称
    • type:可执行文件的名称
    • name:节点运行时的名称
    • args:传递命令行设置的参数
    • respawn:异常关闭后是否自动重启
    • output:是否将节点信息输出到屏幕

  • _________________ <param> 标签:实现传递参数的功能,运行时的参数,参数会存储在参数服务器中
    <param name="param_name" type="param_type" value="param_value" />
    <!-- param 标签可以嵌入到 node 标签中,以此来作为该 node 的私有参数 -->
    <node>
    	<param name="param_name" type="param_type" value="param_value" />
    </node>
    
    • name:参数名称
    • type:参数类型 double,str,int,bool,yaml
    • value:需要设置的参数值

  • _________________ <rosparam> 标签:从参数服务器上加载(load)、导出(dump)和删除(delete)YAML文件
    <!-- 加载package_name功能包下的example.yaml文件 -->
    <rosparam command="load" file="$(find package_name)/example.yaml">
    <!-- 导出example_out.yaml文件到package_name功能包下 -->
    <rosparam command="dump" file="$(find package_name)/example_out.yaml" />
    <!-- 删除参数 -->
    <rosparam command="delete" param="xxx/param">
    
    • command:功能类型(load、dump、delete)
    • file:参数文件路径
    • param:参数名称

  • _________________ <include> 标签:和编程语言中的include预处理类似,导入其他launch文件
    <include file="$(find package_name)/launch_file_name">
    
    • file:文件路径

  • _________________ <remap> 标签:实现节点名称的重映射
    <remap from="turtle1/cmd_vel" to="/cmd_vel" />
    <!-- remap 标签同样可以嵌入到 node 标签中,以此来作为该 node 的私有重映射 -->
    <node>
    	<remap from="turtle1/cmd_vel" to="/cmd_vel" />
    </node>
    

  • _________________ <arg> 标签:局部参数,启动时的参数,只在launch文件中有意义
    <arg name="arg_name" default="arg_default" />
    <arg name="arg_name" value="arg_value" />
    <!-- 命令行传递的 arg 参数可以覆盖 default,但不能覆盖 value。 -->
    

  • _________________ <group> 标签:可以将不同的节点放入不同的 namespace
    <!-- 用法1 -->
    <group ns="namespace_1">
        <node pkg="pkg_name1" .../>
        <node pkg="pkg_name2" .../>
        ...
    </group>
    
    <group ns="namespace_2">
        <node pkg="pkg_name3" .../>
        <node pkg="pkg_name4" .../>
        ...
    </group>
    <!-- 用法2 -->
    <!-- if = value:value 为 true 则包含内部信息 -->
    <group if="$(arg foo1)">
        <node pkg="pkg_name1" .../>
    </group>
    
    <!-- unless = value:value 为 false 则包含内部信息 -->
    <group unless="$(arg foo2)">
        <node pkg="pkg_name2" .../>
    </group>
    <!--
    	当 foo1 == true 时包含其标签内部
    	当 foo2 == false 时包含其标签内部
    -->
    

博客参考链接

<think>我们正在讨论ROS 2的launch文件编写。根据系统指令,我们需要使用正确的LaTeX格式,用中文回答,并生成相关问题。同时,回答要结构清晰,帮助用户逐步解决问题。 根据用户需求,用户想了解如何编写ROS 2的launch文件ROS 2的launch文件使用Python编写,与ROS 1的XML格式不同。我们将介绍基本结构、常用功能以及示例。 参考引用[1]中提到了ROS 1launch文件,但ROS 2已经改变,所以我们主要依据ROS 2的官方文档。 步骤: 1. 介绍ROS 2 launch文件的基本概念 2. 展示一个简单的launch文件示例 3. 解释常用功能(如启动节点、设置参数、包含其他launch文件等) 4. 提供更复杂的示例 注意:在回答中,所有行内数学表达式用$...$,独立公式用$$...$$,但本主题可能较少涉及数学公式,但如果有参数设置等,可以用行内格式。 生成相关问题放在最后。 开始回答:</think>### ROS 2 launch文件编写教程 ROS 2的launch系统使用**Python脚本**替代了ROS 1的XML格式,提供了更强大的编程能力。核心是通过`launch_ros`包实现节点管理、参数配置和依赖控制[^1]。以下是关键步骤: --- #### 一、基本结构 1. **导入模块** ```python from launch import LaunchDescription from launch_ros.actions import Node ``` 2. **定义生成函数** ```python def generate_launch_description(): return LaunchDescription([ # 节点和配置将添加在此处 ]) ``` --- #### 二、常用功能实现 1. **启动单个节点** ```python Node( package='包名', executable='可执行文件名', name='节点自定义名称', # 可选 output='screen' # 打印日志到终端 ) ``` 2. **设置参数** ```python Node( package='demo_pkg', executable='demo_node', parameters=[{'参数名': 值}] # 例如 {'max_speed': 2.0} ) ``` 3. **启动多个节点** 在`LaunchDescription`列表中添加多个`Node`对象: ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值