对倒立摆的LQR控制
1 問(wèn)題建模
首先對(duì)待研究的問(wèn)題建立數(shù)學(xué)模型
在倒立擺模型分析這篇文章里,我們已經(jīng)做了完整的受力分析。最終得到了關(guān)于系統(tǒng)變量的微分方程。
(M+m)x¨+bx˙?mlψ¨=u(M+m)\ddot{x}+b\dot{x}-ml\ddot{\psi}= u(M+m)x¨+bx˙?mlψ¨?=u
(I+ml2)ψ¨?mglψ=mlx¨(I+ml^2)\ddot{\psi}-mgl\psi = ml\ddot{x}(I+ml2)ψ¨??mglψ=mlx¨
2 狀態(tài)空間
可以將狀態(tài)空間理解為一個(gè)包含系統(tǒng)輸入、系統(tǒng)輸出和狀態(tài)變量的集合,它們之間的關(guān)系可以用一個(gè)一階微分方程表達(dá)出來(lái)。
狀態(tài)空間(集合)={系統(tǒng)輸入系統(tǒng)輸出狀態(tài)變量}=一階微分方程狀態(tài)空間(集合)=\left\{ \begin{aligned} 系統(tǒng)輸入\\ 系統(tǒng)輸出\\ 狀態(tài)變量 \end{aligned} \right\}=一階微分方程 狀態(tài)空間(集合)=??????系統(tǒng)輸入系統(tǒng)輸出狀態(tài)變量???????=一階微分方程
通過(guò)觀察我們知道,目前系統(tǒng)模型是以二階微分方程的形式描述的。為了消除方程中的高階項(xiàng),可以整理得到下面的式子。
{x˙=x˙x¨=m2l2gI(m+M)+mMl2ψ?b(I+ml2)I(m+M)+mMl2x˙+(I+ml2)I(m+M)+mMl2uψ˙=ψ˙ψ¨=mlg(m+M)I(m+M)+mMl2ψ?mlbI(m+M)+mMl2x˙+mlI(m+M)+mMl2u\left\{\begin{array}{l} \dot{x}=\dot{x}\\ \ddot{x}=\frac{m^2l^2g}{I(m+M)+mMl^2} \psi-\frac{b(I+ml^2)}{I(m+M)+mMl^2} \dot{x}+\frac{(I+ml^2)}{I(m+M)+mMl^2}u\\ \dot{\psi}=\dot{\psi}\\ \ddot{\psi}=\frac{mlg(m+M)}{I(m+M)+mMl^2}\psi-\frac{mlb}{I(m+M)+mMl^2}\dot{x}+\frac{ml}{I(m+M)+mMl^2}u \end{array}\right.??????????x˙=x˙x¨=I(m+M)+mMl2m2l2g?ψ?I(m+M)+mMl2b(I+ml2)?x˙+I(m+M)+mMl2(I+ml2)?uψ˙?=ψ˙?ψ¨?=I(m+M)+mMl2mlg(m+M)?ψ?I(m+M)+mMl2mlb?x˙+I(m+M)+mMl2ml?u?
已知系統(tǒng)狀態(tài)空間方程的標(biāo)準(zhǔn)形式為:
{x˙=Ax+Buy=Cx+Du\left\{\begin{array}{l} \dot{x}=Ax+Bu\\ y=Cx+Du \end{array}\right. {x˙=Ax+Buy=Cx+Du?
式中x˙\dot{x}x˙表示系統(tǒng)中的一階微分項(xiàng),yyy表示系統(tǒng)狀態(tài)。以矩陣運(yùn)算的形式表示系統(tǒng)的狀態(tài)空間方程:
[x˙x¨ψ˙ψ¨]=[01000?b(I+ml2)I(m+M)+mMl2m2l2gI(m+M)+mMl2000010?mlbI(m+M)+mMl2mlg(m+M)I(m+M)+mMl20]×[xx˙ψψ˙]+[0(I+ml2)I(m+M)+mMl20mlI(m+M)+mMl2]u\begin{bmatrix} \dot{x}\\ \ddot{x}\\ \dot{\psi}\\ \ddot{\psi} \end{bmatrix}= \begin{bmatrix} 0 & 1 & 0 & 0\\ 0 & -\frac{b(I+ml^2)}{I(m+M)+mMl^2} & \frac{m^2l^2g}{I(m+M)+mMl^2} & 0\\ 0 & 0 & 0 & 1 \\ 0 & -\frac{mlb}{I(m+M)+mMl^2} & \frac{mlg(m+M)}{I(m+M)+mMl^2} & 0 \end{bmatrix} \times \begin{bmatrix} x\\ \dot{x}\\ \psi\\ \dot{\psi} \end{bmatrix} + \begin{bmatrix} 0\\ \frac{(I+ml^2)}{I(m+M)+mMl^2}\\ 0\\ \frac{ml}{I(m+M)+mMl^2} \end{bmatrix} u ?????x˙x¨ψ˙?ψ¨???????=??????0000?1?I(m+M)+mMl2b(I+ml2)?0?I(m+M)+mMl2mlb??0I(m+M)+mMl2m2l2g?0I(m+M)+mMl2mlg(m+M)??0010???????×?????xx˙ψψ˙???????+??????0I(m+M)+mMl2(I+ml2)?0I(m+M)+mMl2ml????????u
y=[10000010]×[xx˙ψψ˙]+[0]×uy= \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \times \begin{bmatrix} x\\ \dot{x}\\ \psi\\ \dot{\psi} \end{bmatrix} + \begin{bmatrix} 0 \\ \end{bmatrix} \times u y=[10?00?01?00?]×?????xx˙ψψ˙???????+[0?]×u
3 LQR控制器設(shè)計(jì)
L(Linear)Q(Quadratic)R(Regulator),直譯為線性二次型控制器。
可以通過(guò)加入反饋,使系統(tǒng)最終能達(dá)到穩(wěn)定狀態(tài),但如何選取最好的系統(tǒng)特征值(極點(diǎn))在系統(tǒng)收斂的前提下實(shí)現(xiàn)最優(yōu)的收斂過(guò)程,這是我們目前要考慮的問(wèn)題。
這里我們引入目標(biāo)函數(shù)(價(jià)值函數(shù)),使系統(tǒng)在收斂的同時(shí),滿足JJJ最小:
J=∫t0tf[XTQX+UTRU]dtmin(J)J=\int ^{t_f}_{t_0}[X^TQX+U^TRU]dt\\ min(J) J=∫t0?tf??[XTQX+UTRU]dtmin(J)
式子中代表系統(tǒng)輸入的UUU在一個(gè)能夠?qū)崿F(xiàn)自穩(wěn)定的系統(tǒng)中(例如我們這里設(shè)計(jì)的倒單擺系統(tǒng))代表控制器反饋回路的輸出。
們目前涉及的倒立擺系統(tǒng)只有一個(gè)輸入,即倒立擺所受到的外部牽引力UUU,所以矩陣RRR僅有一個(gè)元素。另外有四個(gè)系統(tǒng)狀態(tài)變量,分別是x,x˙,ψ,ψ˙x,\dot{x},\psi,\dot{\psi}x,x˙,ψ,ψ˙?,因此對(duì)角矩陣QQQ的規(guī)模為4×44\times44×4。
在MATLAB中,我們可以調(diào)用lqr()lqr()lqr()函數(shù)生成滿足JJJ最小的反饋矩陣KKK。KKK對(duì)應(yīng)的就是各個(gè)系統(tǒng)變量反饋路徑中的增益。即:
U=[K1,K2,K3,K4]×[xx˙ψψ˙]U=[K_1, K_2, K_3, K_4]\times\begin{bmatrix} x\\ \dot{x}\\ \psi\\ \dot{\psi} \end{bmatrix}U=[K1?,K2?,K3?,K4?]×?????xx˙ψψ˙???????
下圖是倒立擺開環(huán)系統(tǒng)的階躍響應(yīng)。顯然系統(tǒng)是不收斂的。
引入LQR反饋后系統(tǒng)的階躍響應(yīng)
4 MATLAB 代碼
clc; clear; close all;% Parameters: % m: mass of pendulum (kg) % M: mass of cart (kg) % b: dampling coefficient % I: rotional inertia % g: acceleration of gravity % L: the distance from mass center to the hingem = 3.375; M = 5.40; b = 0.01; I = 0.0703125; g = 9.80665; L = 0.25;% create transfer function model s = tf('s');q = (m + M) * (I + m * L^2) - (m * L)^2;P_cart = (((I + m * L^2) / q) * s^2 - (m * g * L / q)) / ...(s^4 + (b * (I + m * L^2)) * s^3 / q - ((M + m) * m * g * L) * s^2 / q - b * m * g * L * s / q);P_pend = (m * L * s / q) / ...(s^3 + (b * (I + m * L^2)) * s^2 / q - ((M + m) * m * g * L) * s / q - b * m * g * L / q);sys_tf = [P_cart; P_pend];inputs = {'u'}; outputs = {'x'; 'phi'}; set(sys_tf,'InputName',inputs); set(sys_tf,'OutputName',outputs);sys_tf% create state-space model p = I * (m + M) + m * M * L^2;A = [0, 1, 0, 0;0, -b * (I + m * L^2) / p, (m^2 * L^2 * g) / p, 0;0, 0, 0, 1;0, -(m * L * b) / p, m * L * g * (M + m) / p, 0];B = [0;(I + m * L^2) / p;0;m * L / p];C = [1, 0, 0, 0;0, 0, 1, 0];D = [0;0];% definitions of system variables states = {'x' 'x_dot' 'phi' 'phi_dot'}; inputs = {'u'}; outputs = {'x'; 'phi'};sys_ss = ss(A, B, C, D, 'statename', states, 'inputname', inputs, 'outputname', outputs);% poles of open loop system poles = pole(sys_tf); poles% impulse response of system t = 0: 0.01: 1; impulse(sys_ss, t);% step response of system t = 0: 0.01: 1; step(sys_ss, t);% LQR simulation % Q matrix of LQR controller Q = [1000, 0, 0, 0;0, 0, 0, 0;0, 0, 500, 0;0, 0, 0, 0];R = 0.1;% optimal gain matrix K K = lqr(A, B, Q, R);Ac = A - B * K; sys_lqr = ss(Ac, B, C, D, 'statename', states, 'inputname', inputs, 'outputname', outputs);% impulse response of system t = 0: 0.01: 2; impulse(sys_lqr, t);100% step response of system t = 0: 0.01: 3; step(sys_lqr, t);總結(jié)
以上是生活随笔為你收集整理的对倒立摆的LQR控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab显示图像只有一半,我去噪后图
- 下一篇: quartus ii IP核的破解