最优二次型与MPC很相似。有着相同的损失函数,唯一不是十分相同的就是在最优二次型的里面不含有硬约束。
当然如果控制步长为一,并且带有一段预瞄距离,则LQR转变成了单步的模型预测控制。
废话不说,我发行除了求解LQR比较麻烦以外,这LQR就没有什么复杂的(这里必须要吐槽一下自动控制原理第六版,因为里面求解的K矩阵与目前Apollo代码,相差较大
无奈之下,只能按照泛函去推导,推导过后仍发现不一样,最终我妥协了,我还是按照matlab官方文档去求解反馈矩阵)
实际上LQR就一个公式:
X(K+1) = AX(K)+BU(K)
将U(K) = -kX(k)
而在自动控制原理书中从泛函角度分析,构建哈密顿函数,通过欧拉方程求解最优控制u,
若实际中包含软约束,则u是拉格朗日系数lamda的函数。
u = f(lamda)
假设lamada = px ,则可以将u变换成了kx的形式。
今天同事问为什么一定是u= -kx ,为什么不是 u=kx呢?原因是将u=-kx带入得到:
X(K+1) = (A-BK)X(K) ;
其中我们希望A-BK要小于0 ;
相当于:
X(K+1) = -KX(K) ;
绘制x(k+1) 与x(k)的图可知。只有A-BK <0 ,该条曲线横跨2、4项限,最终可以收敛,否则一直发散。
具体怎么求的,就不再严格推导了。因为发现推导方法,一人一个,最终求解方法决定参考apollo的方法了。