日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

2022.3.6总结非线性系统线性化方法,第五章

發布時間:2023/12/20 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2022.3.6总结非线性系统线性化方法,第五章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

巨大的錯誤,因為符號導致無法求解

第二部分

第一種:存在參考系統的線性化方法

第二種:針對狀態軌跡的線性化方法

主要思想是:通過對系統施加持續不變的控制量,得到一條狀態軌跡,根據該狀態軌跡和系統實際狀態量的偏差設計線性模型預測控制算法。這種方法的優勢是不需要預先地導期望跟蹤路徑的狀態量和控制量。

非線性系統離散線性化方法(二)_更適合青年研究者的資源庫!公眾號:杰哥的無人駕駛便利店-CSDN博客_非線性系統離散化

?

function [sys,x0,str,ts] = chapter5_2_2(t,x,u,flag) % 該程序功能:用LTV MPC 和車輛簡化動力學模型(小角度假設)設計控制器,作為Simulink的控制器 % 程序版本 V1.0,MATLAB版本:R2011a,采用S函數的標準形式, % 程序編寫日期 2013.12.11 % 最近一次改寫 2013.12.16 % 狀態量=[y_dot,x_dot,phi,phi_dot,Y,X],控制量為前輪偏角delta_fswitch flag,case 0[sys,x0,str,ts] = mdlInitializeSizes; % Initializationcase 2sys = mdlUpdates(t,x,u); % Update discrete statescase 3sys = mdlOutputs(t,x,u); % Calculate outputs% case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flagssys = [];otherwiseerror(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc.%============================================================== % Initialization %==============================================================function [sys,x0,str,ts] = mdlInitializeSizes% Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array.sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 6; sizes.NumOutputs = 1; sizes.NumInputs = 8; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 =[0.001;0.0001;0.0001;0.00001;0.00001;0.00001]; global U; U=[0];%控制量初始化,這里面加了一個期望軌跡的輸出,如果去掉,U為一維的 % global x; % x = zeros(md.ne + md.pye + md.me + md.Hu*md.me,1); % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.02 0]; % sample time: [period, offset] %End of mdlInitializeSizes%============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u)sys = x; %End of mdlUpdate.%============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u)global a b; %global u_piao;global U;%global kesi;ticNx=6;%狀態量的個數Nu=1;%控制量的個數Ny=2;%輸出量的個數Np =20;%預測步長Nc=5;%控制步長Row=1000;%松弛因子權重fprintf('Update start, t=%6.3f\n',t)%輸入接口轉換,x_dot后面加一個非常小的數,是防止出現分母為零的情況% y_dot=u(1)/3.6-0.000000001*0.4786;%CarSim輸出的是km/h,轉換為m/sy_dot=u(1)/3.6;x_dot=u(2)/3.6+0.0001;%CarSim輸出的是km/h,轉換為m/sphi=u(3)*3.141592654/180; %CarSim輸出的為角度,角度轉換為弧度phi_dot=u(4)*3.141592654/180;Y=u(5);%單位為mX=u(6);%單位為米Y_dot=u(7);X_dot=u(8); %% 車輛參數輸入 %syms sf sr;%分別為前后車輪的滑移率,需要提供Sf=0.2; Sr=0.2; %syms lf lr;%前后車輪距離車輛質心的距離,車輛固有參數lf=1.232;lr=1.468; %syms C_cf C_cr C_lf C_lr;%分別為前后車輪的縱橫向側偏剛度,車輛固有參數Ccf=66900;Ccr=62700;Clf=66900;Clr=62700; %syms m g I;%m為車輛質量,g為重力加速度,I為車輛繞Z軸的轉動慣量,車輛固有參數m=1723;g=9.8;I=4175;%% 參考軌跡生成shape=2.4;%參數名稱,用于參考軌跡生成dx1=25;dx2=21.95;%沒有任何實際意義,只是參數名稱dy1=4.05;dy2=5.7;%沒有任何實際意義,只是參數名稱Xs1=27.19;Xs2=56.46;%參數名稱X_predict=zeros(Np,1);%用于保存預測時域內的縱向位置信息,這是計算期望軌跡的基礎phi_ref=zeros(Np,1);%用于保存預測時域內的期望軌跡Y_ref=zeros(Np,1);%用于保存預測時域內的期望軌跡% 以下計算kesi,即狀態量與控制量合在一起 kesi=zeros(Nx+Nu,1);kesi(1)=y_dot;%u(1)==X(1)kesi(2)=x_dot;%u(2)==X(2)kesi(3)=phi; %u(3)==X(3)kesi(4)=phi_dot;kesi(5)=Y;kesi(6)=X;kesi(7)=U(1);delta_f=U(1);fprintf('Update start, u(1)=%4.2f\n',U(1))T=0.02;%仿真步長T_all=20;%總的仿真時間,主要功能是防止計算期望軌跡越界%權重矩陣設置 Q_cell=cell(Np,Np);for i=1:1:Npfor j=1:1:Npif i==j%Q_cell{i,j}=[200 0;0 100;];Q_cell{i,j}=[2000 0;0 10000;];else Q_cell{i,j}=zeros(Ny,Ny); endend end %R=5*10^4*eye(Nu*Nc);R=5*10^5*eye(Nu*Nc);%最基本也最重要的矩陣,是控制器的基礎,采用動力學模型,該矩陣與車輛參數密切相關,通過對動力學方程求解雅克比矩陣得到a=[ 1 - (259200*T)/(1723*x_dot), -T*(phi_dot + (2*((460218*phi_dot)/5 - 62700*y_dot))/(1723*x_dot^2) - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2)), 0, -T*(x_dot - 96228/(8615*x_dot)), 0, 0T*(phi_dot - (133800*delta_f)/(1723*x_dot)), (133800*T*delta_f*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2) + 1, 0, T*(y_dot - (824208*delta_f)/(8615*x_dot)), 0, 00, 0, 1, T, 0, 0(33063689036759*T)/(7172595384320*x_dot), T*(((2321344006605451863*phi_dot)/8589934592000 - (6325188028897689*y_dot)/34359738368)/(4175*x_dot^2) + (5663914248162509*((154*phi_dot)/125 + y_dot))/(143451907686400*x_dot^2)), 0, 1 - (813165919007900927*T)/(7172595384320000*x_dot), 0, 0T*cos(phi), T*sin(phi), T*(x_dot*cos(phi) - y_dot*sin(phi)), 0, 1, 0-T*sin(phi), T*cos(phi), -T*(y_dot*cos(phi) + x_dot*sin(phi)), 0, 0, 1];b=[ 133800*T/1723T*((267600*delta_f)/1723 - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot))05663914248162509*T/14345190768640000]; d_k=zeros(Nx,1);%計算偏差state_k1=zeros(Nx,1);%預測的下一時刻狀態量,用于計算偏差%以下即為根據離散非線性模型預測下一時刻狀態量%注意,為避免前后軸距的表達式(a,b)與控制器的a,b矩陣沖突,將前后軸距的表達式改為lf和lrstate_k1(1,1)=y_dot+T*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m);state_k1(2,1)=x_dot+T*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m);state_k1(3,1)=phi+T*phi_dot;state_k1(4,1)=phi_dot+T*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/I);state_k1(5,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi));state_k1(6,1)=X+T*(x_dot*cos(phi)-y_dot*sin(phi));d_k=state_k1-a*kesi(1:6,1)-b*kesi(7,1);%根據falcone公式(2.11b)求得d(k,t)d_piao_k=zeros(Nx+Nu,1);%d_k的增廣形式,參考falcone(B,4c)d_piao_k(1:6,1)=d_k;d_piao_k(7,1)=0;A_cell=cell(2,2);B_cell=cell(2,1);A_cell{1,1}=a;A_cell{1,2}=b;A_cell{2,1}=zeros(Nu,Nx);A_cell{2,2}=eye(Nu);B_cell{1,1}=b;B_cell{2,1}=eye(Nu);%A=zeros(Nu+Nx,Nu+Nx);A=cell2mat(A_cell);B=cell2mat(B_cell);% C=[0 0 1 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 1 0 0;];%這是和輸出量緊密關聯的C=[0 0 1 0 0 0 0;0 0 0 0 1 0 0;];% 輸出質心側偏角度 和Y值%PSI : THETA GAMMA PHIPSI_cell=cell(Np,1);THETA_cell=cell(Np,Nc);GAMMA_cell=cell(Np,Np);PHI_cell=cell(Np,1);for p=1:1:NpPHI_cell{p,1}=d_piao_k;%理論上來說,這個是要實時更新的,但是為了簡便,這里又一次近似for q=1:1:Npif q<=pGAMMA_cell{p,q}=C*A^(p-q);else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu);end endendfor j=1:1:NpPSI_cell{j,1}=C*A^j;for k=1:1:Ncif k<=jTHETA_cell{j,k}=C*A^(j-k)*B;else THETA_cell{j,k}=zeros(Ny,Nu);endendendPSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu]THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc]GAMMA=cell2mat(GAMMA_cell);%大寫的GAMMAPHI=cell2mat(PHI_cell);Q=cell2mat(Q_cell);H_cell=cell(2,2);H_cell{1,1}=THETA'*Q*THETA+R;H_cell{1,2}=zeros(Nu*Nc,1);H_cell{2,1}=zeros(1,Nu*Nc);H_cell{2,2}=Row;H=cell2mat(H_cell);error_1=zeros(Ny*Np,1);Yita_ref_cell=cell(Np,1);for p=1:1:Npif t+p*T>T_allX_DOT=x_dot*cos(phi)-y_dot*sin(phi);%慣性坐標系下縱向速度X_predict(Np,1)=X+X_DOT*Np*T;%X_predict(Np,1)=X+X_dot*Np*t;z1=shape/dx1*(X_predict(Np,1)-Xs1)-shape/2;z2=shape/dx2*(X_predict(Np,1)-Xs2)-shape/2;Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2));phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2));Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)];elseX_DOT=x_dot*cos(phi)-y_dot*sin(phi);%慣性坐標系下縱向速度X_predict(p,1)=X+X_DOT*p*T;%首先計算出未來X的位置,X(t)=X+X_dot*tz1=shape/dx1*(X_predict(p,1)-Xs1)-shape/2;z2=shape/dx2*(X_predict(p,1)-Xs2)-shape/2;Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2));phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2));Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)];endendYita_ref=cell2mat(Yita_ref_cell);error_1=Yita_ref-PSI*kesi-GAMMA*PHI; %求偏差f_cell=cell(1,2);f_cell{1,1}=2*error_1'*Q*THETA;f_cell{1,2}=0; % f=(cell2mat(f_cell))';f=-cell2mat(f_cell);%% 以下為約束生成區域%控制量約束A_t=zeros(Nc,Nc);%見falcone論文 P181for p=1:1:Ncfor q=1:1:Ncif q<=p A_t(p,q)=1;else A_t(p,q)=0;endend end A_I=kron(A_t,eye(Nu));%求克羅內克積Ut=kron(ones(Nc,1),U(1));umin=-0.1744;%維數與控制變量的個數相同umax=0.1744;delta_umin=-0.0148*0.4;delta_umax=0.0148*0.4;Umin=kron(ones(Nc,1),umin);Umax=kron(ones(Nc,1),umax);%輸出量約束ycmax=[0.21;5];ycmin=[-0.3;-3];Ycmax=kron(ones(Np,1),ycmax);Ycmin=kron(ones(Np,1),ycmin);%結合控制量約束和輸出量約束A_cons_cell={A_I zeros(Nu*Nc,1);-A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)};b_cons_cell={Umax-Ut;-Umin+Ut;Ycmax-PSI*kesi-GAMMA*PHI;-Ycmin+PSI*kesi+GAMMA*PHI};A_cons=cell2mat(A_cons_cell);%(求解方程)狀態量不等式約束增益矩陣,轉換為絕對值的取值范圍b_cons=cell2mat(b_cons_cell);%(求解方程)狀態量不等式約束的取值%狀態量約束M=10; delta_Umin=kron(ones(Nc,1),delta_umin);delta_Umax=kron(ones(Nc,1),delta_umax);lb=[delta_Umin;0];%(求解方程)狀態量下界,包含控制時域內控制增量和松弛因子ub=[delta_Umax;M];%(求解方程)狀態量上界,包含控制時域內控制增量和松弛因子%% 開始求解過程options = optimset('Algorithm','active-set');x_start=zeros(Nc+1,1);%加入一個起始點[X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);fprintf('exitflag=%d\n',exitflag);fprintf('H=%4.2f\n',H(1,1));fprintf('f=%4.2f\n',f(1,1));%% 計算輸出u_piao=X(1);%得到控制增量U(1)=kesi(7,1)+u_piao;%當前時刻的控制量為上一刻時刻控制+控制增量%U(2)=Yita_ref(2);%輸出dphi_refsys= U;toc % End of mdlOutputs.

