**:
本文主要介紹lqr的直觀推導,說明lqr目標函式j選擇的直觀含義以及簡單介紹矩陣q,r的選取,最後總結lqr控制器的設計步奏,並將其應用在乙個簡單的倒立擺例子上。
假設有乙個線性系統能用狀態向量的形式表示成:
其中在介紹lqr前,先簡單回顧一下現代控制理論中最基本的控制器--全狀態反饋控制。
全狀態反饋控制系統圖形如下:
我們要設計乙個狀態反饋控制器
使得閉環系統能夠滿足我們期望的效能。我們把這種控制代入之前的系統狀態方程得到
對於(1)式的開環系統,由現代控制理論我們知道開環傳遞函式的極點就是系統矩陣a的特徵值。(傳遞函式的分母是|si -a|,|·|表示行列式)
現在變成了(2)的閉環形式,狀態變換矩陣a變成了(a-bk)。因此通過配置反饋矩陣k,可以使得閉環系統的極點達到我們期望的狀態。注意,這種控制器的設計與輸出矩陣c,d沒有關係。
那麼,什麼樣的極點會使得系統效能很棒呢?並且,當系統變數很多的時候,即使設計好了極點,矩陣k也不好計算。
於是,lqr為我們設計最優控制器提供了一種思路。
在設計lqr控制器前,我們得設計乙個能量函式,最優的控制軌跡應該使得該能量函式最小。一般選取如下形式的能量函式。
可是,為什麼能量函式(或稱系統的目標函式)得設計成這個樣子呢?
首先假設狀態向量x(t)是1維的,那麼
其實就是乙個平方項 qx^2 >= 0,
能量函式j要最小,那麼狀態向量x(t),u(t)都得小。j最小,那肯定是個有界的函式,我們能推斷當t趨於無窮時,狀態向量x(t)將趨於0,這也保證了閉環系統的穩定性。那輸入u(t)要小是什麼意思呢?它意味著我們用最小的控制代價得到最優的控制。譬如控制電機,輸入pwm小,將節省能量。
再來看看矩陣q,r的選取
,一般來說,q值選得大意味著,要使得j小,那x(t)需要更小,也就是意味著閉環系統的矩陣(a-bk)的特徵值處於s平面左邊更遠的地方,這樣狀態x(t)就以更快的速度衰減到0。另一方面,大的r表示更加關注輸入變數u(t),u(t)的減小,意味著狀態衰減將變慢。同時,q為半正定矩陣意味著他的特徵值非負,r為正定矩陣意味著它的特徵值為正數。如果你選擇q,r都是對角矩陣的話,那麼q的對角元素為正數,允許出現幾個0.r的對角元素只能是正數。
注意lqr調節器是將狀態調節到0,這與軌跡跟蹤不同,軌跡跟蹤是使得系統誤差為0.
知道了背景後,那如何設計反饋矩陣k使得能量函式j最小呢?很多地方都是從最大值原理,hamilton函式推導出來。這裡用另外一種更容易接受的方式推導。
將u = -kx 代入之前的能量函式得到:
為了找到k,我們先不防假設存在乙個常量矩陣p使得:
代入(3)式得:
注意,我們已經假設閉環系統是穩定的,也就是t趨於無窮時,x(t)趨於0.
現在把(4)式左邊的微分展開,並把狀態變數x的微分用(2)式替代得到:
這個式子要始終成立的話,括號裡的項必須恆等於0.
這是乙個關於k的二次型等式,當然這個二次型是我們不願看到的,因為計算複雜。現在只要這個等式成立,我們何必不選擇k使得兩個二次項正好約掉了呢?這樣既符合了要求,又簡化了計算。
取k的二次項沒有了,可k的取值和p有關,而p是我們假設的乙個量,p只要使得的(6)式成立就行了。而(6)式在現代控制理論中極其重要,它就是有名的riccati 方程。
現在回過頭總結下lqr控制器是怎麼計算反饋矩陣k的:
1.選擇引數矩陣q,r
2.求解riccati 方程得到矩陣p
3.計算
再看看lqr的結構圖:
關於它的應用呢,比較典型的就是倒立擺控制器的設計。
倒立擺的狀態變數為
a = [0 1 0 0
0 0 -1 0
0 0 0 1
0 0 9 0];
b = [0;0.1;0;-0.1];
c = [0 0 1 0]; %觀測角度
d = 0;
q = [1 0 0 0
0 1 0 0
0 0 10 0
0 0 0 10
];r = 0.1;
%由上面這個系統,可以計算出k
k = lqr(a,b,q,r);
ac = a - b*k;
%對系統進行模擬
x0 = [0.1;0;0.1;0]; %初始狀態
最後看到角度回到0,即平衡位置,控制器起到了作用,你可以選擇不同的q,r進行對比。
文章為總結性文章,有紕漏,請指出,謝謝。
reference:
1.f.l. lewis .<>
2.3.
LQR 的直觀推導及簡單應用
本文主要介紹lqr的直觀推導,說明lqr目標函式j選擇的直觀含義以及簡單介紹矩陣q,r的選取,最後總結lqr控制器的設計步奏,並將其應用在乙個簡單的倒立擺例子上。假設有乙個線性系統能用狀態向量的形式表示成 其中在介紹lqr前,先簡單回顧一下現代控制理論中最基本的控制器 全狀態反饋控制。全狀態反饋控制...
錯排公式的推導及應用
同時發布在我的個人部落格 以下是原文 考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排,n個元素的錯排記為d n 下面就是求出d n 為多少中排列。首先我們拿第乙個元素的放置來理解一下這個過程 把元素1放在除自己原來的位置以外的位置,共有 ...
matlab符號推導應用及相關技巧
手撕公式必不可少,但是難免出錯。在戰略上手推公式,而在戰術上用matlab符號推導輔助和驗證可以大幅度減少出錯,並提高效率。1.符號推導第一步,學會使用sym和syms a.生成 單個符號變數 sym ab.生成 單個符號變數 syms a b c dc.生成矩陣符號變數sym和syms的區別使用s...