3. LQR
PID 只看误差、误差积分和误差变化率。对单关节来说,这已经很有用;但对倒立摆、机械臂、四足质心或移动机器人,多个状态量会互相耦合,只看一个误差往往不够。
状态空间方法把系统写成“状态如何随控制输入变化”的形式。LQR 则在这个表示上,自动求一个兼顾稳定性和控制代价的反馈增益。
3.1 状态变量
状态是描述系统当前情况所需的一组最小变量。
对单关节,可以选:
其中
对移动机器人,可以选:
对倒立摆,可以选:
控制器不再只看“位置差多少”,而是同时看位置、速度、姿态和角速度。
3.2 线性系统
离散时间线性系统写成:
例如一个非常简化的双积分系统:
这里
3.3 二次代价
LQR 的目标是让状态回到目标,同时不要用太大的控制输入。它定义一个二次代价:
直觉上:
越大,系统越在意状态误差。 越大,系统越舍不得用力。- 某个状态维度权重越大,控制器越优先修正它。
LQR 会求出一个反馈矩阵:
这个
3.4 PD 关系
对单自由度位置控制,如果状态是:
LQR 得到的反馈可能长得像:
这和 PD 控制非常像。区别在于:
- PD 的
、 多靠经验调。 - LQR 根据系统模型和代价权重求反馈增益。
- LQR 更自然地处理多状态、多输入耦合。
所以 LQR 不是完全陌生的新东西,它可以看作“模型化、优化化的多变量 PD”。
3.5 Q R 调参
LQR 调参不是直接调增益,而是调权重。
常见策略:
- 先把状态量归一化,避免角度、位置、速度量纲差异太大。
- 对最重要的状态给更高
,比如倒立摆角度、移动机器人横向误差。 - 如果动作太猛,增大
。 - 如果回目标太慢,增大关键状态的
或减小 。 - 在仿真里看状态曲线和控制输入曲线,而不是只看最后是否成功。
一个常见误区是:想让系统更快,就把所有
3.6 适用边界
适合:
- 工作点附近的小范围稳定。
- 倒立摆、姿态稳定、质心局部控制。
- 能获得相对准确线性模型的系统。
- 需要同时考虑多个状态量的反馈控制。
不适合:
- 强非线性、大范围运动且不做重新线性化。
- 有复杂约束,比如力矩上限、避障、接触切换。
- 模型误差很大且没有反馈校正。
- 需要显式考虑未来障碍物或轨迹约束的任务。
这些不适合的场景,正是 MPC 更常出现的地方。但在进入 MPC 前,我们先补一块非常重要的工程内容:轨迹跟踪与前馈控制。