5. 局部控制器算法

本文是局部控制器总览与索引;各算法六段式推导见 controller/ 专题(§10–§15,文件名前缀 10_*15_*)。当前仓库尚无具体插件实现,但 controller.lua 已含配置模板,几何工具(lookahead、圆-线段交点)已就绪。

选型:工程速查 §0.9.1 · 谱系与决策树 §6§6.6.4 时空联合) · Checker §3 · Smoother §4

5.1 算法总览

算法

轨迹层

类型

专题

实现状态

RPP

几何跟踪

几何 + 调节

§12

⏳ 工具就绪

Graceful

几何 + 启发式 time-scaling

Lyapunov 平滑

§10

⏳ 配置预留

MPPI

滚动 rollout \(\tau_{0:H}\)

采样型 MPC

§11

⏳ 配置预留

DWB

单步 / 短 horizon rollout

速度空间采样

§13

❌ 未实现

MPC

固定 \(H\Delta t\) 网格

约束 OCP / NMPC

§15

❌ 未实现

轨迹层定义见 §0.7 局部轨迹三层§6.2.4

5.2 Graceful Controller

Nav2 nav2_graceful_controller 的平滑路径跟踪器。完整推导见 §10 Graceful Controller

要点

说明

理论

Park & Kuipers, ICRA 2011 平滑控制律

轨迹层

几何跟踪 + slowdown_radius启发式 time-scaling(非显式 \(\Delta T_k\) 优化)

特点

motion target、减速区、可选碰撞仿真

Autonomy

⏳ 配置预留 · Phase 2

5.3 MPPI Controller

Nav2 nav2_mppi_controller 随机 MPC 控制器。完整推导见 §11 MPPI Controller

要点

说明

理论

Williams et al. 路径积分 MPC (2017/2018)

轨迹层

固定 \(\Delta t\) rollout;隐式离散时空轨迹 \(\tau_{0:H}\)

核心

batch 采样 + softmax + Critics

Autonomy

controller.lua 已配置 · Phase 3

5.4 Regulated Pure Pursuit(RPP)

Nav2 默认几何跟踪控制器。完整推导见 §12 RPP Controller

要点

说明

理论

Coulter 1992 Pure Pursuit + Nav2 Regulated 扩展

轨迹层

纯几何;每周期 \((v,\omega)\),不显式存 \(\tau(t)\)

工具

GetLookAheadPoint 等已就绪

Autonomy

⏳ 插件未实现 · Phase 1 推荐

5.5 DWB(Dynamic Window Benchmark)

Nav2 nav2_dwb_controller 在 Fox (1997) DWA 之上以 Lu (2014) Critic 框架工程化。完整推导见 §13 DWB Controller

要点

说明

理论

Fox 1997 DWA → Lu 2014 TrajectoryCritic

轨迹层

\(\mathcal{V}_{legal}\) 上采样 \((v,\omega)\),短 rollout 隐式 \(\tau\)显式 \(\Delta T_k\)

核心

\(\mathcal{V}_{legal}\) 网格采样 + \(\arg\min C_{total}\)

选型

动态避障、可组合 critic;Autonomy 优先 MPPI(Nav2 官方新栈)

Autonomy

❌ 未实现

5.6 模型预测控制(MPC)

经典 NMPC(约束有限时域 OCP + SQP/RTI 求解),与 §5.3 MPPI(采样型 MPC)区分。完整推导见 §15 MPC Controller

要点

说明

理论

Rawlings & Mayne (2009);移动机器人 NMPC

轨迹层

固定 horizon 网格 \(\{x_k,u_k\}\);离散时空轨迹

与 MPPI

显式 NLP/QP vs 路径积分采样

Autonomy

❌ 未实现

5.7 控制器对比

维度

Graceful

MPPI

RPP

DWB

MPC

显式时间

隐式 \(\Delta t\) 固定

隐式

固定网格

计算量

中–高

动态避障

强*

参数数量

路径跟踪

倒车

可选

可选

Autonomy

* 依赖约束/软约束建模质量。

5.7.1 控制器与 Checker 配对

§0.9.1 一致;Checker 六段式见 checker/15_*19_*

场景

控制器

Goal Checker

Progress Checker

室内默认

RPP / Graceful

Simple

Simple

动态避障

MPPI / DWB

Simple

Simple

先转后走

Graceful

Simple

Pose

充电对接

RPP / Graceful + Smoother

Stopped

Simple

只到点

任意

Position

Simple

NMPC

NMPC

Stopped(推荐)

Pose(若多原地转)

5.8 实现路线建议

  1. Phase 1:Regulated Pure Pursuit + SimpleGoalChecker(controller_utils 已就绪)

  2. Phase 2:Graceful + PoseProgressChecker(若初始旋转策略)

  3. Phase 3:MPPI + SimpleGoalChecker(可选编译、GPU/多核)

  4. Phase 4:按场景评估 DWB / NMPC;对接类任务配 StoppedGoalChecker

§6.5.2 Autonomy 谱系 及 Navigator FollowPath 接线同步推进。

5.9 自定义控制器开发清单

□ 继承 ControllerInterface
□ 实现 ComputeVelocityCommands()
□ 实现 SetPlan() — 接收 planning_msgs::Path
□ 实现 IsGoalReached() — 委托 goal_checker 或内部判定
□ 实现 SetSpeedLimit()
□ 注册 AUTOLINK_PLUGIN_MANAGER_REGISTER_PLUGIN
□ 编写 controller.lua 配置段
□ 单元测试:直线路径、急转弯、障碍场景