4. 局部规划器调参(DWB):评分标准与核心参数
DWB 局部规划器,说白了就是机器人底盘的「驾驶员」。全局规划告诉你往哪走,DWB 则负责具体怎么走——踩油门、打方向盘、躲障碍。我刚开始接触 Nav2 时,总觉得 DWB 参数太多,调起来像在猜谜。后来踩了不少坑,才摸清它的脾气。
今天咱们就把它拆开揉碎,看看 DWB 到底怎么「思考」的。
4.1 DWB 的评分标准:机器人的「价值观」
DWB 每走一步,都会生成一堆候选轨迹。然后它像个裁判,给每条轨迹打分。分数最低的,就是最优路径。
评分标准主要有三个维度:
- 路径对齐代价:轨迹偏离全局路径越远,扣分越多
- 障碍物避让代价:离障碍物越近,扣分越多
- 速度代价:速度变化越剧烈,扣分越多
这三个代价加权求和,就是最终得分。权重怎么配?嗯,这就是调参的核心。
核心公式(简化版):
总代价 = w1 × 路径对齐代价 + w2 × 障碍物避让代价 + w3 × 速度代价
其中 w1、w2、w3 就是权重参数,在 DWB 配置文件中对应 path_distance_scale、obstacle_distance_scale、velocity_scale。
我习惯把这三个权重想象成机器人的「性格」:
- w1 大:机器人死脑筋,非要沿着全局路径走,哪怕绕远
- w2 大:机器人胆小如鼠,离障碍八丈远就开始躲
- w3 大:机器人慢性子,加减速特别温柔
你想想看,如果 w2 设得太小,机器人就会贴着墙走,看着都悬。我在项目里遇到过这种情况,机器人直接卡在门框里,进退两难。
4.2 加速度与速度限制:别让机器人「急刹车」
这部分参数在 DWB 配置里叫 acc_lim_x、acc_lim_y、acc_lim_theta,以及 max_vel_x、max_vel_theta。
说白了,就是给机器人的运动套上「紧箍咒」。为什么要限制?
- 物理限制:电机有扭矩上限,加速度太大容易打滑
- 安全考虑:急刹车可能导致货物倾倒或传感器松动
- 轨迹平滑:加速度突变会让路径出现「折角」,跟线效果差
我的经验:
我曾经调试一台差速底盘,把 acc_lim_x 设成 2.5 m/s²,结果机器人启动时像被踹了一脚,急停时又像撞墙。后来降到 0.8 m/s²,整个运动就丝滑多了。
建议从 0.5 m/s² 起步,逐步往上加,直到出现抖动或打滑为止。
速度限制也一样。别以为设得越大越好。速度太快,DWB 的前瞻距离跟不上,容易冲过头。我一般把 max_vel_x 控制在 0.5~1.0 m/s 之间,室内场景足够了。
4.3 前瞻距离:看多远,走多稳
前瞻距离(forward_point_distance)是 DWB 里一个容易被忽略的参数。它决定了机器人「看多远」来规划轨迹。
举个例子:
- 前瞻距离小:机器人只看脚下,路径跟得紧,但遇到弯道容易「甩尾」
- 前瞻距离大:机器人看得远,过弯平滑,但直道上可能「切弯」
为什么会这样?因为 DWB 用前瞻点来评估路径对齐代价。点选得太近,机器人只顾眼前;选得太远,又忽略了近处的偏差。
注意:
前瞻距离和速度是联动的。速度越快,前瞻距离应该越大。否则机器人还没反应过来,就已经错过转弯点了。
我有个简单的经验公式:前瞻距离 ≈ 最大速度 × 0.5~1.0 秒。比如最大速度 0.6 m/s,前瞻距离设 0.3~0.6 米比较合适。
4.4 知识体系总览
下面这张图,帮你把 DWB 调参的核心逻辑串起来:
4.5 参数调优实战建议
说了这么多理论,咱们来点实际的。下面是我总结的调参步骤:
- 先调速度限制:把
max_vel_x和max_vel_theta设到目标值,别贪快 - 再调加速度:从 0.5 m/s² 开始,逐步增加,直到运动出现抖动
- 然后调权重:先固定 w1=1.0,w2=2.0,w3=0.5,观察避障效果
- 最后调前瞻距离:根据速度调整,参考前面的经验公式
避坑指南:
我曾经把 obstacle_distance_scale 设到 5.0,结果机器人离障碍还有 2 米就开始绕路,走出来的路径歪七扭八。后来降到 1.5,效果反而更好。
记住:权重不是越大越好,平衡才是关键。
4.6 常见问题速查表
| 现象 | 可能原因 | 解决方向 |
|---|---|---|
| 机器人贴墙走 | 障碍物避让权重太低 | 增大 obstacle_distance_scale |
| 过弯甩尾 | 前瞻距离太小 | 增大 forward_point_distance |
| 启动/停止太猛 | 加速度限制太大 | 减小 acc_lim_x |
| 路径跟得太死 | 路径对齐权重太高 | 适当降低 path_distance_scale |
| 速度忽快忽慢 | 速度代价权重不合适 | 调整 velocity_scale,或检查加速度限制 |
嗯,DWB 调参其实没那么玄乎。你只要理解了评分标准,再结合实际的运动表现去调整,很快就能找到感觉。我刚开始调的时候也经常翻车,但多试几次,慢慢就摸到门道了。