【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 时包含其标签内部
    -->
    

博客参考链接

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个ROSlaunch文件,你可以按照以下步骤进行操作: 1. 首先,在你的ROS工作空间中找到你想要创建launch文件的功能包。可以使用命令`cd <workspace>/src/<package_name>`进入该功能包的目录。 2. 在功能包的目录下创建一个名为`launch`的文件夹。你可以使用命令`mkdir launch`来创建。 3. 进入`launch`文件夹,使用文本编辑器创建一个新的launch文件。你可以使用命令`touch <launch_file_name>.launch`来创建一个空的launch文件。 4. 打开这个新创建的launch文件,并按照你的需求编写launch文件的内容。你可以参考ROSlaunch文件语法和示例来编写你的launch文件。在launch文件中,你可以指定要启动的节点、节点的参数配置以及节点之间的关系等。 5. 保存并关闭launch文件。 6. 现在,你可以使用`ros2 launch`命令来启动你的launch文件。使用命令`ros2 launch <package_name> <launch_file_name>`,将会启动整个系统,包括所有在launch文件中指定的节点和它们的配置。 总结起来,要创建一个ROSlaunch文件,你需要在功能包中创建一个名为`launch`的文件夹,并在其中创建一个launch文件。然后,按照你的需求编写launch文件的内容,并使用`ros2 launch`命令来启动该launch文件。 #### 引用[.reference_title] - *1* *3* [ROS2入门教程—创建一个launch文件](https://blog.csdn.net/qq_29923461/article/details/120404577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ROS学习(4)——launch文件编写](https://blog.csdn.net/bulletstart/article/details/130794565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值