LQR控制算法推导以及简单分析
首先,這篇文章是看了幾個(gè)大神的博客后,自己抄錄以及整理的內(nèi)容,其中有些自己的想法,但是原理部分基本都是學(xué)習(xí)大神們的,在此先說明一下。
1 全狀態(tài)反饋控制系統(tǒng)
在介紹LQR之前,首先,先回顧一下現(xiàn)在控制理論中的基本的控制器 —————— 全狀態(tài)反饋控制,上圖
假設(shè)有一個(gè)線性系統(tǒng)用狀態(tài)向量表示:
{x˙=Ax+Buy=Cx+Du(1)\begin{cases} \dot{x} = Ax + Bu & \\ y = Cx + Du & \end{cases} \tag{1} {x˙=Ax+Buy=Cx+Du??(1)
其中,x(t)∈Rnx(t) \in R^nx(t)∈Rn,u(t)∈Rmu(t) \in R^mu(t)∈Rm,初始條件是x(0)x(0)x(0)。
在此,我們需要設(shè)計(jì)一個(gè)狀態(tài)反饋控制器
u=?Kx(2)u = -Kx \tag{2} u=?Kx(2)
使上述控制器能達(dá)到期望的穩(wěn)定性能,將式(2)帶入系統(tǒng)狀態(tài)方程(1)中,有
x˙=(A?BK)x=Acx(3)\dot{x} = (A - BK)x = A_{c}x \tag{3} x˙=(A?BK)x=Ac?x(3)
設(shè)定系統(tǒng)中的各個(gè)狀態(tài)量都可知,式(1)所示的開環(huán)系統(tǒng),傳遞函數(shù)的極點(diǎn)就是系統(tǒng)矩陣A的特征值。現(xiàn)在變換成了式(2)的閉環(huán)形式,通過配置反饋矩陣KKK,可以使得閉環(huán)系統(tǒng)達(dá)到所期望的系統(tǒng)狀態(tài)。(注意,這種控制器設(shè)計(jì)與矩陣C、D沒什么關(guān)系)
SO,來了一個(gè)新的問題,極點(diǎn)在什么樣的位置會(huì)使得系統(tǒng)的性能較好呢?并且,當(dāng)系統(tǒng)變量很多的時(shí)候,就算設(shè)計(jì)極點(diǎn)已經(jīng)達(dá)到了最優(yōu),矩陣K的計(jì)算如何計(jì)算呢?
因此,LQR提供了如下思路。
2 LQR
LQR的目標(biāo)就是找到一組控制量u0,u1,...u_0,u_1,...u0?,u1?,...,使得同時(shí)有x0,x1,...x_0,x_1,...x0?,x1?,...足夠小(系統(tǒng)達(dá)到穩(wěn)定狀態(tài)),u0,u1,...u_0,u_1,...u0?,u1?,...足夠小(控制量盡量小的變化),選取代價(jià)函數(shù)為
J=12∫0∞xTQx+uTRudt(4)J = {1 \over 2}\int_0^\infty {x^TQx + u^TRu} \space dt \tag{4} J=21?∫0∞?xTQx+uTRu?dt(4)
其中,Q、R就是需要設(shè)計(jì)的半正定矩陣和正定矩陣。
看上式(4)是不是線代中的二次型(線代真的是一門重要的學(xué)科,工程中大量都是線代的運(yùn)算),而且還是那種只有平方項(xiàng)的二次型,這樣就成了最小二乘法的問題。代價(jià)函數(shù)JJJ需要達(dá)到最小值,那么在ttt趨近于無窮時(shí),狀態(tài)向量x(t)x(t)x(t)肯定趨近于0,即是達(dá)到了系統(tǒng)穩(wěn)態(tài);同理,ttt趨近于無窮時(shí),控制向量u(t)u(t)u(t)也會(huì)趨近于0,意味著,隨著時(shí)間的推移,需要對系統(tǒng)施加的控制量會(huì)越來越小,意味著使用最小的控制量使得系統(tǒng)達(dá)到了最終控制目標(biāo)。
下面來聊聊Q、R值的選取,一般來說,選取Q、R矩陣的時(shí)候,為了方便觀察各個(gè)系統(tǒng)狀態(tài)量而選取對角陣,增加Q的一個(gè)值,意味著這個(gè)值作用的系統(tǒng)狀態(tài)量,將以更快的速度衰減到0,這時(shí)候,舉個(gè)栗子還是很必要的,比如,Q11Q_{11}Q11?選取較大的值,會(huì)讓x1x_1x1?很快的衰減到0;另外一方面,加大RRR的值,會(huì)使得對應(yīng)的控制量減小,控制器執(zhí)行更少的動(dòng)作,意味著系統(tǒng)的狀態(tài)衰減將變慢。所以,Q、RQ、RQ、R的選取,要綜合看具體的實(shí)際應(yīng)用場景來調(diào)節(jié),俗話說,魚和熊掌不可兼得,這個(gè)矛盾就像做的軌跡跟蹤MPC中的設(shè)置不同的權(quán)重一樣,期望車輛后軸心cte值越小,那么到了轉(zhuǎn)彎處必須要很大幅度的剎車,以及打方向盤,速度以及yaw都會(huì)大幅度變化,而如果期望執(zhí)行器動(dòng)作越小,那么就無法保證cte的準(zhǔn)確度一樣。
好了,上面介紹了一些參數(shù)的意義問題,下面重點(diǎn)就是公式的推導(dǎo)了,在不同大神那看到了不同的推導(dǎo)方式,下面就把自己比較欣賞的一種寫出來吧,雖說過程也很重要,但是工程嘛,只要結(jié)果對,效果好,選個(gè)自己看起來舒服的方式就好了,開始推導(dǎo)過程
J=12∫0∞xT(Q+KTRK)xdt(5)J = {1 \over 2}\int_0^\infty x^T(Q + K^TRK)x \space dt \tag{5} J=21?∫0∞?xT(Q+KTRK)x?dt(5)
ddt(xTPx)=?xT(Q+KTRK)x(6){d \over dt}(x^TPx) = - x^T(Q + K^TRK)x \tag{6} dtd?(xTPx)=?xT(Q+KTRK)x(6)
J=?12∫0∞ddtxT(P)x=12xT(0)Px(0)(7)J = -{1 \over 2}\int_0^\infty \fracozvdkddzhkzd{dt}x^T(P)x \space = {1 \over 2}x^T(0)Px(0) \tag{7} J=?21?∫0∞?dtd?xT(P)x?=21?xT(0)Px(0)(7)
式(7)的意思就是,t趨近于無窮時(shí),系統(tǒng)狀態(tài)向量x(t)趨近于0,這樣就直接結(jié)算出了積分方程。
x˙TPx+xTPx˙+xTQx+xTKTRKx=0\dot{x}^{T}Px + x^{T}P\dot{x}+x^TQx+x^TK^TRKx = 0 x˙TPx+xTPx˙+xTQx+xTKTRKx=0
狀態(tài)變量x的微分用式(3)表示,
xTAcTPx+xTPAcx+xTQx+xTKTRKx=0x^{T}A^{T}_cPx+x^{T}PA_{c}x+x^TQx+x^TK^TRKx = 0 xTAcT?Px+xTPAc?x+xTQx+xTKTRKx=0
整理后,有
xT(AcTP+PAc+Q+KTRK)x=0(8)x^{T}(A^{T}_{c}P+PA_{c}+Q+K^{T}RK)x=0 \tag{8} xT(AcT?P+PAc?+Q+KTRK)x=0(8)
這樣,就又回到了二次型的問題,如果式(8)要有解,那么括號里面的部分必須等于0.
AcTP+PAc+Q+KTRK=0(9)A^{T}_{c}P+PA_{c}+Q+K^{T}RK = 0 \tag{9} AcT?P+PAc?+Q+KTRK=0(9)
把Ac=A?BKA_c = A-BKAc?=A?BK代入式(9)
(A?BK)TP+P(A?BK)+Q+KTRK=0(10)(A-BK)^{T}P+P(A-BK)+Q+K^{T}RK = 0 \tag{10} (A?BK)TP+P(A?BK)+Q+KTRK=0(10)
ATP+PA+Q+KTRK?KTBTP?PBK=0(11)A^{T}P+PA+Q+K^{T}RK-K^{T}B^{T}P-PBK=0 \tag{11} ATP+PA+Q+KTRK?KTBTP?PBK=0(11)
ATP+PA+Q+KTR(R?1BTP)?KTBTP?PB(R?1BTP)=0A^{T}P+PA+Q+K^{T}R(R^{-1}B^TP)-K^{T}B^{T}P-PB(R^{-1}B^TP)=0 ATP+PA+Q+KTR(R?1BTP)?KTBTP?PB(R?1BTP)=0
ATP+PA+Q?PBR?1BTP=0(12)A^{T}P+PA+Q-PBR^{-1}B^TP=0 \tag{12} ATP+PA+Q?PBR?1BTP=0(12)
式(12)中,A,B,Q,RA,B,Q,RA,B,Q,R都是已知量,那么通過式(12)可以求解出PPP,式(12)就是著名的Riccati方程。
總結(jié)
上面,從理論以及公式推導(dǎo)兩個(gè)方面,介紹了LQR,現(xiàn)在從頭看一下LQR的思路:
- 選擇參數(shù)矩陣Q,R
- 求解Riccati方程得到矩陣P
- 根據(jù)P計(jì)算K=R?1BTPK=R^{-1}B^{T}PK=R?1BTP
- 計(jì)算控制量u=?Kxu=-Kxu=?Kx
MPC與LQR比較
MPC和LQR兩種控制方式有很多的相似之處,但是也有很多不相同的地方,
- 首先,LQR的研究對象是現(xiàn)代控制理論中的狀態(tài)空間方程給出的線性系統(tǒng),而MPC的研究對象可以是線性系統(tǒng),也可以是非線性系統(tǒng)。不過現(xiàn)在很多的做法都是將非線性系統(tǒng)線性化,然后進(jìn)行相關(guān)計(jì)算,具體要根據(jù)自己的工程情況來確定哪種方式比較好,比如之前做MPC的時(shí)候,線控車底層速度控制接口就是加速度,那就沒必要根據(jù)IMU再套嵌個(gè)一層PID。
- 其次,既然是優(yōu)化問題,那就離不開目標(biāo)函數(shù)的設(shè)計(jì),LQR的目標(biāo)函數(shù)在上面已經(jīng)有描述,MPC的目標(biāo)函數(shù),多數(shù)都是多個(gè)優(yōu)化目標(biāo)乘以不同權(quán)重然后求和的方式。雖然方式不同,不過都是對達(dá)到控制目標(biāo)的代價(jià)累計(jì)。
- 最后,工作時(shí)域上的不同,LQR的計(jì)算針對同一工作時(shí)域,在一個(gè)控制周期內(nèi),LQR只計(jì)算一次,并將此次計(jì)算出的最優(yōu)解下發(fā)給控制器即可;而MPC是滾動(dòng)優(yōu)化的,計(jì)算未來一段時(shí)間內(nèi),每個(gè)采樣周期都會(huì)經(jīng)過計(jì)算,得出一組控制序列,但是只將第一個(gè)控制值下發(fā)給控制器。
Reference:
總結(jié)
以上是生活随笔為你收集整理的LQR控制算法推导以及简单分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有什么软件能一帧一帧的播放视频吗?KMP
- 下一篇: Servlet工作原理