(mppi-controller)= # 11. MPPI Controller > 归属 [§5.3 MPPI](../05_controller_algorithms.md#53-mppi-controller) · Autonomy ⏳ 配置预留,插件未实现 > > **Model Predictive Path Integral**(MPPI,Nav2 `nav2_mppi_controller`)在预测时域 $H$ 上对 $K$ 条扰动控制序列 batch 前向仿真,以 Critic 链累加轨迹代价 $S^{(k)}$,再经 **softmax 加权**得 $\mathbf{u}^*$ 并执行首步 $\mathbf{u}_0^*$;与 §15 **NMPC**(显式 OCP 求解)同属滚动预测控制,但无 NLP/QP 求解器。 --- ## 1. 背景 局部控制需在非凸、非光滑代价(costmap、路径偏差、目标)下做**前瞻避障与跟踪**。**Dynamic Window Approach**(Fox, 1997)每周期仅优化单步 $(v,\omega)$;**模型预测控制**延长时域,但经典 NMPC 依赖 SQP/QP。**路径积分 / 信息论 MPC**(Theodorou et al., 2010 PI²;Williams et al., 2017 ICRA)将最优控制写为轨迹代价的指数加权期望;**MPPI**(Williams et al., 2018 IROS)在 receding-horizon 下 batch 采样 + softmax,适合 GPU/向量化并行。Nav2 `nav2_mppi_controller` 以 Critic 插件实现 $q(\mathbf{x},\mathbf{u})$,默认 $K=2000$、$H=56$、$\Delta t=0.05$ s(详见 §3–§5)。 --- ## 2. 问题 **任务.** 平面移动机器人沿参考路径 $\mathcal{P}$ 向局部目标前进,在 costmap $\mathcal{C}$ 下输出本周期速度指令。 **输入 / 输出.** 位姿 $\mathbf{x}_0$、当前速度、路径 $\mathcal{P}$、代价地图 $\mathcal{C}$、Critic 集 $\mathcal{M}$ → $(v_x^{cmd},\, v_y^{cmd},\,\omega_z^{cmd})$(差速时 $v_y=0$)。 **在线形式.** **滚动时域 MPPI**:每周期对 $K$ 条控制序列 $\mathbf{U}^{(k)}=\{\mathbf{u}_0^{(k)},\ldots,\mathbf{u}_{H-1}^{(k)}\}$ 仿真、打分、softmax 得 $\mathbf{U}^*$,执行 $\mathbf{u}_0^*$;下一周期 $\bar{\mathbf{U}}$ 左移 warm-start(Williams 2018;Nav2 `shift_control_sequence`)。要求 $f_{ctrl}=1/\Delta t$。 --- ## 3. 运动模型 以下给出 §4 批量 rollout 所需链条:**连续运动学 → 离散 $H$ 步预测 → 轨迹张量 $\mathbf{X}^{(k)}$**。 ### 3.1 差速连续运动学 世界系 $\{W\}$ 下 $\mathbf{x}=[x,y,\theta]^\top$,控制 $\mathbf{u}=[v_x,\,\omega_z]^\top$(Fox / Nav2 记号): $$ \dot{x}=v_x\cos\theta,\quad \dot{y}=v_x\sin\theta,\quad \dot{\theta}=\omega_z. $$ - **含义**:预测模型;$\mathbf{u}_t$ 在 $[\Delta t,\,2\Delta t)$ 内分段恒定。 **全向**(Nav2 `Omni`):$\mathbf{u}=[v_x,v_y,\omega_z]^\top$,$\dot{x}=v_x\cos\theta-v_y\sin\theta$,$\dot{y}=v_x\sin\theta+v_y\cos\theta$。 **Ackermann**:$|v_x|\leq |\omega_z|\,R_{\min}$(`min_turning_r`),采样后 clip。 ### 3.2 离散 Rollout 给定 $\mathbf{U}^{(k)}$,从 $\mathbf{x}_0$ 欧拉积分 $H$ 步(Nav2 `MotionModel`;与 [DWB §3.2](13_dwb_controller.md#32-离散-rollout) 同型): $$ \mathbf{x}_{t+1}^{(k)} = \mathbf{x}_t^{(k)} + \begin{bmatrix} v_x^{(k)}\cos\theta_t^{(k)} \\ v_x^{(k)}\sin\theta_t^{(k)} \\ \omega_z^{(k)} \end{bmatrix}\Delta t. $$ - **$\mathbf{X}^{(k)}=\{\mathbf{x}_t^{(k)}\}_{t=0}^{H}$**:第 $k$ 条候选轨迹;Critics 沿 $\mathbf{X}^{(k)}$ 采样评估(非单点 $\mathbf{x}_N$)。 - **硬界**:$\mathbf{u}_t^{(k)}\leftarrow\mathrm{clip}(\bar{\mathbf{u}}_t+\boldsymbol{\epsilon}_t^{(k)},\,\mathcal{U}_{limits})$,$\boldsymbol{\epsilon}_t^{(k)}\sim\mathcal{N}(0,\Sigma)$。 --- ## 4. 数学问题定义 每周期在名义序列 $\bar{\mathbf{U}}$ 邻域采样 $K$ 条 $\mathbf{U}^{(k)}$,最小化路径积分代价的 Monte Carlo 近似;§4.1 定义 $S(\mathbf{U})$,§4.2 给出 softmax 控制律(Williams 2017;Nav2 `Optimizer`)。 ### 4.1 路径积分代价 **随机最优控制**(Williams 2017 信息论 MPC)。第 $k$ 条采样序列总代价: $$ S^{(k)} = S(\mathbf{U}^{(k)}) = \sum_{t=0}^{H-1} \Big( q\big(\mathbf{x}_t^{(k)},\, \mathbf{u}_t^{(k)}\big) + \frac{\gamma}{2}\, {\mathbf{u}_t^{(k)}}^\top \Sigma^{-1} \bar{\mathbf{u}}_t \Big). $$ - **$q$**:运行代价,Nav2 为 Critic 加权和 $q=\sum_m w_m c_m(\mathbf{X}^{(k)},\mathbf{U}^{(k)},\mathcal{P},\mathcal{C})$(PathAlign、CostCritic、Goal 等;与 [DWB §4.2](13_dwb_controller.md#42-速度决策主问题) 语义相近,但作用于**整段** $\mathbf{X}^{(k)}$)。 - **$\gamma$**:控制正则(Nav2 `gamma`);**$\Sigma=\mathrm{diag}(\sigma_{v_x}^2,\sigma_{v_y}^2,\sigma_{\omega_z}^2)$**:`vx_std` / `vy_std` / `wz_std`。 - **$\bar{\mathbf{U}}$**:warm-start 名义序列;采样 $\mathbf{u}_t^{(k)}=\mathrm{clip}(\bar{\mathbf{u}}_t+\boldsymbol{\epsilon}_t^{(k)})$。 - **碰撞**:CostCritic 等可令 $S^{(k)}\to\infty$(`collision_cost`),等价硬排除。 ### 4.2 MPPI 控制律(softmax 主问题) Williams (2017) 路径积分 / 自由能最优控制 → Monte Carlo softmax(Nav2 `updateControlSequence`): $$ \mathbf{u}_t^* = \sum_{k=1}^{K} w_k\, \mathbf{u}_t^{(k)}, \qquad w_k = \frac{\exp\big(-(S^{(k)}-S_{\min})/\lambda\big)}{\sum_{j=1}^{K}\exp\big(-(S^{(j)}-S_{\min})/\lambda\big)}. $$ - **$\lambda$**:温度(Nav2 `temperature`);$\lambda\to 0$ 权重集中于最低代价轨迹,$\lambda\to\infty$ 趋于均匀。 - **$S_{\min}=\min_k S^{(k)}$**:数值稳定,不改变 $w_k$ 比例。 - **滚动输出**:执行 $\mathbf{u}_0^*$;warm-start $\bar{\mathbf{u}}_t\leftarrow \mathbf{u}_{t+1}^*$,$t=0,\ldots,H-2$,末步补噪声(IROS 2018 receding horizon)。 --- ## 5. 求解 §4 在单周期内按 **warm-start → batch 采样 rollout → Critic 打分 → softmax → 输出 $\mathbf{u}_0^*$** 执行;算法 1–3 与 Nav2 `Optimizer` 对应。 ### 5.1 算法(数学描述)