Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 106 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
106
Dung lượng
6,97 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH VÕ BÁ VIỆT NGHĨA ĐIỀU KHIỂN TRƯỢT THÍCH NGHI CHO HỆ ROBOT HAI BÁNH TỰ CÂN BẰNG DỰA TRÊN MẠNG NEURAL Chuyên ngành: KỸ THUẬT ĐIỆN TỬ Mã chuyên ngành: 60520203 LUẬN VĂN THẠC SĨ THÀNH PHỐ HỒ CHÍ MINH, NĂM 2019 BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH VÕ BÁ VIỆT NGHĨA ĐIỀU KHIỂN TRƯỢT THÍCH NGHI CHO HỆ ROBOT HAI BÁNH TỰ CÂN BẰNG DỰA TRÊN MẠNG NEURAL Chuyên ngành: KỸ THUẬT ĐIỆN TỬ Mã chuyên ngành: 60520203 LUẬN VĂN THẠC SĨ THÀNH PHỐ HỒ CHÍ MINH, NĂM 2019 Cơng trình hồn thành Trường Đại học Cơng nghiệp TP Hồ Chí Minh Người hướng dẫn khoa học: Người phản biện 1: Người phản biện 2: Luận văn thạc sĩ bảo vệ Hội đồng chấm bảo vệ Luận văn thạc sĩ Trường Đại học Công nghiệp thành phố Hồ Chí Minh ngày tháng năm Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: - Chủ tịch Hội đồng - Phản biện - Phản biện - Ủy viên - Thư ký CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA CÔNG NGHỆ ĐIỆN TỬ BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Võ Bá Việt Nghĩa Ngày, tháng, năm sinh: 11-09-1994 Chuyên ngành: Kỹ thuật Điện tử MSHV: 16083551 Nơi sinh: Bà Rịa - Vũng Tàu Mã chuyên ngành: 60520203 I TÊN ĐỀ TÀI: Điều khiển trượt thích nghi cho hệ robot hai bánh tự cân dựa mạng neural NHIỆM VỤ VÀ NỘI DUNG: Nghiên cứu, thiết kế thực nghiệm giải thuật trượt thích nghi dựa mạng neural ứng dụng cho mơ hình robot hai bánh tự cân Phân tích đánh giá kết mơ kết thực nghiệm II NGÀY GIAO NHIỆM VỤ: Quyết định số 2057/QĐ-ĐHCN, ngày 02/10/2018 Trường Đại học Công Nghiệp TPHCM việc giao đề tài cử người hướng dẫn luận văn thạc sĩ III NGÀY HOÀN THÀNH NHIỆM VỤ: 02/04/2019 IV NGƯỜI HƯỚNG DẪN KHOA HỌC: Tiến sĩ Mai Thăng Long Tp Hồ Chí Minh, ngày … tháng … năm 2019 NGƯỜI HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN ĐÀO TẠO TRƯỞNG KHOA CÔNG NGHỆ ĐIỆN TỬ LỜI CẢM ƠN Lời xin gửi lời cảm ơn chân thành đến toàn ban lãnh đạo quý đồng nghiệp trường SaigonTech tạo điều kiện cho ổn định công việc, yên tâm công tác động viên việc học tập, nghiên cứu nâng cao trình độ tơi Tiếp đến xin trân trọng cảm ơn Trường Đại học Công nghiệp thành phố Hồ Chí Minh tạo điều kiện cung cấp thiết bị học tập tốt cho chúng tơi Bên cạnh đó, khơng thể thiếu đóng góp q thầy khoa Cơng Nghệ Điện Tử đồng hành chia kiến thức, kinh nghiệm quý báu dành cho học viên lớp Cao học điện từ 6B có Đặc biệt, cảm ơn thầy Mai Thăng Long thầy Nguyễn Ngọc Sơn tận tình hướng dẫn, tháo gỡ khúc mắc kiến thức nhắc nhở tơi q trình mà tơi thực luận văn Hơn nữa, cảm ơn bạn anh lớp Cao học điện tử 6B đồng cam cộng khổ, hết lòng giúp đỡ lẫn lúc thuận lợi lúc khó khăn hai năm học vừa qua để đến ngày hôm Cảm ơn Thiện, người bạn, người anh em người đã, dành xuân đường học vấn Sau tất cả, lời cảm ơn đến gia đình Cảm ơn vợ nguồn động lực đáng to lớn nhất, luôn bên cạnh lo lắng chăm sóc cho tơi suốt q trình học tập i TÓM TẮT LUẬN VĂN THẠC SĨ Luận văn trình bày điều khiển trượt thích nghi dựa mạng neural để điều khiển bám quỹ đạo tham chiếu cho hệ robot hai bánh tự cân Trong sơ đồ điều khiển, mạng neural ba lớp áp dụng để ước lượng trực tuyến thông số mô hình chưa biết điều khiển thích nghi bền vững để bù sai số ước lượng nhiễu Việc thiết kế luật cập nhật trực tuyến thông số mạng neural, bù nhiễu sai số ước lượng có việc sử dụng định lý ổn định Lyapunov Do đó, điều khiển đề xuất đảm bảo tính ổn định bền vững Dựa theo kết mô phỏng, nhận thấy giá trị ngõ hệ thống bám theo giá trị đặt mong muốn lân cận vùng khơng, cung cấp chứng xác minh tính hiệu điều khiển đề xuất đến hiệu suất làm việc robot Tính hiệu bền vững hệ điều khiển đề xuất xác minh cách so sánh kết mô ii ABSTRACT This thesis presents an adaptive sliding controller based on a neural network to a control reference trajectory for a two-wheeled self-balancing robot system In the control scheme, a three-layer neural network is applied to estimate the unknown model parameters online and a robust adaptive controller to compensate for estimating errors and noise The design of the law updates the parameters of neural networks, noise compensation, and estimation errors is derived using Lyapunov stability theorem Therefore, the proposed controller can guarantee the stability and robustness Based on the simulation results, we found that the output values of the system follow the desired values near a neighborhood of zero, provided evidence to verify the effectiveness of the proposed controller to the performance of the robot The effectiveness and sustainability of the proposed control system are verified by comparing simulation results iii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu thân tơi Các kết nghiên cứu kết luận luận văn trung thực, không chép từ nguồn hình thức Việc tham khảo nguồn tài liệu thực trích dẫn ghi nguồn tài liệu tham khảo quy định Học viên Võ Bá Việt Nghĩa iv MỤC LỤC MỤC LỤC v DANH MỤC HÌNH ẢNH viii DANH MỤC BẢNG BIỂU xi DANH MỤC TỪ VIẾT TẮT xii MỞ ĐẦU .1 Đặt vấn đề Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu Cách tiếp cận phương pháp nghiên cứu Ý nghĩa thực tiễn đề tài CHƯƠNG TỔNG QUAN 1.1 Giới thiệu .3 1.2 Khó khăn việc thiết kế điều khiển 1.3 Đóng góp nghiên cứu CHƯƠNG 2.1 CƠ SỞ LÝ THUYẾT .7 Cơ sở lý thuyết toán học 2.1.1 Chuẩn véc-tơ tín hiệu 2.1.2 Các tính chất ma trận 10 2.2 Khái niệm ổn định 12 2.3 Lý thuyết ổn định Lyapunov .13 2.4 Mạng neural 16 2.5 Động lực học robot hai bánh tự cân .18 2.6 Giảm động lực học 19 v CHƯƠNG BỘ ĐIỀU KHIỂN TRƯỢT THÍCH NGHI DỰA TRÊN MẠNG NEURAL 22 3.1 Sơ đồ khối điều khiển .22 3.2 Cơ sở thiết kế điều khiển trượt thích nghi 22 3.3 Cơ sở việc dùng mạng neural để ước lượng 25 3.4 Thiết kế điều khiển trượt thích nghi dùng mạng neural 27 CHƯƠNG MÔ PHỎNG 30 4.1 Xây dựng sơ đồ mô dùng MATLAB –Simulink 30 4.2 Các thơng số mơ hình 30 4.3 Kết mô 34 4.3.1 Trường hợp – Thành phần trượt chứa hàm sign s 34 4.3.2 Trường hợp – Thành phần trượt chứa hàm sign s 36 4.3.3 Trường hợp – Thành phần trượt chứa hàm sign s 38 4.3.4 Trường hợp – điều khiển PD 41 4.3.5 Trường hợp – điều khiển SMC .43 4.3.6 Trường hợp – điều khiển SMC + NN 45 4.3.7 Trường hợp – điều khiển SMC + NN + bù nhiễu 47 4.3.8 Trường hợp – điều khiển PD 50 4.3.9 Trường hợp – điều khiển SMC .52 4.3.10 Trường hợp – điều khiển SMC + NN .54 4.3.11 Trường hợp – điều khiển SMC + NN + bù nhiễu .56 4.3.12 Trường hợp – điều khiển PD .59 4.3.13 Trường hợp – điều khiển SMC 61 4.3.14 Trường hợp – điều khiển SMC + NN .63 vi PHỤ LỤC Code khối references: function [sys,x0,str,ts] = ref(t,x,u,flag) switch flag case [sys,x0,str,ts]=mdlInitializeSizes; case sys=mdlDerivatives(t,x,u); case sys=mdlOutputs(t,x,u); case {2,4,9} sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 8; sizes.NumInputs = 0; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = []; %gia tri ban dau cac bien trang thai str = []; ts = [0 0]; function sys = mdlOutputs(t,x,u) % Test % xd = 0.03*t; % yd = 0.01*t; % td = atan(0.01/0.03); % ad = 0; % xd_dot = 0.03; % yd_dot = 0.01; % td_dot = 0; % ad_dot = 0; if t>=0 && t25 && t50 && t50 && t tanh() % uPD = s; % Lay gia tri tu cac bien trang thai for ij=1:1:c %1:1:3 for jj=1:1:b %1:1:5 W(ij,jj)=x(ij*jj+(ij-1)*(b-jj)); end end % Ngo vao cho mang NN: [12x1] z = [qd_dot(1); qd(1); e_dot(1); e(1); qd_dot(2); qd(2); e_dot(2); e(2); qd_dot(3); qd(3); e_dot(3); e(3)]; % Tinh toan ham kich hoat for j=1:1:b %b=5 for i=1:1:n %n=12 deta(j) = exp(-(z(i)-l)^2/(m*m)); %deta[bx1] end end % Tinh gia tri uoc luong va luat dieu khien 79 f_hat = W*deta'; to_v = ((esi+t_d)*s)/norm(s);%[3x1] to = f_hat + to_v + uSMC; % to = f_hat + uSMC; % to = uSMC; % to = uPD; % Xuat gia tri cac bien trang thai for ij = 1:1:c %c = for jj = 1:1:b W(ij,jj) = Kw*deta(jj)*s(ij); sys(ij*jj+(ij-1)*(b-jj)) = W(ij,jj); end end function sys = mdlOutputs(t,x,u) global f_hat to if t == to = zeros(3,1); f_hat = zeros(3,1); end %%% sys(1) = to(1);% sys(2) = to(2);% sys(3) = to(3);% sys(4) = norm(f_hat(1));% sys(5) = norm(f_hat(2));% sys(6) = norm(f_hat(3));% sys(7) = norm(f_hat);% Code khối Model: function [sys,x0,str,ts] = model_smcnn_4var3(t,x,u,flag) switch flag case [sys,x0,str,ts]=mdlInitializeSizes; case sys=mdlDerivatives(t,x,u); case sys=mdlOutputs(t,x,u); case {2,4,9} sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes; 80 sizes.NumContStates = 6;%6 bien trang thai: v, w, a sizes.NumDiscStates = 0; sizes.NumOutputs = 10;%6 ngo ra: z1,z2,z3, z1_dot, z2_dot, z3_dot, fd (gia tri thuc te cua ham f) sizes.NumInputs = 3;%2 ngo vao: rL, rR sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 0; sys = simsizes(sizes); x0 = [0 5*(pi/180) 0 0]; %gia tri ban dau cac bien trang thai str = []; ts = []; function sys = mdlDerivatives(t,x,u) global fd Mp = 2.5; l = 0.35; g = 9.81; d = 0.12; mw = 0.3; r = 0.048; Im = 0.055; Iw = 0.051; p = diag(0.5); if t>=35 Mp=Mp+13.5; end r1 = u(1); r2 = u(2); r3 = u(3); to = [r1;r2;0]; z1 z2 z3 q q_dot = = = = = x(1); z1_dot = x(4); % x(2); z2_dot = x(5); % x(3); z3_dot = x(6); [z1;z2;z3]; [z1_dot;z2_dot;z3_dot]; m11 = 2*mw*d*d + (2*Iw*d*d)/(r*r) + Im + 4*Mp*l*l*sin(z3)*sin(z3); m12 = 0; m13 = 0; m21 = 0; m22 = 2*mw + (2*Iw)/(r*r) + Mp; m23 = Mp*l*cos(z3); m31 = 0; m32 = Mp*l*cos(z3); m33 = Mp*l*l + Im; M = [m11 m12 m13;m21 m22 m23;m31 m32 m33]; 81 v11 v12 v13 v21 v22 v23 v31 v32 v33 V = = = = = = = = = = (1/2)*(Mp*l*l*z3_dot*sin(2*z3)*sin(2*z3)); 0; (1/2)*(z1_dot*Mp*l*l*sin(2*z3)); 0; 0; -Mp*l*z3_dot*sin(z3); -(1/2)*z1_dot*Mp*l*l*sin(2*z3); 0; 0; [v11 v12 v13;v21 v22 v23;v31 v32 v33]; g1 g2 g3 G = = = = 0; 0; Mp*g*l*sin(z3); [g1;g2;g3]; f1 f2 f3 F = = = = z1_dot; z2_dot; 0; p*[f1;f2;f3]; d1 d2 d3 rd = = = = 0.8*sin(2*t); 0.9*cos(3*t); 0.0*sin(t); [d1;d2;d3]; %%%gia tri dat z1d = atan(0.01/0.03); z2d = sqrt(((0.01*t)^2)+((0.03*t)^2)); z3d = 0;%ad qd = [z1d; z2d; z3d]; z1d_dot z2d_dot z3d_dot qd_dot = = = = 0;%wd 0.03162;%vd 0;%ad_dot [z1d_dot; z2d_dot; z3d_dot]; z1d_2dot z2d_2dot z3d_2dot qd_2dot = = = = 0;%wd_dot 0;%vd_dot 0;%ad_2dot [z1d_2dot; z2d_2dot; z3d_2dot]; k1 = [5 0;0 1.6 0;0 0.3]; e = qd - q; e_dot = qd_dot - q_dot; 82 fd = M*(qd_2dot + k1*e_dot) + V*(qd_dot + k1*e) + G + F + rd; Z = (M)\(to - V*q_dot - G - F - rd); sys(1) sys(2) sys(3) sys(4) sys(5) sys(6) = = = = = = x(4); x(5); x(6); Z(1); Z(2); Z(3); function sys = mdlOutputs(t,x,u) global fd if t==0 fd = zeros(3,1); end sys(1) = x(1); % sys(2) = x(2); % sys(3) = x(3); % sys(4) = x(4); % sys(5) = x(5); % sys(6) = x(6); % sys(7) = norm(fd(1)); % sys(8) = norm(fd(2)); % sys(9) = norm(fd(3)); % sys(10) = norm(fd); Code khối tvw2x_dot,y_dot: function [sys,x0,str,ts] = inverted(t,x,u,flag) switch flag case [sys,x0,str,ts]=mdlInitializeSizes; case sys=mdlDerivatives(t,x,u); case sys=mdlOutputs(t,x,u); case {2,4,9} sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]); end 83 function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; sizes.NumInputs = 3; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 0; sys = simsizes(sizes); x0 = []; %gia tri ban dau cac bien trang thai str = []; ts = []; function sys = mdlOutputs(t,x,u) t = u(1); v = u(2); w = u(3); phi = [1 0;0 cos(t);0 sin(t)]; n_dot = [w;v]; qv_dot = phi*n_dot; sys(1) = qv_dot(2); %x sys(2) = qv_dot(3); %y Các code hiển thị: %Show results close all; figure('Name','Simulation results 1','NumberTitle','off') %Error distance x1 = subplot(4,2,1); plot(t,qd(:,2)-q(:,2),'m'); %legend('Error distance'); xlabel('Time(s)'); ylabel('Distance (m)'); title(x1,'Error distance'); grid on; ylim(x1,[-0.5 0.5]); set(x1,'YTick',[-0.5 -0.25 0.25 0.5]); %Error Angular velocity x2 = subplot(4,2,2); plot(t,qd(:,4)-q(:,4),'m'); %legend('Error Angular velocity'); xlabel('Time(s)'); ylabel('Velocity (m/s)'); title(x2,'Error Angular velocity'); 84 grid on; %Error Heading velocity x3 = subplot(4,2,3); plot(t,qd(:,5)-q(:,5),'m'); %legend('Error Heading velocity'); xlabel('Time(s)'); ylabel('Velocity (m/s)'); title(x3,'Error Heading velocity'); grid on; ylim(x3,[-0.5 0.5]); set(x3,'YTick',[-0.5 -0.25 0.25 0.5]); %Error Tilt velocity x4 = subplot(4,2,4); plot(t,qd(:,6)-q(:,6),'m'); %legend('Error Tilt velocity'); xlabel('Time(s)'); ylabel('Velocity (m/s)'); title(x4,'Error Tilt velocity'); grid on; ylim(x4,[-2 2]); set(x4,'YTick',[-2 -1 2]); %Control torque x5 = subplot(4,2,5); plot(t,to(:,1),'b',t,to(:,2),'r'); legend('r1', 'r2'); xlabel('Time(s)'); ylabel('Torque (Nm)'); title(x5,'Control torque'); grid on; %Parameter estimation x6 = subplot(4,2,6); plot(t,f_hat(:,1),'b',t,f_hat(:,2),'r'); leg = legend({'$\hat{f_1}^{}$';'$\hat{f_2}^{}$'}); set(leg,'Interpreter','latex'); % legend('||f_1|| ', '||f_2|| '); xlabel('Time(s)'); ylabel('Estimated values'); title(x6,'Parameter estimation'); grid on; %XY Graph x7 = subplot(4,2,7); p1 = plot(xd,yd,'b'); hold on p2 = plot(x,y,'r'); title(x7,'Position tracking'); legend([p1 p2],'Desired coordinates','Actual coordinates'); xlabel('x-axis (m)'); ylabel('y-axis (m)'); 85 grid on; % display figure('Name','Simulation results 2','NumberTitle','off'); %x x1 = subplot(4,2,1); plot(t,xd,'b',t,x,'r'); title(x1,'x-axis tracking'); legend(x1,'Desired x', 'Actual x'); xlabel('Time(s)'); ylabel('Position Tracking of x(m)'); grid on; x2 = subplot(4,2,2); plot(t,xd-x,'m'); title(x2,'Error x'); % legend(x2,'Error x'); xlabel('Time(s)'); ylabel('Error x(m)'); grid on; ylim(x2,[-0.05 0.05]); set(x2,'YTick',[-0.05 -0.025 0.025 0.05]); %y x3 = subplot(4,2,3); plot(t,yd,'b',t,y,'r'); title(x3,'y-axis tracking'); legend(x3,'Desired y', 'Actual y'); xlabel('Time(s)'); ylabel('Position Tracking of y(m)'); grid on; x4 = subplot(4,2,4); plot(t,yd-y,'m'); title(x4,'Error y'); % legend(x4,'Error y'); xlabel('Time(s)'); ylabel('Error y(m)'); grid on; ylim(x4,[-0.05 0.05]); set(x4,'YTick',[-0.05 -0.025 0.025 0.05]); % figure(2); %t x5 = subplot(4,2,5); plot(t,qd(:,1),'b',t,q(:,1),'r'); title(x5, 'Heading angle tracking'); legend(x5,'Desired heading angle', 'Actual heading angle'); xlabel('Time(s)'); ylabel('Yaw angle(rad)'); grid on; x6 = subplot(4,2,6);title('x6'); plot(t,qd(:,1)-q(:,1),'m'); 86 title(x6, 'Error Heading angle'); %(x5,'Desired heading angle', 'Actual heading angle'); xlabel('Time(s)'); ylabel('Error Heading angle(rad)'); grid on; %a x7 = subplot(4,2,7); plot(t,qd(:,3),'b',t,q(:,3),'r'); title(x7, 'Tilt angle tracking'); legend(x7,'Desired tilt angle', 'Actual tilt angle'); xlabel('Time(s)'); ylabel('Tilt angle(rad)'); grid on; ylim(x7,[-0.5 0.5]); set(x7,'YTick',[-0.5 -0.25 0.25 0.5]); x8 = subplot(4,2,8);title('x8'); plot(t,qd(:,3)-q(:,3),'m'); title(x8, 'Error Tilt angle'); % legend(x8,'Desired tilt angle'); xlabel('Time(s)'); ylabel('Error Tilt angle(rad)'); grid on; ylim(x8,[-0.5 0.5]); set(x8,'YTick',[-0.5 -0.25 0.25 0.5]); Code phần NN phần cứng: float d1, d2, d3, d4, d5; float w11, w12, w13, w14, w15, w21, w22, w23, w24, w25; float deta1, deta2, deta3, deta4, deta5; float m1 = 0.85, m2 = 0.85, ftheta_hat, fs_hat, Kw = 7.25, Kw1 = 1.75, to_theta, to_s; float tamC[5] = { -0, -0, 0, 0, 0}; d1 = (-(sqrt( ((errorTilt - tamC[0]) * (errorTilt tamC[0])) + ((errrorDistance - tamC[0]) * (errrorDistance - tamC[0])))) * (sqrt( ((errorTilt tamC[0]) * (errorTilt - tamC[0])) + ((errrorDistance tamC[0]) * (errrorDistance - tamC[0])))) ) / ( m1 * m1); d2 = (-(sqrt( ((errorTilt - tamC[1]) * (errorTilt tamC[1])) + ((errrorDistance - tamC[1]) * (errrorDistance - tamC[1])))) * (sqrt( ((errorTilt tamC[1]) * (errorTilt - tamC[1])) + ((errrorDistance tamC[1]) * (errrorDistance - tamC[1])))) ) / ( m2 * m2); 87 d3 = (-(sqrt( ((errorTilt - tamC[2]) * (errorTilt tamC[2])) + ((errrorDistance - tamC[2]) * (errrorDistance - tamC[2])))) * (sqrt( ((errorTilt tamC[2]) * (errorTilt - tamC[2])) + ((errrorDistance tamC[2]) * (errrorDistance - tamC[2])))) ) / ( m2 * m2); d4 = (-(sqrt( ((errorTilt - tamC[3]) * (errorTilt tamC[3])) + ((errrorDistance - tamC[3]) * (errrorDistance - tamC[3])))) * (sqrt( ((errorTilt tamC[3]) * (errorTilt - tamC[3])) + ((errrorDistance tamC[3]) * (errrorDistance - tamC[3])))) ) / ( m2 * m2); d5 = (-(sqrt( ((errorTilt - tamC[4]) * (errorTilt tamC[4])) + ((errrorDistance - tamC[4]) * (errrorDistance - tamC[4])))) * (sqrt( ((errorTilt tamC[4]) * (errorTilt - tamC[4])) + ((errrorDistance tamC[4]) * (errrorDistance - tamC[4])))) ) / ( m1 * m1); deta1 deta2 deta3 deta4 deta5 = = = = = w11 w12 w13 w14 w15 w21 w22 w23 w24 w25 Kw1 * deta1 * PwmTilt; Kw1 * deta2 * PwmTilt; Kw1 * deta3 * PwmTilt; Kw1 * deta4 * PwmTilt; Kw1 * deta5 * PwmTilt; Kw * deta1 * PwmTiltDistance; Kw * deta2 * PwmTiltDistance; Kw * deta3 * PwmTiltDistance; Kw * deta4 * PwmTiltDistance; Kw * deta5 * PwmTiltDistance; = = = = = = = = = = exp(d1); exp(d2); exp(d3); exp(d4); exp(d5); ftheta_hat = w11 * deta1 + w12 * deta2 + w13 * deta3 + w14 * deta4 + w15 * deta5; fs_hat = w21 * deta1 + w22 * deta2 + w23 * deta3 + w24 * deta4 + w25 * deta5; ftheta_hat = constrain(ftheta_hat, -10, 10); fs_hat = constrain(fs_hat, -45, 45); 88 Các thành phần phần cứng: Mạch điều khiển trung tâm: Arduino Mega 2560 Mạch điều khiển động cơ: Mạch L298 đơi Động cơ: Động có encoder, tỉ lệ hộp số 1:34, encoder: 11 xung/vòng Bánh xe: 65mm Cảm biến: MPU6050 Mạch ổn áp 5V: LM2596 89 LÝ LỊCH TRÍCH NGANG CỦA HỌC VIÊN I LÝ LỊCH SƠ LƯỢC: Họ tên: Võ Bá Việt Nghĩa Giới tính: Nam Ngày, tháng, năm sinh: 11-09-1994 Nơi sinh: Bà Rịa – Vũng Tàu Email: vobavietnghia@gmail.com Điện thoại: 0938898040 II Q TRÌNH ĐÀO TẠO: Năm 2012-2016 Trường Đại học Cơng nghiệp thành phố Hồ Chí Minh Bậc đào tạo: Đại học – Tín Loại hình đào tạo: Chính quy Khoa: Khoa Công nghệ Điện tử Lớp: Đại học điện tử tự động 8A Năm: 2016-2018 Trường Đại học Công nghiệp thành phố Hồ Chí Minh Bậc đào tạo: Thạc sĩ – Tín Loại hình đào tạo: Chính quy (Đợt 2) Ngành: Kỹ thuật điện tử - 60520203 Chuyên ngành: Kỹ thuật điện tử - 60520203 Khoa: Khoa Công nghệ Điện tử Lớp: Cao học Kỹ thuật điện tử 6B III Q TRÌNH CƠNG TÁC CHUN MƠN: Thời gian Nơi công tác Công việc đảm nhiệm Tp HCM, ngày tháng Năm 20 Người khai Võ Bá Việt nghĩa 90 ... TÀI: Điều khiển trượt thích nghi cho hệ robot hai bánh tự cân dựa mạng neural NHIỆM VỤ VÀ NỘI DUNG: Nghi? ?n cứu, thiết kế thực nghi? ??m giải thuật trượt thích nghi dựa mạng neural ứng dụng cho mơ... xuất điều khiển thích nghi sử dụng mạng hàm sở xuyên tâm để điều khiển xe tự cân hai bánh, hiệu điều khiển thực thông qua số mơ thực nghi? ??m với mơ hình, điều khiển thích nghi đạt tự cân bằng, điều. .. phương pháp nghi? ?n cứu Dựa vào lý thuyết ổn định Lyapunov, lý thuyết điều khiển trượt nghi? ?n cứu trước điều khiển trượt để phát triển điều khiển trượt thích nghi cho hệ robot hai bánh tự cân Phương