【控制】二阶 UGV 的 时间-输入 指标性能最优解算
結合生活中常見實際情況可知,無人車的運行空間一般為二維平面。因此,假設無人車的動力學模型如下:
p˙i=viv˙i=ui\begin{aligned} \dot{p}_i = v_i \\ \dot{v}_i = u_i \\ \end{aligned}p˙?i?=vi?v˙i?=ui??
這里,pi∈R2p_i\in\mathbb{R}^2pi?∈R2 表示UGV的位置狀態,vi∈R2v_i\in\mathbb{R}^2vi?∈R2 表示UGV的速度狀態,ui∈R2u_i\in\mathbb{R}^2ui?∈R2 表示UGV的控制輸入。
也可寫成狀態空間方程的形式:
x˙i=Axi+Bui\dot{x}_i = A x_i + B u_i x˙i?=Axi?+Bui?
其中,xi=[pi,vi]Tx_i = [p_i, v_i]^Txi?=[pi?,vi?]T,A=[0100]A=\left[\begin{matrix} 0 & 1 \\ 0 & 0 \\ \end{matrix}\right]A=[00?10?],B=[01]B=\left[\begin{matrix} 0 \\ 1 \\ \end{matrix}\right]B=[01?]。
性能指標為:
J=12∫0∞[xTQx+uTRu]dtJ = \frac{1}{2} \int_{0}^{\infty} [x^T Q x + u^T R u] ~dtJ=21?∫0∞?[xTQx+uTRu]?dt
假設 Q=[0100],R=[1]Q = \left[\begin{matrix}0 & 1 \\ 0 & 0 \\ \end{matrix}\right], R = \left[\begin{matrix} 1 \end{matrix}\right]Q=[00?10?],R=[1?]。
alphaG = 1; betaG = 1; aG = kron([0 1; 0 0], eye(1)); bG = kron([ 0 ; 1 ], eye(1)); QG = eye(2*1) * alphaG; RG = eye(1*1) * betaG; [PG,l,g] = care(aG,bG,QG,RG);KG = -inv(RG) * bG' * PG;解算出來最優 KKK
KG =-1.0000 -1.7321代入初始值,p(t=0)=10,v(t=0)=2p(t=0) = 10, v(t=0) = 2p(t=0)=10,v(t=0)=2,計算系統方程
p0 = 10; v0 = 2; in = [p0 v0]';[t,out] = ode45(@odeFun, [0,10], in); plot(t,out);function out = odeFun(t,in)p = in(1,1);v = in(2,1);dp = v;dv = -p-1.732*v;out = [dp; dv]; end
性能指標為:
J=tf+12∫0tfu2(t)dtJ = t_f + \frac{1}{2} \int_{0}^{t_f} u^2(t) dtJ=tf?+21?∫0tf??u2(t)dt
初始狀態(橫截條件)為:
p(0)=10p(tf)=0v(0)=1v(tf)=0\begin{aligned} &p(0) = 10 &p(t_f) = 0 \\ &v(0) = 1 &v(t_f) = 0 \\ \end{aligned}?p(0)=10v(0)=1?p(tf?)=0v(tf?)=0?
構建系統Hamilton函數
H=12u2(t)+λ1v+λ2u(t)H = \frac{1}{2} u^2(t) + \lambda_1 v + \lambda_2 u(t)H=21?u2(t)+λ1?v+λ2?u(t)
正則方程
p˙(t)=?H?λ1=vv˙(t)=?H?λ2=uλ˙1=??H?p=0?λ1=aλ˙2=??H?v=?λ1?λ2=?at+b\begin{aligned} &\dot{p}(t) = \frac{\partial H}{\partial \lambda_1} = v \\ &\dot{v}(t) = \frac{\partial H}{\partial \lambda_2} = u \\ &\dot{\lambda}_1 = -\frac{\partial H}{\partial p} = 0 \Rightarrow \lambda_1 = a\\ &\dot{\lambda}_2 = -\frac{\partial H}{\partial v} = -\lambda_1 \Rightarrow \lambda_2 = -a t + b \\ \end{aligned}?p˙?(t)=?λ1??H?=vv˙(t)=?λ2??H?=uλ˙1?=??p?H?=0?λ1?=aλ˙2?=??v?H?=?λ1??λ2?=?at+b?
因為 uuu 是無約束的,因此有極值條件
?H?u=u+λ2=0\frac{\partial H}{\partial u} = u + \lambda_2 = 0 ?u?H?=u+λ2?=0
得出來 uuu 的表達式
u=?λ2=at?bu = - \lambda_2 = at - bu=?λ2?=at?b
由 uuu 的表達式做積分可得
v=12at2?bt+cp=16at3?12bt2+ct+d\begin{aligned} v &= \frac{1}{2} a t^2 - b t + c \\ p &= \frac{1}{6} a t^3 - \frac{1}{2} b t^2 + c t + d \\ \end{aligned}vp?=21?at2?bt+c=61?at3?21?bt2+ct+d?
結合橫截條件中的初態條件 p(0)=10,v(0)=1p(0) = 10, v(0) = 1p(0)=10,v(0)=1 可得
c=1d=10\begin{aligned} c &= 1 \\ d &= 10 \\ \end{aligned}cd?=1=10?
由Hamilton函數在最優軌線末端應滿足的條件 H(tf)=??φ?tfH(t_f) = -\frac{\partial \varphi}{\partial t_f}H(tf?)=??tf??φ? 有
H(tf)=12u2(t)+λ1v+λ2u(t)=12(atf?b)2+a(12atf2?btf+c)+(?atf+b)(atf?b)=??φ?tf=?1\begin{aligned} H(t_f) &= \frac{1}{2} u^2(t) + \lambda_1 v + \lambda_2 u(t) \\ &= \frac{1}{2} (at_f-b)^2 + a(\frac{1}{2}a t_f^2 - b t_f + c) + (-at_f + b)(at_f-b) \\ &= -\frac{\partial \varphi}{\partial t_f} \\ &= -1 \\ \end{aligned}H(tf?)?=21?u2(t)+λ1?v+λ2?u(t)=21?(atf??b)2+a(21?atf2??btf?+c)+(?atf?+b)(atf??b)=??tf??φ?=?1?
再結合橫街條件中的末態條件 p(tf)=0,v(tf)=0p(t_f) = 0, v(t_f) = 0p(tf?)=0,v(tf?)=0,現在已經三個方程三個未知量,解方程即可
{12(atf?b)2+a(12atf2?btf+c)+(?atf+b)(atf?b)=?112atf2?btf+c=016atf3?12btf2+ctf+d=0\left\{\begin{aligned} &\frac{1}{2} (at_f-b)^2 + a(\frac{1}{2}a t_f^2 - b t_f + c) + (-at_f + b)(at_f-b) = -1 \\ &\frac{1}{2} a t_f^2 - b t_f + c = 0 \\ &\frac{1}{6} a t_f^3 - \frac{1}{2} b t_f^2 + c t_f + d = 0 \\ \end{aligned}\right.???????????????21?(atf??b)2+a(21?atf2??btf?+c)+(?atf?+b)(atf??b)=?121?atf2??btf?+c=061?atf3??21?btf2?+ctf?+d=0?
利用Matlab解算方程組
syms a b tf eqns = [1/2*(a*tf-b)^2 + a*(1/2*a*tf^2-b*tf+1) + (-a*tf+b)*(a*tf-b) == -1,... 1/2*a*tf^2 - b*tf + 1==0,... 1/6*a*tf^3 - 1/2*b*tf^2 + tf + 10==0]; vars = [a b tf]; [a b tf] = solve(eqns, vars);double(a) double(b) double(tf)a = 0.4276 b = 1.6897 tf= 7.2589解的最后結果為
{a=0.4276b=1.6897tf=7.2589\left\{\begin{aligned} &a = 0.4276 \\ &b = 1.6897 \\ &t_f = 7.2589 \\ \end{aligned}\right.???????a=0.4276b=1.6897tf?=7.2589?
因此,代入解算出來的參數,那么有最優
{tf?=7.2589u?(t)=0.4276t?1.6897v?(t)=0.2138t2?1.6897t+1p?(t)=0.0713t3?0.8448t2+t+10J?(t)=tf?+12∫0tf?u?2(t)dt\left\{\begin{aligned} &t_f^* = 7.2589 \\ &u^*(t) = 0.4276 t - 1.6897 \\ &v^*(t) = 0.2138 t^2 - 1.6897 t + 1 \\ &p^*(t) = 0.0713 t^3 - 0.8448 t^2 + t + 10 \\ &J^*(t) = t_f^* + \frac{1}{2} \int_{0}^{t_f^*} u^{*2}(t) dt \\ \end{aligned}\right.???????????????????????tf??=7.2589u?(t)=0.4276t?1.6897v?(t)=0.2138t2?1.6897t+1p?(t)=0.0713t3?0.8448t2+t+10J?(t)=tf??+21?∫0tf???u?2(t)dt?
總結
以上是生活随笔為你收集整理的【控制】二阶 UGV 的 时间-输入 指标性能最优解算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Paper】2017_The dist
- 下一篇: 【Paper】2017_Limit-Cy