4.2 状态预测器
0. 前言
在基于模型的控制系统中(LQR、MPC、NMPC 等),控制器依赖系统模型和当前状态来求解最优控制量。然而,从控制指令发出到执行器实际输出之间存在不可忽略的延迟。
以四旋翼电机为例(包括无刷电机和有刷电机),其动态特性可建模为一阶惯性系统:
其中
以
若控制器直接用当前传感器测量值
则已发出但尚未生效的纠正指令会被控制器"遗忘",从而在新的控制周期中再次叠加同类纠正量,导致超调、振荡甚至失稳。
状态预测器的核心思路:维护一个历史控制量的缓冲区,利用系统模型将这些"已发出但尚未完全生效"的指令代入模型进行开环推演,得到一个预测状态
本教程介绍两种状态预测器的实现方式:适用于线性系统的离散矩阵预测器,以及适用于非线性系统的RK4 积分预测器。
读完本文后,你将能够:
- 量化电机延迟对控制性能的影响,理解为什么"用当前状态算误差"会引入振荡
- 实现离散矩阵预测器:用矩阵指数法离散化
,配合 FIFO 控制历史做开环多步推演 - 实现 RK4 积分预测器:用四阶龙格-库塔法对非线性动力学做高精度前向积分
- 根据控制器类型(线性 vs. 非线性)和姿态表示(欧拉角 vs. 四元数)选择合适的预测器
- 理解两种预测器与 Smith 预估器的关系,掌握预测时域的工程选择方法
目录
2. 方法一:离散矩阵预测器(线性系统)
2.1 适用场景
- LQR 控制、线性 MPC 等基于线性状态空间模型的控制器
- 系统可表示为
的标准形式 - 模型维度适中,矩阵运算开销可接受
2.2 连续模型与精确离散化
已知连续状态空间方程:
为得到可用于离散迭代的形式,采用矩阵指数法在零阶保持 (ZOH) 假设下精确离散化。构造增广矩阵:
利用矩阵指数:
提取离散化结果:
得到离散状态空间方程:
该方法等价于在 ZOH 假设下对连续系统做精确积分。当采样频率远高于系统带宽时,精度远优于前向欧拉法。
2.3 状态向量的选取
以 12 维状态向量为例(欧拉角姿态表示):
其中
2.4 预测器设计
维护一个长度为
单步预测
多步开环推演
x̂ ← x_k (以当前测量为起点)
for i = 0 to N-1:
x̂ ← A_d · x̂ + B_d · u_{k-N+i}
x̂_pred ← x̂完整数学形式:
用于反馈的误差计算方法
关键差异:反馈误差用预测状态而非当前测量状态:
而非:
控制器基于
2.5 控制环路完整流程
传感器 → x_k (当前测量)
│
▼
predictUpdate(x_k, H) → 开环推演 N 步
│
▼
x̂_pred (预测状态)
│
▼
e = x_goal - x̂_pred
│
▼
控制器求解 u_k (LQR / 线性 MPC / ...)
│
▼
限幅 + 悬停前馈
│
▼
motorUpdate(u_k) → 一阶惯性滤波
│
▼
实际推力 → 被控对象
│
▼
H ← FIFO-shift(H, u_k)2.6 预测时域的选择
| 因素 | 缩短时域 | 延长时域 |
|---|---|---|
| 未完成指令覆盖 | 不足( | 更充分( |
| 预测误差累积 | 较小 | 增大(线性化误差 |
| 旧指令权重 | — |
2.7 方法局限性
模型失配:预测模型假设控制量瞬时生效(
开环误差累积:线性化误差、参数误差、未建模动态随
改进方向:将执行器动态增广进状态空间,使控制器内建延迟补偿,无需外挂预测器。代价是状态维数增加。
2.8 与 Smith 预估器的关系
本预测器在思想上属于 Smith 预估器 的离散化变体。标准 Smith 预估器针对纯延迟系统
┌─── G(s) ───┐
u ──────→│ │──→ + ──→ y
│ └───────────┘ +
│ -
└──→ G(s)(1 - e^{-τs}) ──┘本方法将纯延迟替换为一阶惯性
3. 方法二:RK4 积分预测器(非线性系统)
3.1 适用场景
- NMPC(非线性模型预测控制)等基于非线性动力学的控制器
- 系统动力学不能或不应被线性化(大角度机动、全姿态控制)
- 需要使用四元数姿态表示以避免欧拉角的奇异性问题
3.2 状态空间表示
状态向量采用 13 维,使用四元数表示姿态以避免万向节死锁:
| 符号 | 含义 | 坐标系 |
|---|---|---|
| 姿态四元数( | 机体→世界的旋转 | |
| 三轴角速度 | 机体坐标系 | |
| 三维位置 | 世界坐标系(惯性系) | |
| 线速度 | 世界坐标系(惯性系) |
控制输入不变:
3.3 非线性动力学方程
系统满足
3.3.1 姿态运动学(四元数导数)
四元数微分方程:
该方程保证四元数的时间演化始终对应于合法的三维旋转。
3.3.2 姿态动力学(欧拉方程)
刚体转动动力学:
求解角加速度:
其中
3.3.3 位置运动学
即
3.3.4 线加速度(牛顿第二定律)
电机混合矩阵:将四个电机推力映射为机体坐标系合力与力矩:
机体合力(十字型布局下,推力仅沿机体 Z 轴):
机体合力矩:
其中
四元数旋转变换:将机体合力转至世界坐标系:
其中
含重力的加速度:
3.4 数值积分:四阶龙格-库塔法(RK4)
由于非线性动力学
对于给定步长
精度特性:
| 指标 | 量级 |
|---|---|
| 局部截断误差 | |
| 全局截断误差 |
3.5 四元数后处理
数值积分会使四元数偏离单位球面,每步积分后需归一化:
3.6 预测接口
单步预测
输入当前状态和单一控制向量,输出下一时刻状态。
多步轨迹预测
x[0] ← x_init
for i = 0 to N-1:
x[i+1] ← RK4(x[i], u[i], Δt)输入初始状态和控制序列
4. 两种方法的对比
| 维度 | 离散矩阵预测器 | RK4 积分预测器 |
|---|---|---|
| 适用系统 | 线性或可线性化的系统 | 非线性系统 |
| 典型控制器 | LQR、线性 MPC | NMPC |
| 状态表示 | 欧拉角(小角度假设) | 四元数(无奇异性) |
| 单步计算 | 一次矩阵-向量乘法 | 四次函数求值 |
| 计算复杂度 | ||
| 模型精度 | 受限于线性化精度(仅在小角度附近有效) | 保留完整非线性动力学,大角度有效 |
| 离散化 | 一次性精确离散化(矩阵指数) | 每步数值积分(RK4) |
| 实现难度 | 低 | 中等 |
| 扩展性 | 需重新离散化 | 直接修改 |
选择指南
控制器是线性的(LQR / 线性 MPC)?
│
┌────┤
│ │
是 否(NMPC / 非线性控制器)
│ │
▼ ▼
离散 系统是否需要
矩阵 全姿态 / 大角度?
预测 │
器 ┌────┤
│ │
是 否
│ │
▼ ▼
RK4 可考虑
积分 线性化后
预测 使用离散
器 预测器关于姿态表示的补充说明
两种方法采用不同的姿态表示,这并非随意选择,而是由其底层状态迭代机制的根本差异决定的。
离散矩阵预测器依赖加法迭代:
欧拉角在小角度假设下满足这一条件:运动学退化为
状态分量(
因此在采用了线性化模型的前提下,欧拉角不是"更好的选择",而是唯一可行的姿态表示。代价是必须接受小角度假设和万向节死锁的理论风险,好在悬停/近悬停工况下这些条件自然满足。
RK4 积分预测器没有形式限制。RK4 每步直接调用
k1 = f(x_k, u_k)
k2 = f(x_k + dt/2·k1, u_k)
...小结:姿态表示的差异不是设计偏好,而是两种状态迭代范式的直接产物:加法迭代决定了线性预测器必须用欧拉角,函数求值赋予了非线性预测器自由使用四元数的能力。
5. 统一的物理参数
两套预测器共享同一组飞行器物理参数:
| 参数 | 符号 | 说明 |
|---|---|---|
| 质量 | 四旋翼总质量 [kg] | |
| 转动惯量 | 三轴转动惯量 [kg·m²] | |
| 反扭系数 | 电机反扭与推力比例 | |
| 力臂 | 电机轴到质心距离 [m] | |
| 重力加速度 | 9.81 m/s² | |
| 控制周期 | 预测步长 [s] | |
| 电机时间常数 | 一阶惯性主导时间尺度 [s] |
6. 总结
两种状态预测器的本质相同:利用系统模型和历史控制量,开环推演执行器延迟之后系统的等效状态,从而使控制器的反馈建立在更接近真实物理状态的基础上。
区别在于模型的形式和求解手段:
- 离散矩阵预测器将连续模型一次性精确离散化为
,后续每次预测只需做矩阵乘法,计算极轻量。适合线性模型和欧拉角姿态表示。 - RK4 积分预测器保留完整非线性动力学,每步通过四阶龙格-库塔法进行数值积分。精度高、适用面广,但计算开销较大。适合 NMPC 和四元数全姿态控制。
在实际工程中,应根据控制器类型和姿态表示方式选择对应的预测器。两类预测器的控制历史管理、FIFO 移位、预测时域选择等上层逻辑完全一致,可以统一抽象。
本章参考资料与引申阅读已汇总至 参考资料。
