3. 路径跟踪算法原理:Pure Pursuit、Regulated Pure Pursuit、DWB核心思想对比

聊到运动控制,路径跟踪算法是核心中的核心。说白了,就是机器人拿到一条规划好的路径后,怎么用自己的轮子或者舵轮,稳稳当当地走过去。

我这些年调过的机器人,从差速轮到阿克曼,从室内AGV到户外巡检车,几乎都离不开这三个算法:Pure Pursuit、Regulated Pure Pursuit 和 DWB。它们各有脾气,也各有绝活。

今天咱们就把这三兄弟拉出来,好好对比一下。嗯,先看一张总览图,心里有个谱。

路径跟踪算法核心思想对比 Pure Pursuit 纯追踪 • 几何追踪法 • 前视距离是关键 • 计算圆弧曲率 • 适合低速场景 • 参数少,易调参 • 转弯容易切内线 ⚠ 高速易震荡 Regulated Pure Pursuit 调节纯追踪 • 自适应前视距离 • 加入速度调节 • 考虑曲率约束 • 避免急转弯 • 支持倒车 • 鲁棒性更强 ⚠ 计算量稍大 DWB 动态窗口法 • 速度空间采样 • 多目标评分 • 考虑动力学约束 • 实时避障 • 可自定义代价函数 • 适合复杂环境 ⚠ 参数多,调参难 从几何 → 自适应 → 多目标优化,复杂度递增

3.1 Pure Pursuit:最朴素的几何追踪

Pure Pursuit 是我最早接触的路径跟踪算法。它的思想特别直观——想象你开车时,眼睛一直盯着前方路上的一个点,然后打方向盘让车头对准那个点开过去。

这个「前方的点」就是前视点,前视点到机器人的距离叫前视距离。算法会计算一条从当前位置到前视点的圆弧,然后输出对应的角速度和线速度。

核心公式(简化版):

曲率 κ = 2 * sin(α) / Ld

其中 α 是机器人朝向与前视点方向的夹角,Ld 是前视距离。

我个人习惯把前视距离设成机器人长度的 1.5 到 2 倍。太小了机器人会左右摇摆,太大了又容易切弯。

我的经验: 在 AGV 项目中,如果路径是直线为主,前视距离可以设大一点,跑起来更稳。但遇到连续弯道,就得缩小前视距离,否则会「甩尾」。

3.2 Regulated Pure Pursuit:给纯追踪装上「调节器」

Pure Pursuit 有个硬伤——前视距离是固定的。你想想看,高速和低速、直道和弯道,用同一个前视距离,能行吗?

Regulated Pure Pursuit 就是来解决这个问题的。它把前视距离变成了动态可调的,会根据当前速度、路径曲率、靠近目标点的距离等因素自动调整。

我记得有一次调试巡检机器人,用 Pure Pursuit 在直道上跑得挺好,一到 90 度弯就冲出去。换成 Regulated Pure Pursuit 后,它在弯道前会自动减速、缩短前视距离,过弯顺滑多了。

Regulated Pure Pursuit 的调节策略:

  • 速度调节: 曲率越大,速度越低
  • 前视距离调节: 速度越快,前视距离越长
  • 靠近目标: 接近终点时自动减速
  • 倒车支持: 可以向后追踪路径

注意: Regulated Pure Pursuit 虽然强大,但参数变多了。我建议先从默认参数开始,然后只调「最大前视距离」和「最小前视距离」这两个关键参数,其他保持默认。

3.3 DWB:把路径跟踪变成「多目标优化」

DWB 的全称是 Dynamic Window Based,它和前面两个算法思路完全不同。Pure Pursuit 是几何方法,DWB 是采样+评分的方法。

它的工作流程是这样的:

  1. 在当前速度附近采样一组可能的 (线速度, 角速度) 组合
  2. 对每个组合模拟一小段时间的运动轨迹
  3. 用多个代价函数给每条轨迹打分
  4. 选出得分最高的轨迹,执行对应的速度

说白了,DWB 不是「盯着一个点追」,而是「把所有可能走法都试一遍,选最好的那个」。

DWB 的典型代价函数:

  • 路径对齐代价: 轨迹离全局路径越近越好
  • 障碍物代价: 轨迹离障碍物越远越好
  • 速度代价: 尽量保持目标速度
  • 旋转代价: 尽量减少不必要的旋转

我曾经在一个仓库项目中用 DWB 做避障。环境里到处都是货架和叉车,Pure Pursuit 根本不敢用,因为没法处理动态障碍。DWB 虽然调参花了点时间,但最终效果确实好——它能一边跟踪路径,一边灵活避让突然出现的行人。

避坑指南: 我曾经把 DWB 的障碍物代价权重设得太高,结果机器人为了躲一个远处的障碍物,绕了个大圈。后来我把权重调低,同时加了一个「路径偏离惩罚」,才让它在避障和路径跟踪之间找到平衡。

3.4 三种算法对比总结

特性 Pure Pursuit Regulated Pure Pursuit DWB
核心思想 几何追踪前视点 自适应几何追踪 速度空间采样优化
参数数量 少(2-3个) 中等(5-8个) 多(10+个)
调参难度 简单 中等 复杂
高速性能 差(易震荡) 好(自适应调节) 好(考虑动力学)
避障能力 无 有限(仅减速) 强(实时避障)
适用场景 低速、简单路径 中低速、复杂路径 动态环境、高速
计算开销 低 中 高

选哪个算法,其实取决于你的场景。如果只是做简单的点到点移动,Pure Pursuit 够用了。如果路径复杂、需要自适应,Regulated Pure Pursuit 是很好的升级。如果环境动态变化、需要实时避障,那就得上 DWB。

我个人习惯是:先用 Pure Pursuit 快速验证,再根据问题逐步升级。别一上来就上 DWB,调参能调到你怀疑人生。