matlab simulink欠驱动水面船舶航迹自抗扰控制研究
1、內容簡介
略
454-可以交流、咨詢、答疑
2、內容說明
為解決常規水面船舶的欠驅動、系統內部動態和外部干擾不確定性、控制輸入飽和、運動狀態約束條件特性及風流干擾作用下的橫漂等控制問題,本文進行了基于自抗擾控制的欠驅動水面船舶航跡控制的研究,主要工作和成果包括:1.欠驅動船舶非線性動力學模型的研究:基于船舶分離型模型并結合前人試驗數據,建立了精度較高的欠驅動船舶運動數學模型;結合模型分析了船舶運動特性;應用建立的船舶非線性水動力模型,在Matlab Simulink環境下搭建了高精度的三自由度船舶運動控制仿真平臺,為后面驗證航跡跟蹤控制器的有效性打下基礎。
2.滑模自抗擾控制算法的研究:利用擴張狀態觀測器能夠求微分的功能將跟蹤控制問題轉化為鎮定控制問題,簡化了自抗擾控制結構;提出了滑模自抗擾控制方法,應用滑模迭代方法設計自抗擾控制律中誤差反饋環節,并分別利用線性滑模和具有約束條件的非線性滑模設計誤差反饋控制律以解決船舶運動狀態的約束條件特性問題,改進了自抗擾控制的結構,參數物理意義明顯、調整簡單直觀;應用單調有界的雙曲正切函數解決自抗擾控制輸入飽和的問題。
3.船舶路徑跟蹤自抗擾控制設計的研究:利用自抗擾控制主動抗擾模式,控制設計時不考慮航向,直接將船舶路徑的橫向偏差作為被控制量,設計了基于無參考航向角的滑模自抗擾路徑跟蹤控制器,實現了船舶的初始船首向與計劃航向差值小于90度時的直線和曲線路徑跟蹤;利用雙曲正切函數的單調有界性設計了路徑橫向偏差與航向偏差的非線性組合函數,并將對其鎮定作為控制目標,設計了基于參考航向的路徑跟蹤自抗擾控制器,確保船舶在初始船首向與計劃航向角差值大于90度依然能夠回到計劃航線;為解決風流干擾造成的船舶橫漂問題,基于參考航向的船舶路徑跟蹤控制算法,采用如下三種各自獨立的控制設計方法進行船舶路徑跟蹤自抗擾控制設計,實現了欠驅動船舶能夠在風流干擾作用下對直線和(或)曲線路徑的跟蹤控制。三種方法分別為:(1)基于Backstepping思想的路徑跟蹤控制;(2)基于航跡向跟蹤的路徑跟蹤控制;(3)基于構造期望參考船首向的路徑跟蹤控制。
4.船舶軌跡跟蹤自抗擾分散控制設計的研究:將分散控制理論應用于欠驅動中文摘要船舶航跡跟蹤控制,結合自抗擾控制方法,針對多輸入多輸出船舶軌跡跟蹤控制系統設計欠驅動船舶軌跡跟蹤自抗擾分散控制器,設計思路是將命令舵角和螺旋槳轉速看做系統的控制輸入,舵角控制船舶路徑、螺旋槳轉速控制前進速度,將耦合部分納入總擾動由擴張狀態觀測器根據系統的輸入和輸出進行實時估計并在控制律中加以補償。
5.以大連海事大學實習船“育龍”輪為仿真對象,基于第二章搭建的仿真平臺進行了大量仿真實驗,驗證了本文提出的控制方法的有效性。
關鍵詞:欠驅動水面船舶;自抗擾控制;滑模控制;跟蹤控制;分散控制
3、仿真分析
略
global Cr ct cq L B D dm Tr Cb xG xC Dp P AR KR Ae Z V n Cer global Vw Rw Va Ra Af As Cax Cay Can windmark global W_alfa W_h wavemarkL=126.0; B=20.8; D=12.0; dm=8.0; Tr=0; Cb=0.681; xG=0.63; xC=0.63; Af=369.9; As=1031.94; Dp=4.6; P=3.66; AR=18.8; KR=1.72; Ae=0.67; Z=4;V=7.2; n=1.72; Va=5; Ra=45*pi/180; Vw=1; Rw=45*pi/180; windmark=1;W_alfa=0; W_h=0; wavemark=0;Cer =[-0.0003;1.7;0.5]; Cr=[2.659067;-26.710230;90.341408;-94.853523];ct=[0.233186;0.174393;0.074838;-0.046595;-0.192006;-0.359573;-0.518262;-0.653198;-0.703073;-0.587934;-0.569628;-0.605517;-0.650035;-0.598961;-0.476174;-0.367517;-0.253263;-0.142511;-0.166297;-0.115714;-0.019068;0.100802;0.246726;0.402032;0.571907;0.732503;0.813027;0.580177;0.575889;0.638652;0.730599;0.677914;0.593469;0.473219;0.335963;0.193398;0.233186];cq=[0.031830;0.024481;0.011163;-0.006299;-0.027863;-0.055717;-0.083420;-0.082323;-0.083501;-0.083183;-0.086183;-0.093443;-0.101763;-0.097885;-0.075269;-0.058861;-0.038432;-0.022762;-0.030428;-0.020431;-0.006266;0.012706;0.036566;0.062638;0.093123;0.127133;0.098684;0.088164;0.091701;0.100598;0.109607;0.092991;0.078355;0.065496;0.047773;0.027696;0.031830];Cax=[-0.703442;-0.731936;-0.758889;-0.713908;-0.624090;-0.522425;-0.414308;-0.290827;-0.145585;0.019059;0.192950;0.361189;0.508493;0.625062;0.709686;0.762770;0.773053;0.732693;0.703599];Cay=[0.005461;0.170876;0.367795;0.577378;0.762236;0.903312;0.998164;1.054177;1.081991;1.090018;1.081038;1.051378;0.992554;0.894897;0.752553;0.569293;0.363985;0.170459;0.001199];Can=[0.001044;0.027557;0.048280;0.058471;0.054324;0.037280;0.011249;-0.019745;-0.052726;-0.085817;-0.117542;-0.145858;-0.167474;-0.177843;-0.172131;-0.147293;-0.105093;-0.054330;-0.000418];%======Initial State========== ini_y = 0; % initial state of y ini_phai = 0*pi/180; % initial value of phai%=======controller parameters======== limit_u = 35*pi/180; rate_u = 6*pi/180; limit_phai = 90*pi/180; ini_ydot = sin(ini_phai);% ====================================== k1=0.03; k2=0.1; c1 = pi/6; c0 = 0.03; ini_z1 = c1*tanh(c0*ini_y) + ini_phai;%K = 0.478; K = 0.478; T = 216; b01 = K/T; wc1 = 0.03; wo1 = 0.4;?
subplot(5,1,1) plot(x_1,y_2,'k-',x_1,y_3,'-.','linewidth',1); grid on hold off xlabel('x(m)'); ylabel('y(m)'); %legend('Ref','Real track '); %plot(x_1,y_3,'b-','linewidth',1); axis([0 8000 -600 600]); legend('track','ref') %axis('square') %box on %figuresubplot(5,1,2)plot(t_1,ra_1,'k-','linewidth',1);grid on;xlabel('t (s)');ylabel('Rud (deg)');axis([0 1200 -40 40]);%figure; subplot(5,1,3) plot(t_1,y_1,'k-','linewidth',1);grid on;xlabel('t (s)');ylabel('y(m)');axis([0 1200 -600 600]);%figure;subplot(5,1,4) plot(t_1,phai_1,'k-','linewidth',1);grid on;xlabel('t (s)');ylabel('heading(deg)');axis([0 1200 -40 40]);subplot(5,1,5)plot(t_1,u_1,'k-','linewidth',1);grid on;xlabel('t (s)');ylabel('speed (m/s)');axis([0 1200 0 10]);%figure;?
?
4、參考論文
略
?
總結
以上是生活随笔為你收集整理的matlab simulink欠驱动水面船舶航迹自抗扰控制研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反射的原理
- 下一篇: 对C语言中与运算符与或运算符||的探讨