近幾天時間比較充足,便學習一下S函數求解微分方程。其求解方程如下:
D(q)q¨+C(q,q˙)q˙+G(q)+ω=τ (2.7)
ω=d1+d2∥e∥+d3∥e˙∥ (2.10)
y=e˙+γe (2.11)
q˙r=q˙d−γe (2.12)
其中e=q−qd,e˙=q˙−q˙d,q是實際輸出變量,qd是期望輸出變量
τ=−Kpe−Kve˙+ϕ(q,q˙,q˙r,q¨r)P^+u (2.16)
u=[u1⋯un]T,ui=−(d1+d2∥e∥+d3∥e˙∥)sgn(yi) (2.17)
P^˙=−ΓϕT(q,q˙,q˙r,q¨r)y (2.18)
Kp=Kp1+Kp2Bp(e),Kv=Kv1+Kv2B(e˙)
Kp1=diag(kp11,kp12,⋯,kp1n),Kp2=diag(kp21,kp22,⋯,kp2n)
Kv1=diag(kv11,kv12,⋯,kv1n),Kv2=diag(kv21,kv22,⋯,kv2n)
Bp(e)=diag(a1+∣e1∣1,a2+∣e2∣1,⋯,an+∣en∣1)
Bv(e)=diag(β1+∣e˙1∣1,β2+∣e˙2∣1,⋯,βn+∣e˙n∣1)
仿真參數設置如下:
D11(q2)=(m1+m2)r12+m2r22+2m2r1r2cosq2
D12(q2)=m2r22+m2r1r2cosq2
D22(q2)=m2r22
D=[D11,D12;D12,D22]
C12(q2)=m2r1r2sinq2
C=[−C12q˙2,−C12(q˙1+q˙2);C12q˙1,0]
G1(q1,q2)=(m1+m2)r1cosq2+m2r2cos(q1+q2)
G2(q1,q2)=m1r2cos(q1+q2)
G=[G1g;G2g]
ϕ11=q¨1r+e1cosq2
ϕ12=q¨1r+q¨2r
ϕ13=2q¨1rcosq2+q¨2rcosq2−q˙2q˙1rsinq2−(q˙1+q˙2)q˙2rsinq2+e1cos(q1+q2)
ϕ21=0
ϕ22=ϕ12
ϕ23=q˙1q˙1rsinq2+q¨1rcosq2+e1cos(q1+q2)
e1=g/r1,g=9.8
r1=1,r2=0.8,m1=0.5,m2=0.5,d1=2,d2=3,d3=6,ω=d1+d2∥e∥+d3∥e˙∥
q1d=sin(2∗π∗t),q2d=sin(2∗π∗t)
[q1;q˙1;q2;q˙2]=[0.1;0;0.1;0]
Kp1=diag(180,190),Kp2=diag(150,150)
Kv1=diag(180,180),Kv2=diag(150,150)
αi=βi=1(i=1,2),γ=5,Γ=[5 0 0;0 5 0;0 0 5]
編程分析:等式2.7右邊寫成一個S函數。首先分析輸入參數個數,由於等式2.16中有q,q˙,qd,q˙d,q¨d五個變量,並且每個變量是二維的所以輸入參數設置爲10。輸出變量τ是個二維的,p是三維的,所以右邊S函數的輸出設置爲5。直接反饋設置爲1中間需要求解公式2.18,所以此函數需要用到微分模塊sys=mdlDerivatives(t,x,u),所以連續變量狀態數設置爲3。
等式2.7左邊的S函數編寫,求解過程中需要q,q˙d,τ三個變量,所以輸入個數設置6,輸出變量q,q˙,所以設置爲4。等式2.7左邊是個二維二階微分方程求解,所以連續狀態設置爲4。
由於CSDN粘貼Matlab代碼不方便,具體的函數編寫放在相應的附件中。https://download.csdn.net/download/cswh876908060/12155057。如需代寫,或者諮詢,請聯繫: