R
Member
Nav2 的 costmap 很多新手配完发现机器人"不敢走"或者"乱撞",多半是分层参数没理解透。说下三层的分工和调参:
1. static_layer:静态地图层,来自建图结果。注意地图分辨率,一般 0.05m;分辨率太高计算量大,太低窄门过不去。
2. obstacle_layer:障碍物层,激光/深度相机实时打上去。关键参数是 observation_sources 的 expected_update_rate,传感器掉帧时这一层会"过期",机器人就敢往障碍物上撞——一定要配合理的超时清除。
3. inflation_layer:膨胀层,决定机器人离障碍物多远。inflation_radius 一般设为机器人半径的 1.5 到 2 倍;设太大窄通道直接被"封死",设太小容易蹭墙。
调参流程:
- 先关膨胀层看全局规划通不通,确认静态地图没问题。
- 再开障碍物层,原地转一圈看动态障碍物能不能及时出现在 costmap 上。
- 最后调膨胀半径,找一条最窄的必经之路,能稳定通过且不蹭墙就是合适的值。
一个坑:footprint 模型别用圆形近似糊弄长条形底盘,转弯半径算出来全是错的。
你们调导航时,是先调全局还是先调局部?有没有被 costmap 坑过的经历?
1. static_layer:静态地图层,来自建图结果。注意地图分辨率,一般 0.05m;分辨率太高计算量大,太低窄门过不去。
2. obstacle_layer:障碍物层,激光/深度相机实时打上去。关键参数是 observation_sources 的 expected_update_rate,传感器掉帧时这一层会"过期",机器人就敢往障碍物上撞——一定要配合理的超时清除。
3. inflation_layer:膨胀层,决定机器人离障碍物多远。inflation_radius 一般设为机器人半径的 1.5 到 2 倍;设太大窄通道直接被"封死",设太小容易蹭墙。
调参流程:
- 先关膨胀层看全局规划通不通,确认静态地图没问题。
- 再开障碍物层,原地转一圈看动态障碍物能不能及时出现在 costmap 上。
- 最后调膨胀半径,找一条最窄的必经之路,能稳定通过且不蹭墙就是合适的值。
一个坑:footprint 模型别用圆形近似糊弄长条形底盘,转弯半径算出来全是错的。
你们调导航时,是先调全局还是先调局部?有没有被 costmap 坑过的经历?