LQR
Problem
xt+1=Axk+Buk
xk:state at time tuk:input at time t
It assumes a quadratic cost function :
J=∑n=0N−1 ( xTnQxn+uTnRun ) + xNPxN
with Q,R,P 正定
这里讨论的求解lqr是,在有模型的约束下面,以及初始条件 x0 , 求解使性能指标最小的u 以及 x
求解过程,迭代求解
先定义cost-to-go function
Ji(xi)=∑n=iN−1(xTnQxn+uTnRun)+xTNPxN
可以理解为从第i时刻开始以初始条件为 xi 到最后产生的性能指标
推导的思想采用动态规划的思想,就是如果想要
J
最小,我们可以通过迭代求解cost-to-go function的最小值来实现。
那么可以很简单的推导为:
这里再把模型的约束 xt+1=Axk+Buk 带入可以得到
JN−1(xN−1)=xTN−1QxN−1+uTN−1RuN−1+JN(AxN−1+BuN−1) (1)
为了推导方便,这里将(1)中的 xN−1,uN−1 替换成 x,u
那么:
JN−1(x)=xTQx+uTRu+(Ax+Bu)TP(Ax+Bu) (2)
将(2)对u求梯度然后令其为0可以得到:
∇u{(2)}=2Ru+2BTP(Ax+Bu)=0
u=−(R+BTPB)−1BTPAx (3)
将(3)带入(2), 令 (R+BTPB)−1BTPA=k , 即 u=−kx
JN−1(x)=xTP^xP^=Q+kTRk+(A−Bk)TP(A−Bk)
这里可以看到求解后发现, JN−1 最后也可以写成 xTPx 的形式,只是P要更新,所以可以迭代的像后面求解,而且结果都是统一的形式
求解结果
loop for i = N-1 : i>=0 : i–
k=(R+BTPB)−1BTPAui=−kxP=Q+kTRk+(A−Bk)TP(A−Bk)