日韩性视频-久久久蜜桃-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总结非线性系统线性化方法,第五章的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: brazzers精品成人一区 | 香蕉av一区二区三区 | 亚洲av无码成人精品区 | 啪视频在线 | 久久亚洲高清 | 欧美一卡二卡在线观看 | 禁断介护av一区二区 | 久久亚洲天堂网 | 国产黑丝在线 | a级片毛片| 欧美极品少妇xxxxⅹ免费视频 | 干骚视频 | 华人永久免费视频 | 国产资源免费 | 日日夜夜操操 | 免费簧片在线观看 | 国产一区在线不卡 | 揄拍成人国产精品视频 | 国产一区伦理 | ass精品国模裸体pics | 日韩黄色免费 | 一本大道一区二区 | 久久天天综合 | 三级网站在线免费观看 | 亚洲欧美综合另类自拍 | 黑人乱码一区二区三区av | 天堂网www.| 国产欧美综合视频 | 色一情一伦一子一伦一区 | 观看av在线 | 成年人黄色网址 | 一区二区免费播放 | 在线观看网址你懂的 | 一区二区三区免费观看 | 一级 黄 色 片69 | 日韩精品视频在线免费观看 | 色小姐在线视频 | 国产福利小视频在线 | 男生女生搞黄色 | free国产hd露脸性开放 | 国产一级在线观看视频 | 可以在线观看av的网站 | 免费欧美一区 | 在线观看欧美日韩视频 | 成人午夜精品福利免费 | 国产吃瓜在线 | 欧美色插 | 欧美日本另类 | 96在线观看 | 大陆熟妇丰满多毛xxxⅹ | 禁漫天堂免费网站 | 国产精品免费久久 | 国产一级特黄 | 手机看片亚洲 | 一级片在线免费观看 | 国产又粗又猛又爽又黄的网站 | 视频在线观看一区二区三区 | 日韩91精品 | 丰满大爆乳波霸奶 | 成年人免费网站在线观看 | 97人妻人人澡人人爽人人精品 | 91吃瓜今日吃瓜入口 | 欧美日韩三级视频 | www性欧美 | 偷拍亚洲另类 | 超碰在线98 | 成人精品综合 | 性久久久久 | 不卡av在线播放 | 澳门免费av | 黄色一级小视频 | 91老师国产黑色丝袜在线 | 精品国产无码一区二区三区 | 少妇献身老头系列 | 国产午夜成人久久无码一区二区 | 亚洲啊啊 | 天天干天天操天天射 | 最新精品国产 | 欧美z○zo重口另类黄 | 超碰国产一区二区三区 | 欧美午夜三级 | 欧美做爰猛烈床戏大尺度 | 亚洲成在线 | 欧美老熟妇乱大交xxxxx | 国产女女调教女同 | 天堂最新 | 自拍偷拍免费 | 亚洲人成在线免费观看 | 日韩精品欧美在线 | 香蕉视频色版 | 天天碰视频 | 亚洲黄色在线观看视频 | 2019国产精品视频 | 日韩r级电影在线观看 | 久久久久久一区二区 | 成人人人人人欧美片做爰 | 美女激情网 | 精品一区二区日韩 | 与子敌伦刺激对白播放的优点 |