在上一章中,我们探讨了线性模型预测控制(MPC)的基本原理和实现方法。然而,机器人系统本质上是高度非线性的——从旋转运动学的SO(3)流形结构,到接触力学的非光滑特性,再到执行器的饱和约束,这些非线性因素使得线性MPC在许多实际应用中显得力不从心。本章将深入探讨非线性MPC(NMPC)在机器人控制中的理论与实践,特别关注如何在保证控制性能的同时实现实时计算。
通过本章学习,读者将能够:
非线性MPC是处理复杂机器人系统的核心技术,它能够直接考虑系统的非线性动力学特性,包括旋转运动的非线性、接触动力学的不连续性以及执行器的饱和约束。与线性MPC相比,NMPC能够在更大的运行范围内保持良好的控制性能,这对于执行动态运动的机器人至关重要。
考虑一个一般的非线性离散时间系统:
\[\mathbf{x}_{k+1} = f(\mathbf{x}_k, \mathbf{u}_k)\]其中$\mathbf{x}_k \in \mathbb{R}^{n_x}$为状态,$\mathbf{u}_k \in \mathbb{R}^{n_u}$为控制输入。非线性MPC在每个时间步求解以下有限时域优化问题:
\[\begin{align} \min_{\mathbf{u}_0, \ldots, \mathbf{u}_{N-1}} \quad & \sum_{k=0}^{N-1} l(\mathbf{x}_k, \mathbf{u}_k) + l_f(\mathbf{x}_N) \\ \text{s.t.} \quad & \mathbf{x}_{k+1} = f(\mathbf{x}_k, \mathbf{u}_k), \quad k = 0, \ldots, N-1 \\ & \mathbf{x}_0 = \mathbf{x}(t) \\ & \mathbf{x}_k \in \mathcal{X}, \quad k = 1, \ldots, N \\ & \mathbf{u}_k \in \mathcal{U}, \quad k = 0, \ldots, N-1 \\ & \mathbf{x}_N \in \mathcal{X}_f \end{align}\]其中$l(\cdot, \cdot)$为阶段成本,$l_f(\cdot)$为终端成本,$\mathcal{X}$和$\mathcal{U}$分别为状态和控制约束集,$\mathcal{X}_f$为终端约束集。终端约束集的设计对保证递归可行性和稳定性至关重要。
对于机器人系统,成本函数的设计需要平衡多个目标:
跟踪性能: \(l_{\text{track}}(\mathbf{x}_k, \mathbf{x}_k^{\text{ref}}) = (\mathbf{x}_k - \mathbf{x}_k^{\text{ref}})^T\mathbf{Q}(\mathbf{x}_k - \mathbf{x}_k^{\text{ref}})\)
其中权重矩阵$\mathbf{Q}$的选择反映了不同状态分量的相对重要性。对于四足机器人,通常位置误差的权重高于速度误差,而姿态误差(特别是横滚和俯仰)的权重最高,以保持平衡。
控制努力与能量消耗: \(l_{\text{control}}(\mathbf{u}_k) = \mathbf{u}_k^T\mathbf{R}\mathbf{u}_k\)
权重$\mathbf{R}$不仅影响能量消耗,还影响执行器的磨损。实践中,$\mathbf{R}$常根据执行器的额定功率进行归一化。
控制平滑性: \(l_{\text{smooth}}(\mathbf{u}_k, \mathbf{u}_{k-1}) = (\mathbf{u}_k - \mathbf{u}_{k-1})^T\mathbf{S}(\mathbf{u}_k - \mathbf{u}_{k-1})\)
这一项对减少机械振动和延长硬件寿命至关重要。过大的控制变化率会激发结构共振,导致不稳定。
约束处理的细节:
状态约束$\mathcal{X}$通常包括:
控制约束$\mathcal{U}$包括:
| 力矩限制:$ | \tau_i | \leq \tau_{\max,i}$ |
| 摩擦锥约束:$|\mathbf{f}_t| \leq \mu | \mathbf{f}_n | $(对于接触力控制) |
机器人系统的非线性主要来源于:
序列二次规划(SQP)是求解大规模非线性优化问题的最有效方法之一,在机器人NMPC中得到广泛应用。SQP的核心思想是通过求解一系列二次规划子问题来逼近原始非线性问题的解,每个QP子问题都是原问题在当前迭代点的局部二次近似。
SQP方法基于牛顿法的思想,但扩展到了约束优化问题。考虑一般形式的非线性规划问题,其KKT条件为:
\[\begin{align} \nabla_x \mathcal{L}(x, \lambda, \mu) &= 0 \\ g(x) &= 0 \\ h(x) &\leq 0 \\ \mu &\geq 0 \\ \mu^T h(x) &= 0 \end{align}\]其中$\mathcal{L}$为拉格朗日函数。SQP通过牛顿迭代求解这个非线性方程组。
给定当前轨迹$(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)$,首先对系统动力学进行线性化:
\[\mathbf{A}_k = \frac{\partial f}{\partial \mathbf{x}}\Big|_{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}, \quad \mathbf{B}_k = \frac{\partial f}{\partial \mathbf{u}}\Big|_{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}\]线性化后的动力学约束变为: \(\delta\mathbf{x}_{k+1} = \mathbf{A}_k\delta\mathbf{x}_k + \mathbf{B}_k\delta\mathbf{u}_k + \mathbf{c}_k\)
其中$\mathbf{c}_k = f(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k) - \mathbf{A}_k\bar{\mathbf{x}}_k - \mathbf{B}_k\bar{\mathbf{u}}_k$为线性化误差补偿项。
对成本函数进行二阶泰勒展开:
\[l(\mathbf{x}_k, \mathbf{u}_k) \approx l(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k) + \mathbf{g}_x^T\delta\mathbf{x}_k + \mathbf{g}_u^T\delta\mathbf{u}_k + \frac{1}{2}\delta\mathbf{x}_k^T\mathbf{Q}_k\delta\mathbf{x}_k + \frac{1}{2}\delta\mathbf{u}_k^T\mathbf{R}_k\delta\mathbf{u}_k + \delta\mathbf{x}_k^T\mathbf{P}_k\delta\mathbf{u}_k\]其中:
| 梯度:$\mathbf{g}_x = \nabla_x l | _{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$,$\mathbf{g}_u = \nabla_u l | _{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$ |
| Hessian:$\mathbf{Q}k = \nabla{xx}^2 l | {(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$,$\mathbf{R}_k = \nabla{uu}^2 l | _{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$ |
| 交叉项:$\mathbf{P}k = \nabla{xu}^2 l | _{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$ |
这样得到的QP子问题具有稀疏块结构,可以利用专门的求解器高效求解。
算法10.1:实用SQP算法(带全局化策略)
输入:初始轨迹(x̄₀,...,x̄ₙ, ū₀,...,ūₙ₋₁),容差ε
输出:最优轨迹(x*₀,...,x*ₙ, u*₀,...,u*ₙ₋₁)
1. 初始化:iter ← 0, μ ← μ₀(罚参数)
2. while ‖∇L‖ > ε and iter < max_iter do
3. // 准备阶段
4. 计算雅可比矩阵 Aₖ, Bₖ, k=0,...,N-1
5. 计算Hessian矩阵 Qₖ, Rₖ, Pₖ
6. 构建QP子问题矩阵
7.
8. // QP求解阶段
9. 求解QP得到搜索方向(δx, δu)
10.
11. // 线搜索阶段
12. α ← 1
13. while not满足Armijo条件 do
14. α ← βα (β ∈ (0,1), 典型值0.5)
15. if α < α_min then
16. 增大罚参数μ,重新求解QP
17. break
18. end if
19. end while
20.
21. // 更新阶段
22. (x̄, ū) ← (x̄, ū) + α(δx, δu)
23. 更新拉格朗日乘子
24. iter ← iter + 1
25. end while
精确计算Hessian矩阵计算量大且可能导致数值问题。实践中常用的近似策略包括:
Gauss-Newton近似: 忽略拉格朗日函数的二阶项,仅保留目标函数的二阶信息: \(\mathbf{H}_{\text{GN}} = \mathbf{J}^T\mathbf{J}\) 其中$\mathbf{J}$为残差的雅可比矩阵。这种近似保证了Hessian的正定性。
BFGS更新: 通过递推公式更新Hessian近似: \(\mathbf{H}_{k+1} = \mathbf{H}_k + \frac{\mathbf{y}_k\mathbf{y}_k^T}{\mathbf{y}_k^T\mathbf{s}_k} - \frac{\mathbf{H}_k\mathbf{s}_k\mathbf{s}_k^T\mathbf{H}_k}{\mathbf{s}_k^T\mathbf{H}_k\mathbf{s}_k}\) 其中$\mathbf{s}k = \mathbf{x}{k+1} - \mathbf{x}k$,$\mathbf{y}_k = \nabla f{k+1} - \nabla f_k$。
有限内存L-BFGS: 仅存储最近m次更新的向量对${(\mathbf{s}_i, \mathbf{y}_i)}$,适合大规模问题。
内点法是处理不等式约束的强大工具,在机器人NMPC中特别适合处理复杂的状态和控制约束。与活动集方法不同,内点法始终保持在可行域的内部,通过障碍函数逐步逼近约束边界。
对于不等式约束$g(\mathbf{x}, \mathbf{u}) \leq 0$,内点法将原问题转化为一系列无约束问题:
\[\min_{\mathbf{x}, \mathbf{u}} f(\mathbf{x}, \mathbf{u}) - \mu \sum_{i=1}^{m} \log(-g_i(\mathbf{x}, \mathbf{u}))\]其中$\mu > 0$为障碍参数。对数障碍函数具有以下性质:
内点法的理论基础是中心路径的概念。对于每个$\mu > 0$,存在唯一的最优解$(\mathbf{x}^(\mu), \mathbf{u}^(\mu))$,这些解构成的轨迹称为中心路径。路径跟随策略通过逐步减小$\mu$沿着中心路径逼近最优解:
算法10.2:原始-对偶内点法
输入:初始点(x₀, u₀, λ₀, s₀),初始障碍参数μ₀
输出:最优解(x*, u*)
1. k ← 0, μ ← μ₀
2. while μ > μ_tol do
3. // 求解障碍子问题的KKT系统
4. repeat
5. 计算原始-对偶残差:
6. r_dual = ∇f + J_g^T λ
7. r_primal = g + s
8. r_comp = Λs - μe // 互补性条件
9.
10. // 求解牛顿方向
11. [Δx] [H J_g^T 0 ] [-r_dual ]
12. [Δλ] = [J_g 0 I ]·[-r_primal]
13. [Δs] [0 S Λ ] [-r_comp ]
14.
15. // 步长选择(保持严格可行性)
16. α_primal = min(1, 0.995·min{-s_i/Δs_i : Δs_i < 0})
17. α_dual = min(1, 0.995·min{-λ_i/Δλ_i : Δλ_i < 0})
18.
19. // 更新变量
20. (x, u) ← (x, u) + α_primal·(Δx, Δu)
21. λ ← λ + α_dual·Δλ
22. s ← s + α_primal·Δs
23. until 收敛
24.
25. // 更新障碍参数
26. σ = (s^T λ)/(m·μ) // 中心性度量
27. μ ← max(μ_min, min(σ·μ, 0.2·μ))
28. k ← k + 1
29. end while
其中$\mathbf{H}$为拉格朗日函数的Hessian,$\mathbf{J}_g$为约束的雅可比,$\mathbf{S} = \text{diag}(s)$,$\boldsymbol{\Lambda} = \text{diag}(\lambda)$。
预条件子设计: KKT系统通常病态,需要精心设计的预条件子。对于机器人系统,利用动力学方程的块结构:
\[\mathbf{P} = \begin{bmatrix} \mathbf{H}_{11}^{-1} & 0 & 0 \\ 0 & \mathbf{H}_{22}^{-1} & 0 \\ 0 & 0 & (\boldsymbol{\Lambda}^{-1}\mathbf{S})^{-1} \end{bmatrix}\]Mehrotra预测-校正策略:
这种策略可以显著减少迭代次数。
内点法的优势在机器人控制中尤为明显:
多重打靶法是一种并行化的轨迹优化方法,特别适合长时域的机器人运动规划问题。其核心思想是将长轨迹分解为多个短段,每段可以独立优化,然后通过协调机制确保段间连续性。
考虑时域$[0, T]$,将其划分为$M$个子区间:$[t_0, t_1], [t_1, t_2], \ldots, [t_{M-1}, t_M]$。每个子区间内的优化问题:
\[\min_{x_i, u_i} \int_{t_{i-1}}^{t_i} l(x_i(\tau), u_i(\tau))d\tau\]受动力学约束: \(\dot{x}_i = f(x_i, u_i), \quad t \in [t_{i-1}, t_i]\)
段间连续性约束: \(x_i(t_i) = x_{i+1}(t_i), \quad i = 1, \ldots, M-1\)
增广拉格朗日方法: \(\mathcal{L}_\rho = \sum_{i=1}^{M} J_i(x_i, u_i) + \sum_{i=1}^{M-1} \left[ \lambda_i^T(x_i(t_i) - x_{i+1}(t_i)) + \frac{\rho}{2}\|x_i(t_i) - x_{i+1}(t_i)\|^2 \right]\)
ADMM迭代框架:
多重打靶ADMM算法:
1. 并行阶段:每个处理器i求解
min J_i(x_i, u_i) + λ_i^T x_i(t_i) - λ_{i-1}^T x_i(t_{i-1})
+ (ρ/2)‖x_i(t_i) - z_i‖² + (ρ/2)‖x_i(t_{i-1}) - z_{i-1}‖²
2. 协调阶段:更新接口变量
z_i = (x_i(t_i) + x_{i+1}(t_i))/2
3. 对偶更新:
λ_i ← λ_i + ρ(x_i(t_i) - z_i)
多重打靶法的加速比取决于:
实践中的分段策略:
腿式机器人步态周期分解:
|--站立相--|--摆动相--|--站立相--|--摆动相--|
GPU1 GPU2 GPU3 GPU4
↓ ↓ ↓ ↓
局部MPC 局部MPC 局部MPC 局部MPC
↓ ↓ ↓ ↓
[通信与协调:确保相位转换的连续性]
这种方法特别适合于:
实时迭代是一种专门为在线优化设计的方法,其核心思想是:不等待完全收敛,而是在每个控制周期执行固定数量的优化迭代。
RTI框架包含两个阶段:
准备阶段(在获得新测量之前):
反馈阶段(获得新测量后):
这种分离使得反馈延迟最小化,通常可以达到亚毫秒级。
有效的热启动对NMPC的实时性能至关重要。常用策略包括:
移位初始化:
新预测时域:
[u₁, u₂, ..., uₙ₋₁, uₙ₋₁] # 复制最后一个控制
[x₁, x₂, ..., xₙ, f(xₙ, uₙ₋₁)] # 前向积分
轨迹库方法: 维护一个典型运动模式的轨迹库,根据当前状态选择最接近的轨迹作为初始猜测。
学习基热启动: 使用神经网络学习从状态到最优轨迹的映射:
\[(\mathbf{x}_0^*, \ldots, \mathbf{x}_N^*, \mathbf{u}_0^*, \ldots, \mathbf{u}_{N-1}^*) = \pi_\theta(\mathbf{x}(t))\]RTI产生的次优解需要理论保证。关键结果是:
定理10.1(收缩性): 在适当的假设下,RTI方案产生的闭环系统是渐近稳定的,且跟踪误差满足:
\[\|\mathbf{e}_{k+1}\| \leq \rho \|\mathbf{e}_k\| + \epsilon\]其中$\rho < 1$为收缩率,$\epsilon$为次优性导致的稳态误差界。
实践中,我们通过以下指标监控RTI性能:
计算延迟是实时控制的主要挑战。假设计算延迟为$\tau$,简单的延迟补偿策略是:
预测补偿: 在时刻$t$,我们预测$t+\tau$时刻的状态:
\[\hat{\mathbf{x}}(t+\tau) = f_{\text{pred}}(\mathbf{x}(t), \mathbf{u}(t-\delta t), \tau)\]然后基于预测状态求解MPC问题。
多率方案:
高频率(1kHz):简单反馈控制器
↑
补偿信号
↑
低频率(100Hz):NMPC优化器
传统的接触处理方法需要预先指定接触模式序列,这限制了控制器的适应性。接触隐式方法将接触力作为优化变量,自动确定接触模式。
考虑带接触的机器人动力学:
\[\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{h}(\mathbf{q}, \dot{\mathbf{q}}) = \mathbf{S}^T\mathbf{u} + \mathbf{J}_c^T(\mathbf{q})\mathbf{f}_c\]其中$\mathbf{J}_c$为接触雅可比,$\mathbf{f}_c$为接触力。接触约束通过互补性条件表达:
\[\begin{align} 0 \leq \phi(\mathbf{q}) \perp \mathbf{f}_n \geq 0 \quad &\text{(法向)} \\ \|\mathbf{f}_t\| \leq \mu \mathbf{f}_n \quad &\text{(摩擦锥)} \end{align}\]其中$\phi(\mathbf{q})$为接触距离函数。
互补性约束$0 \leq a \perp b \geq 0$(即$a \geq 0, b \geq 0, ab = 0$)是非光滑的,直接优化困难。常用处理方法:
松弛方法: \(ab \leq \epsilon\)
Fischer-Burmeister函数: \(\Phi(a, b) = \sqrt{a^2 + b^2} - a - b = 0\)
光滑化NCP函数: \(\Phi_\mu(a, b) = a + b - \sqrt{a^2 + b^2 + 2\mu^2} = 0\)
随着$\mu \to 0$,光滑化函数收敛到原互补性条件。
在实际实现中,我们通常采用延拓法(continuation method)逐步减小光滑化参数:
算法10.2:光滑化互补性MPC
输入:初始光滑化参数μ₀,收缩因子ρ ∈ (0,1)
输出:最优轨迹
1. μ ← μ₀
2. while μ > μ_min do
3. 求解光滑化NMPC问题
4. 使用解作为下一次迭代的热启动
5. μ ← ρ × μ
6. end while
摩擦锥约束的处理更加复杂。常用的方法是多面体近似:
摩擦锥近似(俯视图):
|
/ | \
/ | \ 真实圆锥
/___|___\
|
正方形 六边形 八边形
(4面) (6面) (8面)
每增加一个面,优化变量增加但近似精度提高。实践中,4-6个面通常足够。
接触模式切换使系统成为混合系统。我们可以用有限状态机描述:
状态机示例(单腿):
┌─────────┐
│ 飞行 │←─────┐
└────┬────┘ │
│离地 │
↓ │
┌─────────┐ │
│ 接触 │──────┘
└─────────┘ 抬腿
混合MPC的关键挑战是模式序列的组合爆炸。实用方法包括:
固定模式序列: 预定义可行的接触序列,如四足机器人的标准步态。
分支MPC: 考虑有限的模式分支:
时刻k: 当前模式
/ \
时刻k+1: 模式A 模式B
/ \ / \
时刻k+2: ... ...
隐式整数规划: 引入二进制变量$\gamma \in {0,1}$表示接触状态:
\[\begin{align} \mathbf{f}_n &\leq \gamma \cdot f_{\max} \\ \phi(\mathbf{q}) &\leq (1-\gamma) \cdot \phi_{\max} \end{align}\]这导致混合整数非线性规划(MINLP),可用分支定界法求解。
Boston Dynamics的Spot是一个具有12个自由度的四足机器人(每条腿3个关节)。其浮动基座动力学可表示为:
\[\begin{bmatrix} \mathbf{M}_b & \mathbf{M}_{bj} \\ \mathbf{M}_{bj}^T & \mathbf{M}_j \end{bmatrix} \begin{bmatrix} \ddot{\mathbf{x}}_b \\ \ddot{\mathbf{q}} \end{bmatrix} + \begin{bmatrix} \mathbf{h}_b \\ \mathbf{h}_j \end{bmatrix} = \begin{bmatrix} \mathbf{0} \\ \boldsymbol{\tau} \end{bmatrix} + \sum_{i=1}^{4} \mathbf{J}_i^T \mathbf{f}_i\]其中下标$b$表示基座(6自由度),$\mathbf{q} \in \mathbb{R}^{12}$为关节角度。
简化的单刚体模型用于MPC:
\(m\ddot{\mathbf{p}} = m\mathbf{g} + \sum_{i=1}^{4} \mathbf{f}_i\) \(\mathbf{I}\dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times \mathbf{I}\boldsymbol{\omega} = \sum_{i=1}^{4} (\mathbf{r}_i - \mathbf{p}) \times \mathbf{f}_i\)
Spot的MPC控制器采用分层架构:
控制架构:
┌──────────────────────┐
│ 高层规划器(1-10Hz) │ ← 用户命令
│ (步态、足端轨迹) │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ MPC控制器(100Hz) │ ← 状态估计
│ (质心动力学、接触力) │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ WBC控制器(1000Hz) │ ← 关节反馈
│ (关节力矩指令) │
└──────────────────────┘
MPC层的优化问题:
\[\begin{align} \min \quad & \sum_{k=0}^{N-1} \left[ \|\mathbf{x}_k - \mathbf{x}_k^{\text{ref}}\|_Q^2 + \sum_{i=1}^{4} \|\mathbf{f}_{i,k}\|_R^2 \right] \\ \text{s.t.} \quad & \text{单刚体动力学} \\ & \mathbf{f}_{i,k} = \mathbf{0} \quad \text{if } \gamma_{i,k} = 0 \text{ (摆动相)} \\ & \mathbf{f}_{i,n} \geq f_{\min} \quad \text{if } \gamma_{i,k} = 1 \text{ (支撑相)} \\ & \|\mathbf{f}_{i,t}\| \leq \mu \mathbf{f}_{i,n} \quad \text{(摩擦锥)} \end{align}\]为达到100Hz的控制频率,采用以下优化技术:
1. 问题重构为QP
通过固定接触序列和线性化动力学,将NMPC转化为QP:
\(\min_{\mathbf{z}} \quad \frac{1}{2}\mathbf{z}^T\mathbf{H}\mathbf{z} + \mathbf{g}^T\mathbf{z}\) \(\text{s.t.} \quad \mathbf{A}\mathbf{z} = \mathbf{b}, \quad \mathbf{C}\mathbf{z} \leq \mathbf{d}\)
其中$\mathbf{z} = [\mathbf{x}_0^T, \mathbf{f}_0^T, \ldots, \mathbf{x}_N^T]^T$。
2. 稀疏性利用
KKT系统具有带状结构:
KKT矩阵结构:
[H₀ A₀ᵀ ]
[A₀ H₁ A₁ᵀ ]
[ A₁ H₂ A₂ᵀ ]
[ ⋱ ⋱ ⋱ ]
[ Aₙ₋₁ Hₙ ]
使用带状矩阵求解器可将复杂度从$O(N^3n^3)$降至$O(Nn^3)$。
3. 代码优化
典型的性能指标:
计算性能:
控制性能:
鲁棒性测试:
扰动响应(20kg负载突加):
位置偏差(cm)
10│ ╱╲
8│ ╱ ╲
6│ ╱ ╲
4│ ╱ ╲___
2│ ╱ ───
0└─┴─┴─┴─┴─┴─┴─┴─┴─
0 0.5 1 1.5 2 时间(s)
本章深入探讨了非线性MPC在机器人控制中的理论与实践。关键要点包括:
核心概念:
关键公式:
| SQP线性化:$\mathbf{A}_k = \frac{\partial f}{\partial \mathbf{x}} | _{(\bar{\mathbf{x}}_k, \bar{\mathbf{u}}_k)}$ |
实践要点:
题目10.1:推导SQP算法的KKT条件 考虑约束优化问题: \(\min f(\mathbf{x}) \quad \text{s.t.} \quad g(\mathbf{x}) = 0, \quad h(\mathbf{x}) \leq 0\) 推导SQP迭代的KKT系统。
提示:使用拉格朗日函数并考虑二阶近似。
题目10.2:分析RTI的收敛性 证明在线性系统下,RTI方案与标准MPC的性能差距有界。
提示:考虑Riccati递归的收敛性。
题目10.3:设计四足机器人的简化MPC 给定质量$m=30$kg,惯量$\mathbf{I}=\text{diag}(0.5, 1.0, 0.8)$kg·m²,设计一个10步预测时域的MPC控制器。
提示:使用单刚体模型,固定接触序列。
题目10.4:接触隐式MPC的凸松弛 设计一种凸松弛方法,使接触隐式问题可用凸优化求解。分析松弛的保守性。
提示:考虑McCormick松弛或SDP松弛。
题目10.5:多机器人协调MPC 设计一个分布式MPC方案,协调3个机器人搬运一个共同物体。如何处理耦合约束?
提示:使用ADMM或双重分解。
题目10.6:学习增强的NMPC 设计一个结合深度学习的NMPC框架,用神经网络学习模型误差并在线补偿。讨论稳定性保证。
提示:考虑鲁棒MPC或管道MPC方法。
题目10.7:开放问题——实时性与最优性的权衡 讨论在机器人NMPC中,如何量化和优化实时性与最优性之间的权衡。考虑不同的应用场景(如无人机vs人形机器人),提出自适应策略。
提示:这是一个开放性问题,考虑计算资源分配、任意时算法、性能界等。
问题1:Hessian矩阵病态
问题2:约束不可行
问题3:偶发的求解时间尖峰
问题4:延迟导致的振荡
未补偿延迟的影响:
期望 ─────────────
实际 ~~~~~~~~ (振荡)
问题5:接触模型不准确
调试技巧: