一、普通参数和动态参数的对比
什么是动态参数?
一种可以在运行时更新参数而无需重启节点的参数!
接下来我们与普通的参数进行对比:
1. 修改时机和灵活性
对于静态参数:
仅能在节点启动时通过launch文件或命令行设置,一旦节点运行,参数值无法动态修改,必须重启节点才能生效!例如,传感器的物理参数(如摄像头焦距)通常作为静态参数配置;
对于静态参数:
允许在节点运行过程中实时调整,无需重启;
例如机器人标定:比如当前我们需要标定机器人的线速度或者角速度(线速度和角速度都是和轮胎的半径、轮间距相关的),此时可能每一辆机器人的轮子之间的参数都会有一点误差,不是那么绝对相等的,所以有时候为了获取更准确的里程计数据(与车辆的速度有关),所以我们会经常的调试轮胎的半径和轮间距,此时就可以通过动态参数进行调整!
导航期间调整动态参数:例如当我们设置全局代价地图的参数的配置的时候:

膨胀半径的值可能不符合我们设置的要求,如果我们将这个值设置到参数服务器当中,那么此时更改值需要重新启动节点,比较麻烦!
如果我们想要更改动态参数,可以通过rqt进行更改:
rqt

此时可以通过动态配置,选择glbal_costmap来对代价值进行设置,例如下面所示,可以看到全局地图的代价值发生改变:

2. 实现机制与通信方式
对于静态参数:
基于 ROS 参数服务器(Parameter Server),参数存储在全局空间,通过rosparam命令或ros::param接口访问。修改参数需调用rosparam set命令,但节点不会自动感知变化,需主动查询
对于动态参数:
通过dynamic_reconf

最低0.47元/天 解锁文章
1445

被折叠的 条评论
为什么被折叠?



