Điều khiển thích nghi đối tượng phi tuyến bằng phản hồi đầu ra Điều khiển thích nghi đối tượng phi tuyến bằng phản hồi đầu ra Điều khiển thích nghi đối tượng phi tuyến bằng phản hồi đầu ra luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
TR B GIÁO D C VÀ ĐÀO T O NG Đ I H C BÁCH KHOA HÀ N I NGUY N V N CHÍ ĐI U KHI N THÍCH NGHI Đ I T NG PHI TUY N B NG PH N H I Đ U RA LU N ÁN TI N S K THU T Hà N i – N m 2012 B GIÁO D C VÀ ĐÀO T O NG Đ I H C BÁCH KHOA HÀ N I TR NGUY N V N CHÍ ĐI U KHI N THÍCH NGHI Đ I T NG PHI TUY N B NG PH N H I Đ U RA Chuyên ngành: LÝ THUY T ĐI U KHI N VÀ ĐI U KHI N T I Mã s : 62.52.60.50 U LU N ÁN TI N S K THU T NG IH NG D N KHOA H C: PGS.TS NGUY N DOÃN PH PGS.TS PHAN XUÂN MINH C Hà N i – N m 2012 ii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên c u c a riêng d a hư ng d n c a t p th hư ng d n khoa h c tài li u tham kh o trích d n K t qu nghiên c u trung th c chưa công b b t c m t cơng trình khác Nghiên c u sinh NGUY N V N CHÍ iii MỤC LỤC DANH M C CÁC KÝ HI U vii DANH M C CÁC T VI T T T viii DANH M C CÁC B NG BI U ix DANH M C CÁC HÌNH V x L I C M ƠN xiv M Đ U Tính c p thi t c a đ tài M c đích nghiên c u Đ i tư ng ph m vi nghiên c u Ý ngh a khoa h c th c ti n c a đ tài 5 Nh ng đóng góp c a lu n án 6 B c c c a lu n án TỔNG QUAN VỀ ĐIỀU KHIỂN ỔN ĐỊNH HỆ PHI TUYẾN BẰNG PHẢN HỒI ĐẦU RA 1.1 Gi i thi u v u n n đ nh h phi n b ng ph n h i đ u 1.2 Đi u n n đ nh ph n h i đ u t nh 1.3 Đi u n n đ nh ph n h i đ u đ ng 11 1.3.1 Đi u n ph n h i đ u bù đ ng h c phi n 12 1.3.2 Đi u n ph n h i đ u d a quan sát tr ng thái 13 1.4 Tr ng i u ki n c a toán thi t k b u n n đ nh ph n h i đ u theo nguyên lý tách 19 1.4.1 Hi n tư ng FET - “Finite escape time” 19 1.4.2 L p h phi n có hi n tư ng FET 22 1.5 Các u ki n c n l p đ i tư ng n đ nh đư c b ng b u n ph n h i đ u d a nguyên lý tách 22 1.5.1 Các u ki n c n 22 1.5.2 L p đ i tư ng n đ nh đư c b ng ph n h i đ u theo nguyên lý tách 23 1.6 K t lu n chương 25 QUAN SÁT TRẠNG THÁI HỆ PHI TUYẾN VỚI THỜI GIAN HỮU HẠN ĐẶT TRƯỚC 2.1 Gi i thi u chung v quan sát tr ng thái cho h phi n 26 iv 2.1.1 M t s khái ni m đ nh ngh a 27 2.1.2 C u trúc chung c a b quan sát tr ng thái 28 2.2 B quan sát FTO cho h n tính 29 2.2.1 B quan sát FTO cho h n tính ti n đ nh 29 2.2.2 Quan sát FTO b n v ng cho h n tính ng u nhiên 31 2.3 Thi t k b quan sát FTO cho h phi n 33 2.3.1 Đ t v n đ 33 2.3.2 Xây d ng b quan sát FTO b n v ng cho l p h phi n d ng chu n 33 2.3.3 M r ng b quan sát FTO cho m t h phi n MISO có th bi n đ i v d ng chu n 38 2.3.4 M r ng b FTO cho h phi n MIMO có th bi n đ i đư c v d ng chu n 40 2.3.5 B quan sát FTO cho m t l p h phi n Lipschitz 45 2.4 K t lu n chương 53 ĐIỀU KHIỂN THÍCH NGHI KHÁNG NHIỄU VÀ ỔN ĐỊNH ISS CHO MỘT LỚP HỆ PHI TUYẾN CÓ THAM SỐ BẤT ĐỊNH VÀ NHIỄU 3.1 Đ t v n đ 54 3.2 Đi u n thích nghi cho h phi n có tham s b t đ nh 56 3.2.1 H phi n có tham s b t đ nh 56 3.2.2 Phương pháp u n thích nghi gi đ nh rõ cho h phi n có tham s h ng b t đ nh m t đ u vào 57 3.2.3 Đi u n thích nghi gi đ nh rõ b ng mơ hình ngư c cho m t l p h phi n có tham s h ng b t đ nh nhi u đ u vào 59 3.2.3.1 Đi u n n tính hóa xác b ng mơ hình ngư c trư ng h p khơng có tham s b t đ nh 60 3.2.3.2 Đi u n thích nghi gi đ nh rõ d a n tính hóa xác mơ hình ngư c trư ng h p có tham s b t đ nh 61 3.3 Đi u n n tính hóa xác mơ hình ngư c gi đ nh rõ trư ng h p có tham s b t đ nh mơ hình nhi u tác đ ng d a nguyên t c hi u ch nh thích nghi theo nhi u n đ nh ISS 64 3.4 Minh h a phương pháp cho toán u n bám qu đ o cho h n t mô t b ng h Euler - Lagrange 73 3.4.1 Đi u n bám qu đ o cho h robot polar hai b c t 74 3.4.2 Đi u n bám qu đ o cho h robot planar hai b c t 79 3.4.3 Đi u n bám qu đ o cho h robot cylinder ba b c t 85 v 3.5 K t lu n chương 91 ĐIỀU KHIỂN PHẢN HỒI ĐẦU RA THÍCH NGHI CHO MỘT LỚP HỆ PHI TUYẾN DỰA TRÊN NGUYÊN LÝ TÁCH 4.1 Đi u n thích nghi ph n h i đ u d a nguyên lý tách s d ng quan sát tr ng thái 93 4.2 Tính th a mãn nguyên lý tách c a b quan sát FTO 95 4.2.1 Tính th a mãn nguyên lý tách c a b quan sát FTO b n v ng cho h phi n d ng chu n có nhi u 96 4.2.2 Tính th a mãn nguyên lý tách c a b quan sát FTO Lipschitz 96 4.3 Đi u n thích nghi ph n h i đ u d a nguyên lý tách cho m t l p h phi n Lipschitz có tham s b t đ nh nhi u s d ng quan sát FTO 96 4.4 Minh h a cho toán bám qu đ o đ t cho h tay máy có tham s b t đ nh nhi u tác đ ng lên đ u vào 99 4.5 K t lu n chương 104 KẾT LUẬN VÀ KIẾN NGHỊ 105 K t lu n 105 Ki n ngh v n đ nghiên c u ti p 106 TÀI LIỆU THAM KHẢO 107 DANH MỤC CÁC CƠNG TRÌNH ĐÃ CƠNG BỐ CỦA LUẬN ÁN 113 PHỤ LỤC 114 vi DANH MỤC CÁC KÝ HIỆU x F (.) véc tơ bi n tr ng thái Ma tr n hàm phi n η (t ) Mi n h p d n c a sai l ch bám tín hi u đ t Véc tơ đ u c a h th ng Véc tơ đ u vào c a h th ng Véc tơ tham s b t đ nh Véc tơ nhi u tác đ ng lên h th ng f ( ) , g ( ) , h ( ) Các véc tơ hàm phi n exp(.) xˆ, z1 , z e ( ) O y u θ T ,Di v (t ) Θn ×n In Các véc tơ tr ng thái quan sát Th i gian quan sát Tín hi u hi u ch nh thích nghi Ma tr n có ph n t có kích thư c n × n Ma tr n đơn v có kích thư c n vii DANH MỤC CÁC TỪ VIẾT TẮT FET Finite escape time HGO High gain observer LTI FTO Linear time invariable Bilinear matrix inequality Multi input multi output Muilti input Single Output Peaking Phenomenon Finite Time Observer ALI Analytic Linear Inputs UCO Uniformly Completely Observable Input to State Stability Certainty Equivalence Linear Matrix Inequality Multiple Lyapunov Function Lyapunov Function Control Lyapunov Function Separation Principle Global Asymptotic Stabilization Algebraic Ricatti Equation Degrees of freedom BMI MIMO MISO PE ISS CE LMI MLF LF CLF SP GAS ARE DOF Hi n tư ng thoát vô kho ng th i gian h u h n B quan sát có h s khu ch đ i l n H n tính tham s h ng B t đ ng th c ma tr n lư ng n tính H nhi u vào nhi u H nhi u đ u vào m t đ u Hi n tư ng đ nh nh n B quan sát tr ng thái th i gian h u h n Các đ u vào n tính hình th c Quan sát đư c đ u hoàn toàn n đ nh vào tr ng thái Phương pháp gi đ nh rõ B t đ ng th c ma tr n n tính Đa hàm Lyapunov Hàm Lyapunov Hàm u n Lyapunov Nguyên lý tách n đ nh ti m c n tồn c c Phương trình Ricati đ i s B c t viii DANH MỤC CÁC BẢNG BIỂU Bảng 2.1 Các tham số mô tay máy robot hai khớp đàn hồi [82] 43 Bảng 2.2 Các tham số thời gian trễ mong muốn 43 Bảng 4.1 Tổng kết thuật tốn thiết kế điều khiển thích nghi phản hồi đầu thích nghi theo nguyên lý tách dựa kháng nhiễu ổn định ISS cho lớp hệ phi tuyến Lipschitz có tham số bất định nhiễu đầu vào 98 ix DANH MỤC CÁC HÌNH VẼ Hình 1.1 Điều khiển ổn định phản hồi trạng thái (a) điều khiển ổn định phản hồi đầu (b) Hình 1.2 Điều khiển phản hồi đầu tĩnh 10 Hình 1.3 Điều khiển phản hồi đầu động 12 Hình 1.4 Điều khiển phản hồi đầu bù động học phi tuyến 12 Hình 1.5 Điều khiển phản hồi đầu dựa quan sát trạng thái 13 Hình 1.6 Điều khiển phản hồi đầu dựa quan sát trạng thái 14 Hình 1.7 Điều khiển phản hồi đầu thích nghi dựa quan sát trạng thái 14 Mơ ví dụ 1.1, trường hợp ε=0.01, điều kiện đầu x ( ) = ( 0,1.5 ) , xˆ ( ) = ( 0, ) 20 Hình 1.8 Hình 1.9 Mơ ví dụ 1.1, trường hợp ε=0.01, điều kiện đầu x ( ) = ( 0,1.7 ) , xˆ ( ) = ( 0, ) 21 Hình 1.10 Minh họa miền ổn định dùng phản hồi trạng thái phản hồi đầu dựa nguyên lý tách cho ví dụ 1.1 21 Hình 2.1 Minh họa cấu trúc quan sát Finite – time Engel Kreisselmeirer 29 Hình 2.2 Bộ FTO cho hệ tuyến tính tham số 30 Hình 2.3 Biến trạng thái x , x hai trường hợp quan sát thực với T = 0.5s trường hợp khơng có nhiễu 36 Hình 2.4 Biến trạng thái x , x hai trường hợp quan sát thực với T = 0.1s trường hợp khơng có nhiễu 37 Hình 2.5 Biến trạng thái x trường hợp quan sát quan sát bền vững với T = 0.1s trường hợp có nhiễu 37 Hình 2.6 Biến trạng thái x trường hợp quan sát quan sát bền vững với T = 0.1s trường hợp có nhiễu 38 Hình 2.7 Bộ quan sát thời gian hữu hạn cho hệ phi tuyến MISO 39 Hình 2.8 Mơ hình tay máy robot hai nối có khớp đàn hồi 42 Hình 2.9 Vị trí góc thực vị trí góc quan sát khớp 44 Hình 2.10 Vận tốc góc thực vận tốc góc quan sát khớp 44 Hình 2.11 Vận tốc motor vận tốc motor quan sát khớp 44 Hình 2.12 Gia tốc motor gia tốc motor quan sát khớp 44 Hình 2.13 Vận tốc thực vận tốc quan sát khớp với T = 0.05s 51 x II Phụ lục chương a Mô hình tay máy 2DOF polar robot function [sys,x0] = Robot2LPolar(t,x,u,flag,g,mt,phi0,l0) % Model link Robot Planar % Written by: Nguyen Van Chi - PhD in Progress at HUT - VietNam % Define: q1==phi==x1;q2=l==x2 % q1c=x3; q2c =x4 switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(phi0,l0); case 1, sys=mdlDerivatives(t,x,u,g,mt); Trang 122 case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes(phi0,l0) % sizes = simsizes; % sizes.NumContStates = 4; % sizes.NumDiscStates = 0; % sizes.NumOutputs = 4; % sizes.NumInputs = 2; % sizes.DirFeedthrough = 0; % sizes.NumSampleTimes = 0; % sys = simsizes(sizes); sys=[4;0;4;2;1;0]; x0 = [phi0;l0;0;0]; str = []; ts = [0 0]; %end mdlInitializeSizes function sys=mdlDerivatives(t,x,u,g,mt) % return state derivatives M=[mt*x(2)^2 0;0 mt]; g11=2*mt*x(2)*x(4)*x(3)+mt*g*x(2)*cos(x(1)); g12=mt*g*sin(x(1))-mt*x(2)*x(3)^2; G=[g11;g12]; sys(1)=x(3); sys(2)=x(4); tempStates=inv(M)*(u-G); sys(3)=tempStates(1,1); sys(4)=tempStates(2,1); % end mdlDerivatives function sys=mdlUpdate(t,x,u) sys = []; % end mdlUpdate function sys=mdlOutputs(t,x,u) sys=[x(1) x(2) x(3) x(4)]; % end mdlOutputs function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; % Example, set the next hit to be one second later sys = t + sampleTime; % end mdlGetTimeOfNextVarHit function sys=mdlTerminate(t,x,u) sys = []; %end mdlTerminate Trang 123 b Mơ hình tay máy 2DOF planar robot function [sys,x0,str,ts] = Robot2Lplanar(t,x,u,flag,g,m1,m2,l1,l2,q10,q20) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(t,x,u,q10,q20); case 1, sys=mdlDerivatives(t,x,u,g,m1,m2,l1,l2); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes(t,x,u,q10,q20); sizes = simsizes; sizes.NumContStates = 4; sizes.NumDiscStates = 0; sizes.NumOutputs = 4; sizes.NumInputs = 2; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = [q10;q20;0;0]; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,g,m1,m2,l1,l2) %m1=1;m2=1.5;l1=1.5;l2=1;g=9.8; Trang 124 c1=cos(x(1)); c2=cos(x(2)); c12=cos(x(1)+x(2)); s2=sin(x(2)); M=[m2*l2^2+2*m2*l1*l2*c2+(m1+m2)*l1^2 m2*l2^2+m2*l1*l2*c2;m2*l2^2+m2*l1*l2*c2 m2^l2^2]; G=[-2*m2*l1*l2*s2*x(4) -m2*l1*l2*s2*x(4);m2*l1*l2*s2*x(3) 0]*[x(3);x(4)]+[m2*l2*g*c12+(m1+m2)*l1*g*c1;m2*l2*g*c12]; sys(1)=x(3); sys(2)=x(4); tempStates=inv(M)*(u-G); sys(3)=tempStates(1,1); sys(4)=tempStates(2,1); function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u) sys=[x(1) x(2) x(3) x(4)]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; % end mdlTerminate Trang 125 c Mơ hình tay máy 3DOF Cylinder robot function [sys,x0] = Robot3LCylin(t,x,u,flag,g,m1,m2,J,theta0,h0,r0) % Model Link Cylindrical Arm % Written by: Nguyen Van Chi - PhD in Progress at HUT - VietNam % Define: theta=x1, h = x2, r=x3 % dtheta=x4, dh=x5, dr=x6 switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(theta0,h0,r0); case 1, sys=mdlDerivatives(t,x,u,g,m1,m2,J); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes(theta0,h0,r0) % sizes = simsizes; % sizes.NumContStates = 6; % sizes.NumDiscStates = 0; Trang 126 % % % % % sizes.NumOutputs = 6; sizes.NumInputs = 3; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 0; sys = simsizes(sizes); sys=[6;0;6;3;1;0]; x0 = [theta0;h0;r0;0;0;0]; str = []; ts = [0 0]; %end mdlInitializeSizes function sys=mdlDerivatives(t,x,u,g,m1,m2,J) % return state derivatives M=[J+m2*x(3)^2 0;0 m1+m2 0;0 m2]; G=[2*m2*x(3)*x(6)*x(4);(m1+m2)*g;-m2*x(3)*x(4)^2]; sys(1)=x(4); sys(2)=x(5); sys(3)=x(6); tempStates=inv(M)*(u-G); sys(4)=tempStates(1,1); sys(5)=tempStates(2,1); sys(6)=tempStates(3,1); % end mdlDerivatives function sys=mdlUpdate(t,x,u) sys = []; % end mdlUpdate function sys=mdlOutputs(t,x,u) sys=[x(1) x(2) x(3) x(4) x(5) x(6)]; % end mdlOutputs function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; % Example, set the next hit to be one second later sys = t + sampleTime; % end mdlGetTimeOfNextVarHit function sys=mdlTerminate(t,x,u) sys = []; %end mdlTerminate Trang 127 d Bộ điều khiển thích nghi cho 2DOF Polar robot function [sys,x0] = BuISSPolar(t,x,u,flag,p,g,a,E,epsilon) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u,p,g,a,E,epsilon); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,p,g,a,epsilon); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes sys=[1;0;4;12;1;1]; x0 = [0]; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,p,g,a,E,epsilon) phi_d=u(1); dphi_d_dt=u(2); l_d=u(4); dl_d_dt=u(5); phi=u(7); dphi_dt=u(8); d2phi_dt=u(9); l=u(10); dl_dt=u(11); d2l_dt=u(12); Trang 128 %E=1; d11=l^2*d2phi_dt+2*l*dl_dt*dphi_dt+g*l*cos(phi); d12=d2l_dt+g*sin(phi)-l*dphi_dt^2; D=[d11;d12]; M_estima=[p*l^2 0;0 p]; B=[0 0;0 0;inv(M_estima)]; K11=a;K12=a; K1=[K11*epsilon 0;0 K12*epsilon]; K2=[sqrt((K11+1)*K11) 0;0 sqrt((K12+1)*K12)]; P=[2*K1*K2 K1;K1 K2]; error=[phi_d-phi;l_d-l]; derivative_error=[dphi_d_dt-dphi_dt;dl_d_dt-dl_dt]; X=[error;derivative_error]; sys= (1/E)*D'* B'*P*X; function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u,p,g,a,epsilon) phi_d=u(1); l_d=u(4); phi=u(7); l=u(10); dphi_d_dt=u(2); dl_d_dt=u(5); dphi_dt=u(8); dl_dt=u(11); d2phi_d_dt=u(3); d2l_d_dt=u(6); d2phi_dt=u(9); d2l_dt=u(12); d11=l^2*d2phi_dt+2*l*dl_dt*dphi_dt+g*l*cos(phi); d12=d2l_dt+g*sin(phi)-l*dphi_dt^2; D=[d11;d12]; vnhieu=D*x; M_estima=[p*l^2 0;0 p]; g11=2*p*l*dl_dt*dphi_dt+p*g*l*cos(phi); g12=p*g*sin(phi)-p*l*dphi_dt^2; G_estima=[g11;g12]; K11=a;K12=a; K1=[K11*epsilon 0;0 K12*epsilon]; K2=[sqrt((K11+1)*K11) 0;0 sqrt((K12+1)*K12)]; % ============================ error=[phi_d-phi;l_d-l]; derivative_error=[dphi_d_dt-dphi_dt;dl_d_dt-dl_dt]; A=[d2phi_d_dt;d2l_d_dt]+K1*error+K2*derivative_error; sys=[M_estima*A+G_estima;vnhieu]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; Trang 129 e Bộ điều khiển thích nghi cho 2DOF Planar robot function [sys,x0] = BuISSPlanar(t,x,u,flag,p,g,m1,l1,l2,a,E,epsilon) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u,p,g,m1,l1,l2,a,E,epsilon); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,p,g,m1,l1,l2,a,E,epsilon); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes sys=[1;0;4;12;1;1]; x0 = [0]; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,p,g,m1,l1,l2,a,E,epsilon) q1_d=u(1); dq1_d=u(2);d2q1_d=u(3); q2_d=u(4); dq2_d=u(5);d2q2_d=u(6); q1=u(7); dq1=u(8);d2q1=u(9); q2=u(10); dq2=u(11);d2q2=u(12); c1=cos(q1); c2=cos(q2); c12=cos(q1+q2); Trang 130 s2=sin(q2); d11=(l2^2+2*l1*l2*c2+l1^2)*d2q1+(l2^2+l1*l2*c2)*d2q2- (2*l1*l2*s2*dq1*dq2+l1*l2*s2*dq2^2)+(l2*g*c12+l1*g*c1); d12=(l2^2+l1*l2*c2)*d2q1+l2^2*d2q2+l1*l2*s2*dq1^2+l2*g*c12; D=[d11;d12]; M_estima=[p*l2^2+2*p*l1*l2*c2+(m1+p)*l1^2 p*l2^2+p*l1*l2*c2;p*l2^2+p*l1*l2*c2 p^l2^2]; B=[0 0;0 0;inv(M_estima)]; K1=[a*epsilon 0;0 a*epsilon]; K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; P=[2*K1*K2 K1;K1 K2]; error=[q1_d-q1;q2_d-q2]; derivative_error=[dq1_d-dq1;dq2_d-dq2]; X=[error;derivative_error]; sys= (1/E)*D'* B'*P*X; function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u,p,g,m1,l1,l2,a,E,epsilon) q1_d=u(1); dq1_d=u(2);d2q1_d=u(3); q2_d=u(4); dq2_d=u(5);d2q2_d=u(6); q1=u(7); dq1=u(8);d2q1=u(9); q2=u(10); dq2=u(11);d2q2=u(12); c1=cos(q1); c2=cos(q2); c12=cos(q1+q2); s2=sin(q2); d11=(l2^2+2*l1*l2*c2+l1^2)*d2q1+(l2^2+l1*l2*c2)*d2q2- (2*l1*l2*s2*dq1*dq2+l1*l2*s2*dq2^2)+(l2*g*c12+l1*g*cos(q1)); d12=(l2^2+l1*l2*c2)*d2q1+l2^2*d2q2+l1*l2*s2*dq1^2+l2*g*c12; D=[d11;d12]; vnhieu=D*x; M_estima=[p*l2^2+2*p*l1*l2*c2+(m1+p)*l1^2 p*l2^2+p*l1*l2*c2;p*l2^2+p*l1*l2*c2 p^l2^2]; G_estima=[-2*p*l1*l2*s2*dq2 -p*l1*l2*s2*dq2;p*l1*l2*s2*dq1 0]*[dq1;dq2]+[p*l2*g*c12+(m1+p)*l1*g*c1;p*l2*g*c12]; K1=[a*epsilon 0;0 a*epsilon]; K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; % ============================ error=[q1_d-q1;q2_d-q2]; derivative_error=[dq1_d-dq1;dq2_d-dq2]; A=[d2q1_d;d2q2_d]+K1*error+K2*derivative_error; sys=[M_estima*A+G_estima;vnhieu]; function sys=mdlGetTimeOfNextVarHit(t,x,u) Trang 131 sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; f Bộ điều khiển thích nghi cho 3DOF cylinder robot function [sys,x0] = BuISSCilinder(t,x,u,flag,p,g,m1,J,a,E,epsilon) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u,p,g,m1,J,a,E,epsilon); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,p,g,m1,J,a,E,epsilon); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes Trang 132 sys=[1;0;6;18;1;1]; x0 = [0]; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,p,g,m1,J,a,E,epsilon) theta_d=u(1); dtheta_d=u(2);d2theta_d=u(3); h_d=u(4); dh_d=u(5);d2h_d=u(6); r_d=u(7); dr_d=u(8);d2r_d=u(9); theta=u(10); dtheta=u(11);d2theta=u(12); h=u(13);dh=u(14);d2h=u(15); r=u(16);dr=u(17);d2r=u(18); d11=r^2*d2theta+2*r*dr*dtheta; d12=d2h+g; d13=d2r-r*dtheta^2; D=[d11;d12;d13]; M_estima=[J+p*r^2 0;0 m1+p 0;0 p]; B=[0 0;0 0;0 0;inv(M_estima)]; K1=[a*epsilon 0;0 a*epsilon 0;0 a*epsilon]; K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; P=[2*K1*K2 K1;K1 K2]; error=[theta_d-theta;h_d-h;r_d-r]; derivative_error=[dtheta_d-dtheta;dh_d-dh;dr_d-dr]; X=[error;derivative_error]; sys= (1/E)*D'* B'*P*X; function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u,p,g,m1,J,a,E,epsilon) theta_d=u(1); dtheta_d=u(2);d2theta_d=u(3); h_d=u(4); dh_d=u(5);d2h_d=u(6); r_d=u(7); dr_d=u(8);d2r_d=u(9); theta=u(10); dtheta=u(11);d2theta=u(12); h=u(13);dh=u(14);d2h=u(15); r=u(16);dr=u(17);d2r=u(18); d11=r^2*d2theta+2*r*dr*dtheta; d12=d2h+g; d13=d2r-r*dtheta^2; D=[d11;d12;d13]; vnhieu=D*x; M_estima=[J+p*r^2 0;0 m1+p 0;0 p]; G_estima=[2*p*r*dr*dtheta;(m1+p)*g;-p*r*dtheta^2]; Trang 133 K1=[a*epsilon 0;0 a*epsilon 0;0 a*epsilon]; K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; % ============================ error=[theta_d-theta;h_d-h;r_d-r]; derivative_error=[dtheta_d-dtheta;dh_d-dh;dr_d-dr]; A=[d2theta_d;d2h_d;d2r_d]+K1*error+K2*derivative_error; sys=[M_estima*A+G_estima;vnhieu]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; III Phụ lục chương Sơ đồ mô Matlab/Simulink (liên hệ với tác giả luận án) Các chương trình viết M Files a Mơ hình tay máy robot khớp - giống phần phụ lục chương Bộ điều khiển thích nghi BuIS.m cho robot Planar 2DOF function [sys,x0,str,ts] =BuISS(t,x,u,flag,p,g,m1,l1,l2,a,E,epsilon) b switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(t,x,u); case 1, sys=mdlDerivatives(t,x,u,p,g,m1,l1,l2,a,E,epsilon); Trang 134 case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,p,g,m1,l1,l2,a,E,epsilon); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes(t,x,u); sizes = simsizes; sizes.NumContStates = 1; sizes.NumDiscStates = 0; sizes.NumOutputs = 4; sizes.NumInputs = 12; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = [0]; str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,p,g,m1,l1,l2,a,E,epsilon) q1_d=u(1); dq1_d=u(2);d2q1_d=u(3); q2_d=u(4); dq2_d=u(5);d2q2_d=u(6); q1=u(7); dq1=u(8);d2q1=u(9); q2=u(10); dq2=u(11);d2q2=u(12); c1=cos(q1); c2=cos(q2); c12=cos(q1+q2); s2=sin(q2); d11=(l2^2+2*l1*l2*c2+l1^2)*d2q1+(l2^2+l1*l2*c2)*d2q2- (2*l1*l2*s2*dq1*dq2+l1*l2*s2*dq2^2)+(l2*g*c12+l1*g*c1); d12=(l2^2+l1*l2*c2)*d2q1+l2^2*d2q2+l1*l2*s2*dq1^2+l2*g*c12; D=[d11;d12]; M_estima=[p*l2^2+2*p*l1*l2*c2+(m1+p)*l1^2 p*l2^2+p*l1*l2*c2;p*l2^2+p*l1*l2*c2 p^l2^2]; B=[0 0;0 0;inv(M_estima)]; K1=[a*epsilon 0;0 a*epsilon]; % sua chut K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; P=[2*K1*K2 K1;K1 K2]; error=[q1_d-q1;q2_d-q2]; derivative_error=[dq1_d-dq1;dq2_d-dq2]; X=[error;derivative_error]; sys= (1/E)*D'* B'*P*X; function sys=mdlUpdate(t,x,u) sys = []; function sys=mdlOutputs(t,x,u,p,g,m1,l1,l2,a,E,epsilon) q1_d=u(1); dq1_d=u(2);d2q1_d=u(3); q2_d=u(4); dq2_d=u(5);d2q2_d=u(6); q1=u(7); dq1=u(8);d2q1=u(9); q2=u(10); dq2=u(11);d2q2=u(12); c1=cos(q1); c2=cos(q2); Trang 135 c12=cos(q1+q2); s2=sin(q2); d11=(l2^2+2*l1*l2*c2+l1^2)*d2q1+(l2^2+l1*l2*c2)*d2q2- (2*l1*l2*s2*dq1*dq2+l1*l2*s2*dq2^2)+(l2*g*c12+l1*g*cos(q1)); d12=(l2^2+l1*l2*c2)*d2q1+l2^2*d2q2+l1*l2*s2*dq1^2+l2*g*c12; D=[d11;d12]; vnhieu=D*x; M_estima=[p*l2^2+2*p*l1*l2*c2+(m1+p)*l1^2 p*l2^2+p*l1*l2*c2;p*l2^2+p*l1*l2*c2 p^l2^2]; G_estima=[-2*p*l1*l2*s2*dq2 -p*l1*l2*s2*dq2;p*l1*l2*s2*dq1 0]*[dq1;dq2]+[p*l2*g*c12+(m1+p)*l1*g*c1;p*l2*g*c12]; K1=[a*epsilon 0;0 a*epsilon]; % sua chut K2=[sqrt((a+1)*a) 0;0 sqrt((a+1)*a)]; % ============================ error=[q1_d-q1;q2_d-q2]; derivative_error=[dq1_d-dq1;dq2_d-dq2]; A=[d2q1_d;d2q2_d]+K1*error+K2*derivative_error; sys=[M_estima*A+G_estima;vnhieu]; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; % end mdlTerminate c Bộ quan sát FTO để quan sát vận tốc cho tay máy Planar 2DOF - chương Trang 136 ... Hình 1.2 Điều khiển phản hồi đầu tĩnh 10 Hình 1.3 Điều khiển phản hồi đầu động 12 Hình 1.4 Điều khiển phản hồi đầu bù động học phi tuyến 12 Hình 1.5 Điều khiển phản hồi đầu dựa... u Đối tượng điều khiển y Đối tượng điều khiển x , x , , x n u Bộ điều khiển y x , x , , x n u x (a) Bộ điều khiển (b) Hình 1.1 Điều khiển ổn định phản hồi trạng thái (a) điều khiển ổn định phản. .. Bộ điều khiển thích nghi giả định rõ cho hệ phi tuyến bất định đầu vào 58 Hình 3.2 Bộ điều khiển thích nghi giả định rõ cho hệ phi tuyến bất định 59 Hình 3.3 Bộ điều khiển thích