parameter/argument-两大参数

参数

每个结点都有参数,且以字典的形式存储
使用参数而不是程序中的变量的好处是可以动态修改关键值,而不需要重新编译代码,特别适合调试

ros2 param
ros2 param list        列出当前运行结点的参数列表
ros2 param get <node> <param>获取某个结点的某个参数值
ros2 param set <node> <param>设置某个结点的某个参数值
ros2 param dump <node>打印某个结点的所有参数
ros2 param dump <node> >> xxx.yaml将结点的参数全部保存到文件
ros2 param load <node> xxx.yaml将参数文件值应用到node中
ros2 param describle <node> <param>查看某节点参数的含义

1.节点中接口定义参数

接口手动生成

# 声明参数并设置默认值
self.declare_parameter('initial_point',[0.0,0.0,0.0])
self.declare_parameter('initial_point',[0.0,0.0,0.0])
# 获取指定参数的默认值
self.initial_point = self.get_parameter('initial_point').value
self.target_points = self.get_parameter('target_points').value

运行时加载 

# 单一参数的使用命令行即可
ros2 run <package_name> <executable_name> --ros-args -p <parameter_name>:=<value>

声明的参数你可以在命令行中动态指定,多好

2.参数文件中定义参数

文件自动生成

# 先启动节点
ros2 run autopartol_robot autopartol_node

# 在另一个终端生成参数文件
ros2 param dump /autopartol_node > autopartol_params.yaml

 autopartol_params.yaml

/node_name:
  ros__parameters:
    param1: value1
    param2: value2

运行时加载

# 多参数还是建议使用yaml文件组织
ros2 run autopartol_robot autopartol_node --ros-args --params-file params.yaml

parameter-结点级参数

定义:结点的编写过程中就进行参数定义:本质上属于结点的内容参数

赋值:在结点内赋默认初值,在laucn封装节结点时可重新赋值

应用:常规应用场景比如:修改A*算法的启发式权重值 H_weight : 1.0

argument-命令级参数

定义:launch文件的编写过程中参数定义赋值:本质上属于结点的启动参数

使用:使用LaunchConfiguration 通过键来获取值如作为路径拼接的一环

应用:常规应用场景比如:修改Rviz启动时的配置文件   -d xxx.rviz

《parameter》

# 编写结点时声明​并赋默认值
self.declare_parameter('my_int_param', 42)  # 声明并赋值参数
self.get_parameter('my_int_param').value    # 获取其值来使用
​
# 编写launch时赋予其新的值
 Node(
        package="my_pkg",
        executable="my_node",
        parameters=[{"my_int_param": 42},{"my_str_param": "hello"}]
      )

from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration

# 在launch文件中参数声明
arg_model = DeclareLaunchArgument(
    name='model',                   # 参数名
    default_value='default.urdf',   # 默认值
    description='URDF 文件路径'      # 描述
)

# 在launch文件中参数使用
LaunchConfiguration(‘model’)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值