当控制目标是让系统最终稳定在一个非零的稳态目标值 时,可以采用一种分离控制量的方法,将问题转化为一个LQR调节器问题。这种方法适用于目标值为常量的场景。
一、核心思想:分离稳态与动态控制
其核心思想是将总的控制输入 分解为两部分:
- 稳态输入 :维持系统稳定在目标状态 所需的恒定输入。
- 动态误差输入 :用于消除系统从当前状态到稳态的偏差。
要让马儿跑,就得让马儿吃草
不奢望输出为零;转而要求输出接近稳态目标
二、详细推导过程
1. 稳态输入 的求解
当系统达到稳态时,状态不再变化,即 。此时的输入为 。将这些稳态条件代入离散时间系统的状态方程:
得到:
为了解出 ,我们将包含 的项移到等式左边:
提取公因子 :
由此可求解 。注意:矩阵 通常不是方阵,无法直接求逆。实际应用中,这是一个标准的线性方程组,应使用数值方法(如MATLAB中的反斜杠运算符
\
)求解。2. 增广状态空间方程的构建
我们的目标是建立一个以动态误差输入 为输入,同时包含系统状态 和目标状态 的新系统。
首先,将分离后的控制输入 代回原系统方程:
利用乘法分配律展开:
从第1步我们知道 ,将其代入上式,替换掉 项:
至此,我们得到了 的新动态方程。现在,我们定义增广状态向量 。它的动态由两部分组成:
- 的动态(我们刚刚推导出)。
- 的动态。因为 是一个常量,所以它的动态是 。
将这两个动态方程组合成一个矩阵形式:
这就得到了增广系统的状态空间方程:
其中增广矩阵为:
3. 增广代价函数的转换
代价函数被定义为对状态误差 和动态误差输入 的惩罚:
为了求解,我们需要将代价函数用增广状态 来表示。
首先,将误差 表示为增广状态的线性变换:
现在,将 代入代价函数中的二次型项 :
根据矩阵转置的性质 :
由于矩阵乘法满足结合律,我们可以重新组合括号:
我们定义新的增广权重矩阵 。同理,终端代价的权重矩阵为 。
最终,代价函数完全转换为关于增广状态 和动态误差输入 的形式:
三、结论
通过上述推导,原问题被成功转化为一个以 为状态, 为输入的标准LQR调节器问题。
我们可以直接求解这个增广LQR问题,得到最优的动态误差输入 是关于增广状态 的线性反馈:
最终,系统的总控制输入为稳态输入与最优动态误差输入之和:
代码与实验结果
LQR_tracking_const_2.mlx
实验结果

很顺利地得到了预期的结果,稳态误差被消除