THÔNG TIN TÀI LIỆU
B GIÁO DC VÀ ĐÀO TO TRNG ĐI HC BÁCH KHOA HÀ NI NGUYN VN CHÍ ĐIU KHIN THÍCH NGHI ĐI TNG PHI TUYN BNG PHN HI ĐU RA LUN ÁN TIN S K THUT Hà Ni – Nm 2012 B GIÁO DC VÀ ĐÀO TO TRNG ĐI HC BÁCH KHOA HÀ NI NGUYN VN CHÍ ĐIU KHIN THÍCH NGHI ĐI TNG PHI TUYN BNG PHN HI ĐU RA Chuyên ngành: LÝ THUYT ĐIU KHIN VÀ ĐIU KHIN TI U Mã s: 62.52.60.50 LUN ÁN TIN S K THUT NGI HNG DN KHOA HC: PGS.TS NGUYN DOÃN PHC PGS.TS PHAN XUÂN MINH Hà Ni – Nm 2012 ii LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cu ca riêng tơi da hng dn ca tp th hng dn khoa hc tài liu tham kho trích dn Kt qu nghiên cu trung thc cha công b bt c mt cơng trình khác Nghiên cu sinh NGUYN VN CHÍ iii MỤC LỤC DANH MC CÁC KÝ HIU vii DANH MC CÁC T VIT TT viii DANH MC CÁC BNG BIU ix DANH MC CÁC HÌNH V x LI CM N xiv M ĐU Tính cp thit ca đ tài Mc đích nghiên cu Đi tng phm vi nghiên cu Ý ngha khoa hc thc tin ca đ tài 5 Nhng đóng góp ca lun án 6 B cc ca lun án T Ổ NG QUAN V Ề Đ I Ề U KHI Ể N Ổ N ĐỊ NH H Ệ PHI TU Y Ế N B Ằ NG PH Ả N H Ồ I ĐẦ U R A 1.1 Gii thiu v điu khin n đnh h phi tuyn bng phn hi đu 1.2 Điu khin n đnh phn hi đu tnh 1.3 Điu khin n đnh phn hi đu đng 11 1.3.1 Điu khin phn hi đu bù đng hc phi tuyn 12 1.3.2 Điu khin phn hi đu da quan sát trng thái 13 1.4 Tr ngi điu kin ca toán thit k b điu khin n đnh phn hi đu theo nguyên lý tách 19 1.4.1 Hin tng FET - “Finite escape time” 19 1.4.2 Lp h phi tuyn có hin tng FET 22 1.5 Các điu kin cn lp đi tng n đnh đc bng b điu khin phn hi đu da nguyên lý tách 22 1.5.1 Các điu kin cn 22 1.5.2 Lp đi tng n đnh đc bng phn hi đu theo nguyên lý tách 23 1.6 Kt lun chng 25 QUAN SÁT TR Ạ NG THÁI H Ệ PHI TU Y Ế N V Ớ I TH Ờ I GIAN H Ữ U H Ạ N ĐẶ T TR ƯỚ C 2.1 Gii thiu chung v quan sát trng thái cho h phi tuyn 26 iv 2.1.1 Mt s khái nim đnh ngha 27 2.1.2 Cu trúc chung ca b quan sát trng thái 28 2.2 B quan sát FTO cho h tuyn tính 29 2.2.1 B quan sát FTO cho h tuyn tính tin đnh 29 2.2.2 Quan sát FTO bn vng cho h tuyn tính ngu nhiên 31 2.3 Thit k b quan sát FTO cho h phi tuyn 33 2.3.1 Đt vn đ 33 2.3.2 Xây dng b quan sát FTO bn vng cho lp h phi tuyn dng chun 33 2.3.3 M rng b quan sát FTO cho mt h phi tuyn MISO có th bin đi v dng chun 38 2.3.4 M rng b FTO cho h phi tuyn MIMOcó th bin đi đc v dng chun 40 2.3.5 B quan sát FTO cho mt lp h phi tuyn Lipschitz 45 2.4 Kt lun chng 53 Đ I Ề U KHI Ể N THÍC H NGHI KHÁNG NHI Ễ U VÀ Ổ N ĐỊ NH ISS CHO M Ộ T L Ớ P H Ệ PHI TU Y Ế N CÓ THAM S Ố B Ấ T ĐỊ NH VÀ NHI Ễ U 3.1 Đt vn đ 54 3.2 Điu khin thích nghi cho h phi tuyn có tham s bt đnh 56 3.2.1 H phi tuyn có tham s bt đnh 56 3.2.2 Phng pháp điu khin thích nghi gi đnh rõ cho h phi tuyn có tham s hng bt đnh mt đu vào 57 3.2.3 Điu khin thích nghi gi đnh rõ bng mơ hình ngc cho mt lp h phi tuyn có tham s hng bt đnh nhiu đu vào 59 3.2.3.1 Điu khin tuyn tính hóa xác bng mơ hình ngc trng hp khơng có tham s bt đnh 60 3.2.3.2 Điu khin thích nghi gi đnh rõ da tuyn tính hóa xác mơ hình ngc trng hp có tham s bt đnh 61 3.3 Điu khin tuyn tính hóa xác mơ hình ngc gi đnh rõ trng hp có tham s bt đnh mơ hình nhiu tác đng da ngun tc hiu chnh thích nghi theo nhiu n đnh ISS 64 3.4 Minh ha phng pháp cho toán điu khin bám qu đo cho h c đin t mô t bng h Euler - Lagrange 73 3.4.1 Điu khin bám qu đo cho h robot polar hai bc t 74 3.4.2 Điu khin bám qu đo cho h robot planar hai bc t 79 3.4.3 Điu khin bám qu đo cho h robot cylinder ba bc t 85 v 3.5 Kt lun chng 91 Đ I Ề U KHI Ể N PH Ả N H Ồ I ĐẦ U R A THÍCH NGHI C HO M Ộ T L Ớ P H Ệ PHI TU Y Ế N D Ự A TRÊ N NGUYÊ N LÝ TÁC H 4.1 Điu khin thích nghi phn hi đu da nguyên lý tách s dng quan sát trng thái 93 4.2 Tính tha mãn nguyên lý tách ca b quan sát FTO 95 4.2.1 Tính tha mãn nguyên lý tách ca b quan sát FTO bn vng cho h phi tuyn dng chun có nhiu 96 4.2.2 Tính tha mãn nguyên lý tách ca b quan sát FTO Lipschitz 96 4.3 Điu khin thích nghi phn hi đu da nguyên lý tách cho mt lp h phi tuyn Lipschitz có tham s bt đnh nhiu s dng quan sát FTO 96 4.4 Minh ha cho toán bám qu đo đt cho h tay máy có tham s bt đnh nhiu tác đng lên đu vào 99 4.5 Kt lun chng 104 KẾT LUẬN VÀ KIẾN NGHỊ 105 Kt lun 105 Kin ngh vn đ nghiên cu tip 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 bin trng thái Ma trn hàm phi tuyn η (t ) Min hp dn ca sai lch bám tín hiu đt Véc t đu ca h thng Véc t đu vào ca h thng Véc t tham s bt đnh Véc t nhiu tác đng lên h thng f (.) , g ( ), h (.) Các véc t hàm phi tuyn exp(.) xˆ , z1 , z2 T ,D i v (t ) Θ n ×n In e O y u θ ( ) Các véc t trng thái quan sát Thi gian quan sát Tín hiu hiu chnh thích nghi Ma trn có phn t có kích thc n × n Ma trn đn v có kích thc 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 Hin tng thoát vô khong thi gian hu hn B quan sát có h s khuch đi ln H tuyn tính tham s hng Bt đng thc ma trn lng tuyn tính H nhiu vào nhiu H nhiu đu vào mt đu Hin tng đnh nhn B quan sát trng thái thi gian hu hn Các đu vào tuyn tính hình thc Quan sát đc đu hồn tồn n đnh vào trng thái Phng pháp gi đnh rõ Bt đng thc ma trn tuyn tính Đa hàm Lyapunov Hàm Lyapunov Hàm điu khin Lyapunov Nguyên lý tách n đnh tim cn tồn cc Phng trình Ricati đi s Bc 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 toá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 ) = ( 0, ) 20 Hình 1.8 Mơ ví dụ 1.1, trường hợp ε=0.01, điều kiện đầu x ( ) = ( 0,1.7 ) , xˆ (0 ) = (0, ) 21 Hình 1.9 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 , x3 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 , x3 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 function [sys,x0] = BuISSPolar(t,x,u,flag,p,g,a,E,epsilon) robot 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); dphi_d_dt=u(2); d2phi_d_dt=u(3); l_d=u(4); dl_d_dt=u(5); d2l_d_dt=u(6); phi=u(7); dphi_dt=u(8); d2phi_dt=u(9); l=u(10); dl_dt=u(11); 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 function [sys,x0] = BuISSCilinder(t,x,u,flag,p,g,m1,J,a,E,epsilon) robot 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 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) 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 1, x , , xn u Bộ điều khiển y x1 , x2 , , xn 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
Ngày đăng: 12/03/2022, 02:51
Xem thêm: