【ROS】launch文件中arg和param的区别

博客介绍了ROS系统中Param和arg的相关信息。Param是ROS系统使用的数值,存于parameter server,nodes可通过ros::param::get函数编程获取,用户也能通过rosparam获取;而arg仅在launch文件内部有意义,nodes不能直接获取其值。
  • Param是ROS系统使用的数值,存在parameter server上,nodes可通过ros::param::get函数编程得到,用户可通过rosparam获取。
  • arg仅在launch文件内部有意义,nodes不能直接获取它们的值。
### ROS 中 `launch` 文件Arg 使用方法 在 ROS ROS 2 的环境中,`<arg>` 或者其对应的 Python API 是一种机制,允许用户通过命令行传递参数给 launch 文件。这些参数可以在 launch 文件内部被其他组件(如节点或其他配置项)引用。 #### 命名空间与基本概念 - **Arg 定义**: `<arg name="parameter_name" default="value">` 表达了一个可选输入参数及其默认值。 - **参数引用**: 参数可以通过 `$()` 或 `${}` 进行解析,在 XML 文件中通常使用 `${}`[^3];而在 Python 脚本中,则会利用 `LaunchConfiguration` 来获取该参数的值[^2]。 --- #### XML 风格下的 Arg 示例 以下是基于传统 ROS `.launch` 文件的一个例子: ```xml <launch> <!-- 定义一个名为 'use_sim_time' 的参数,默认值为 false --> <arg name="use_sim_time" default="false"/> <!-- 启动一个节点并应用上述参数 --> <node pkg="turtlesim" type="turtlesim_node" name="sim" output="screen"> <param name="use_sim_time" value="$(arg use_sim_time)" /> </node> </launch> ``` 在这个例子中: - 用户可以指定 `-p use_sim_time:=true` 来覆盖默认值。 - 如果未提供任何参数,则采用默认值 `"false"`。 --- #### Python 风格下的 Arg 示例 (适用于 ROS 2) 对于 ROS 2,推荐使用 Python 编写 launch 文件。下面展示如何声明使用参数: ```python from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration def generate_launch_description(): # 声明一个名为 my_param 的参数,默认值为 "default_value" declare_my_param_cmd = DeclareLaunchArgument( 'my_param', default_value='default_value' ) # 打印接收到的参数值到控制台 log_info_cmd = LogInfo(msg=["Received parameter: ", LaunchConfiguration('my_param')]) ld = LaunchDescription([ declare_my_param_cmd, log_info_cmd ]) return ld ``` 在此脚本中: - `DeclareLaunchArgument` 创建了一个新的参数入口。 - `LaunchConfiguration` 动态读取运行时提供的参数值。 如果执行此 launch 文件时附加了如下选项: ```bash ros2 launch your_package your_script.launch.py my_param:=custom_value ``` 那么程序将会打印出 `"Received parameter: custom_value"`。 --- #### 关键点总结 1. **XML 格式**适合于简单的场景,易于阅读但功能有限。 2. **Python 格式**提供了更大的灵活性,尤其当需要复杂逻辑处理时更为适用。 3. 不论哪种方式,都支持从外部注入变量来调整行为模式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值