總結

以上是生活随笔為你收集整理的2022.3.6总结非线性系统线性化方法,第五章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人视频在线 | 女人高潮特级毛片 | 美女一级黄 | 日批av| 免费特级黄色片 | 亚洲欧美一区二区三区在线 | 少妇av在线 | 亚洲少妇激情 | 欧美精品一区二区蜜臀亚洲 | 在线播放免费av | 欧美成人免费一级人片100 | 亚洲国产欧美日韩 | 免费视频91蜜桃 | 国产精品美女久久久久 | 国内成人在线 | 国产成人午夜视频 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | a一级网站 | 对白刺激国产子与伦 | 久久激情综合 | 99国产精品久久久久久久 | 99久久毛片| 麻豆网站入口 | 欧美日韩成人一区二区在线观看 | 伊人久久久久久久久久 | 97爱视频 | 麻豆91精品 | 91网址在线观看 | 香蕉视频国产 | 538任你躁在线精品免费 | 图书馆的女友在线观看 | 免费观看国产视频 | 国产亚洲欧美一区二区 | 国产成人精品无码免费看81 | 亚洲国产123 | www亚洲精品 | 天堂网www. | 大香蕉视频一区二区 | 精品少妇一区二区三区免费观看 | 五月激情四射网 | 亚洲精品456| 色哟哟欧美精品 | 黄色网在线播放 | 特级西西人体4444xxxx | 欧美一区二区在线视频观看 | 国产精品一区二区三区久久 | 国产乱码一区二区三区播放 | 无码人妻精品一区二区三区不卡 | 天天插夜夜爽 | 国产精品无码99re | 日韩视频精品一区 | 狠狠躁夜夜躁av无码中文幕 | 炕上如狼似虎的呻吟声 | 国产精品视频久久久久久 | 深夜福利一区二区三区 | 亚洲精品国产成人av在线 | 91免费观看入口 | 国产成人免费看 | 殴美性生活 | 国产精品免费视频一区二区 | 天堂va欧美va亚洲va老司机 | 大肉大捧一进一出好爽mba | 亚洲综合不卡 | 国产婷婷在线视频 | 亚洲图区综合 | 日韩一区二区a片免费观看 伊人网综合在线 | 中文字幕三级 | 成人午夜激情网 | 中文字幕第八页 | 天天爽av | 国产超级av在线 | 国产精品久久毛片av大全日韩 | 一级影片在线观看 | 少妇自拍视频 | 亚洲人成无码www久久久 | 国产人免费人成免费视频 | 有码一区二区 | 法国空姐电影在线观看 | 欧美精品久久久久性色 | 久久综合九九 | h片在线免费 | 激情瑟瑟 | 少妇偷人精品无码人妻 | 色姐 | 乱一色一乱一性一视频 | 日韩黄色一级片 | 久久国内视频 | 性一交一乱一色一视频麻豆 | 欧美视频一区二区三区四区在线观看 | 自拍偷拍免费 | 久色网站 | 欧美国产日韩在线观看成人 | 午夜视频在线 | 久久国产精品精品国产色婷婷 | 51热门大瓜今日大瓜 | 亚洲视频天堂 | 国产美女激情 | 欧美性生活网址 | 在线视频观看一区二区 |