launch文件<arg> <param> <rosparam>传参知识笔记

1. <arg>​​​​​

1.1 简介

  • 作用: 定义启动文件内的局部参数,用于动态配置启动文件的行为。
  • 范围: 仅在启动文件内部有效,不能直接被ROS节点访问。
  • 使用方式: 可以通过 $(arg name) 的形式在启动文件中引用,并可以通过命令行在启动时覆盖默认值,不能直接通过ros句柄读取。
  • 典型用途: 控制启动文件的逻辑,例如指定要加载的文件路径或决定是否启动某个节点。

1.2 用法 

launch文件:

<arg name="scene" default="map1"/>
#直接在launch文件中引用参数
<include file="$(find putn_map)/launch/$(arg scene).launch"/>

可以在启动launch文件时加上参数:

roslaunch pkg ***.launch scene:="value"

2. <param>

2.1 简介

  • 作用: 设置节点的参数,可以将其加载到ROS参数服务器,供节点在运行时读取。
  • 范围: 取决于定义位置,节点内为局部参数,节点外为全局参数。
  • 典型用途: 设置节点的运行参数,如机器人模型、话题名称、算法参数等。

2.2 两种用法

 在节点内: 将参数绑定到特定节点,参数值只能在该节点的命名空间内使用,通常用于配置节点的行为,通过私有句柄读取("~")

//两种方式读参(nh_private为私有句柄)
nh_private.param("param_name", variable, default_value);//有默认值
bool param = nh.getParam("param_name", variable);//没有默认值

//nh_private的定义:
ros::NodeHandle nh_private("~");

在节点外(全局参数): 设置为全局参数,所有节点都可以通过全局路径读取,直接全局句柄读取

//两种方式读参(nh为全局句柄)
nh.param("param_name", variable, default_value);//有默认值
bool param = nh.getParam("param_name", variable);//没有默认值

//nh_private的定义:
ros::NodeHandle nh;

3. <rosparam>

3.1 简介

  • 作用: 用于从外部文件加载复杂的参数结构(例如YAML文件),这些参数会被加载到ROS参数服务器。
  • 范围: 同样既可以是全局参数,全局句柄读取,也可以在特定节点的命名空间下使用,通过私有句柄读取("~")
  • 典型用途: 加载较大的配置文件,例如机器人配置、地图参数、算法优化参数等,用于简化复杂参数的管理。

总结:

  • arg: 启动文件内部参数,控制启动逻辑,不与ROS参数服务器交互。
  • param: 用于设置参数服务器上的参数,可以在节点内(局部)或节点外(全局)定义。
  • rosparam: 用于从文件加载参数,特别适合复杂的参数配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值