Điều khiển phi tuyến hệ agv Điều khiển phi tuyến hệ agv Điều khiển phi tuyến hệ agv 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
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM PHẠM QUỐC THIỆN ĐIỀU KHIỂN PHI TUYẾN HỆ AGV LUẬN VĂN THẠC SỸ Chuyên ngành : Kỹ thuật Cơ – điện tử Mã số ngành : 60520114 TP HỒ CHÍ MINH, tháng 02 năm 2014 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM PHẠM QUỐC THIỆN ĐIỀU KHIỂN PHI TUYẾN HỆ AGV LUẬN VĂN THẠC SỸ Chuyên ngành : Kỹ thuật Cơ – điện tử Mã số ngành : 60520114 HƯỚNG DẪN KHOA HỌC: TS NGUYỄN THANH PHƯƠNG TP HỒ CHÍ MINH, tháng 02 năm 2014 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM Cán hướng dẫn khoa học : TS NGUYỄN THANH PHƯƠNG Luận văn Thạc sĩ bảo vệ Trường Đại học Kỹ thuật Công nghệ TP HCM ngày 25 tháng 01 năm 2014 Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ Luận văn Thạc sĩ) TT Họ tên PGS.TS Nguyễn Tấn Tiến TS Nguyễn Quốc Hưng TS Nguyễn Hùng TS Võ Hồng Duy TS Ngơ Cao Cường Chức danh hội đồng Chủ tịch Phản biện Phản biện Ủy viên Ủy viên, thư ký Xác nhận Chủ tịch Hội đồng đánh giá Luận sau Luận văn sửa chữa (nếu có) Chủ tịch Hội đồng đánh giá LV TRƯỜNG ĐH CƠNG NGHỆ TP HCM PHỊNG QLKH – ĐTSĐH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc TP HCM , ngày … tháng … năm …… NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: PHẠM QUỐC THIỆN Giới tính: Nam Ngày, tháng, năm sinh: 22/2/1988 Nơi sinh: ĐỒNG NAI Chuyên ngành: Kỹ thuật Cơ điện tử MSHV: 1241840017 I- TÊN ĐỀ TÀI: ĐIỀU KHIỂN PHI TUYẾN HỆ AGV II- NHIỆM VỤ VÀ NỘI DUNG: Nghiên cứu hệ thống AGV, mơ hình hóa hệ thống AGV, thiết lập điều khiển phi tuyến sở ổn định Lyapunov Chương 1: Mở đầu Chương 2: Tổng quan AGV Chương 3: Mơ hình tốn học AGV Chương 4: Thiết kế điều khiển hệ thống đo lường Chương 5: Thiết kế, thi công AGV mô hệ thống Matlab III- NGÀY GIAO NHIỆM VỤ: IV- NGÀY HOÀN THÀNH NHIỆM VỤ: V- CÁN BỘ HƯỚNG DẪN: TS NGUYỄN THANH PHƯƠNG CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) KHOA QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) i LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng tơi Các số liệu, kết nêu Luận văn trung thực chưa công bố cơng trình khác Tơi xin cam đoan giúp đỡ cho việc thực Luận văn cảm ơn thông tin trích dẫn Luận văn rõ nguồn gốc Học viên thực Luận văn (Ký ghi rõ họ tên) Phạm Quốc Thiện ii LỜI CÁM ƠN Sau thời gian học tập nghiên cứu trường, tơi hồn thành đề tài tốt nghiệp cao học Để có thành này, tơi nhận nhiều hỗ trợ giúp đỡ tận tình từ thầy cơ, gia đình bạn bè Tôi xin chân thành cảm ơn quý Thầy cô khoa Quản Lý Khoa Học - Đào Tạo Sau Đại Học, quý Thầy cô khoa Cơ - Điện - Điện Tử Trường Đại Học Kỹ Thuật Công Nghệ TP.HCM tận tình giúp đỡ, hỗ trợ tơi suốt q trình thực luận văn Với lịng tri ân sâu sắc, tơi muốn nói lời cám ơn đến Thầy TS Nguyễn Thanh Phương, người nhiệt tình hướng dẫn bảo cho suốt thời gian thực nghiên cứu Tp Hồ Chí Minh, tháng 02 năm 2014 Người thực luận văn Phạm Quốc Thiện iii TÓM TẮT LUẬN VĂN Trong báo này, điều khiển phi tuyến dựa phương pháp Lyapunov đề xuất áp dụng cho xe tự hành Đầu tiên quỹ đạo − (G ) với đa thức bậc thiết kế Thứ hai, dựa vào vị trí ước lượng xe tự hành, điều khiển làm cho xe tự hành bám theo quỹ đạo G3 di chuyển với vận vận tốc không đổi Sự ổn định hệ thống chứng minh phương pháp Lyapunov Mô kết thực nghiệm trình bày để chứng minh tính hiệu điều khiển đề xuất iv ABSTRACT In this paper, a nonlinear controller base on Lyapunov method is proposed and applied for wheel mobile robot (WMR) First, trajectory − (G3) with 7th order polinom is designed for WMR Then, based on the estimated position of the WMR, this controller makes WMR follow trajectory G3 which is moving with desired constant velocity The stability of system is proved by the Lyapunov stability theory The simulations and experimental results are shown to prove the effectiveness of the proposed controller v MỤC LỤC Tên đề mục Trang Lời cam đoan i Lời cảm ơn ii Tóm tắt luận văn .iii Abstract iv Mục lục v Danh mục từ viết tắt vii Danh mục bảng biểu viii Danh mục sơ đồ, hình ảnh ix Chương 1: Mở đầu 1.1 Đặt vấn đề 1.2 Tính cấp thiết đề tài 1.3 Mục tiêu đề tài 1.4 Nội dung nghiên cứu 1.5 Phương pháp luận 1.6 Phương pháp nghiên cứu 1.7 Nội dung luận văn Chương 2: Tổng quan AGV 2.1 Sơ lược trình phát triển AGV 2.2 Phân loại AGV .5 2.2.1 Tàu không người lái 2.2.2 Xe nâng pallet 2.2.3 Xe chở hàng 2.3 Tóm tắt cơng trình nghiên cứu 2.4 Nhận xét hướng tiếp cận 32 Chương 3: Mô hình tốn học AGV 33 3.1 Cấu trúc AGV 33 vi 3.2 Xây dựng phương trình động học 34 3.3 Xây dựng quỹ đạo đường cho AGV 36 Chương 4: Thiết kế điều khiển hệ thống đo lường 39 4.1 Cơ sở lý thuyết 39 4.1.1 Giới thiệu phương pháp Lyapunov 39 4.1.2 Điểm cân hệ phi tuyến 39 4.1.3 Ổn định điểm cân .41 4.1.3.1 Định nghĩa 41 4.1.3.2 Ổn định ổn định tiệm cận Lyapunov 41 4.1.4 Phương pháp tuyến tính hóa Lyapunov 42 4.1.5 Phương pháp trực tiếp Lyapunov 44 4.1.5.1 Định lý ổn định Lyapunov .44 4.1.5.2 Định lý không ổn định Lyapunov 45 4.2 Thiết kế điều khiển 47 4.3 Hệ thống đo lường 48 Chương 5: Thiết kế thi công AGV mô 51 5.1 Thiết kế mơ hình 51 5.2 Thiết kế mạch điện 53 5.3 5.4 5.2.1 Phương án thiết kế 53 5.2.2 Sơ đồ nguyên lý 54 5.2.3 Thiết bị sử dụng 57 Kết mô thực nghiệm 60 5.3.1 Kết mô trường hợp 61 5.3.2 Kết mô trường hợp 63 Kết luận hướng phát triển 65 TÀI LIỆU THAM KHẢO PHỤ LỤC %record(s,'off'); fclose(s); delete(s); clear s; end; close(WMR); % - Executes during object creation, after setting all properties function Trajectory_CreateFcn(hObject, eventdata, handles) % hObject handle to Trajectory (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate Trajectory function editstr1_Callback(hObject, eventdata, handles) % hObject handle to editstr1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editstr1 as text % str2double(get(hObject,'String')) returns contents of editstr1 as a double % - Executes during object creation, after setting all properties function editstr1_CreateFcn(hObject, eventdata, handles) % hObject handle to editstr1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function editstr2_Callback(hObject, eventdata, handles) % hObject handle to editstr2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editstr2 as text % str2double(get(hObject,'String')) returns contents of editstr2 as a double % - Executes during object creation, after setting all properties function editstr2_CreateFcn(hObject, eventdata, handles) % hObject handle to editstr2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on selection change in Com function Com_Callback(hObject, eventdata, handles) % hObject handle to Com (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns Com contents as cell array % contents{get(hObject,'Value')} returns selected item from Com % - Executes during object creation, after setting all properties function Com_CreateFcn(hObject, eventdata, handles) % hObject handle to Com (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function editstr3_Callback(hObject, eventdata, handles) % hObject handle to editstr3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editstr3 as text % str2double(get(hObject,'String')) returns contents of editstr3 as a double % - Executes during object creation, after setting all properties function editstr3_CreateFcn(hObject, eventdata, handles) % hObject handle to editstr3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function editstr4_Callback(hObject, eventdata, handles) % hObject handle to editstr4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of editstr4 as text % str2double(get(hObject,'String')) returns contents of editstr4 as a double % - Executes during object creation, after setting all properties function editstr4_CreateFcn(hObject, eventdata, handles) % hObject handle to editstr4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on button press in send function send_Callback(hObject, eventdata, handles) % hObject handle to send (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = get(handles.editstr1,'String'); send_data = str2num(send_data); fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in pushbutton10 function pushbutton10_Callback(hObject, eventdata, handles) % hObject handle to pushbutton10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % - Executes on button press in forward function forward_Callback(hObject, eventdata, handles) % hObject handle to forward (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 105; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles) % - Executes on button press in right function right_Callback(hObject, eventdata, handles) % hObject handle to right (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 107; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in left function left_Callback(hObject, eventdata, handles) % hObject handle to left (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 106; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in reserve function reserve_Callback(hObject, eventdata, handles) % hObject handle to reserve (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 108; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in Up function Up_Callback(hObject, eventdata, handles) % hObject handle to Up (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 103; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in Down function Down_Callback(hObject, eventdata, handles) % hObject handle to Down (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 104; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in Run function Run_Callback(hObject, eventdata, handles) % hObject handle to Run (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 100; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in Line function Line_Callback(hObject, eventdata, handles) % hObject handle to Line (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 102; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); % - Executes on button press in Read function Read_Callback(hObject, eventdata, handles) % hObject handle to Read (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1) send_data = 101; fwrite(s,send_data); end handles.com = s; guidata(hObject,handles); Quỹ đạo đường định sẵn cho AGV Chương trình Matlab: clear all; close all; clc; xa = 0; ya = 0; xb = 1.4; yb = 1.4; theta_a = 0; theta_b = 0; pre_theta_r = 0; n = sqrt((xa - xb)^2 + (ya - yb)^2); syms s ; for i = 0:10 s = i*0.1; % xac dinh he so px a0 = xa; a1 = n*cos(theta_a); y1a = n*cos(theta_b); a2 = 0; a3 = 0; a4 = 35*(xb - xa) - 20*a1 - 10*a2 - 4*a3 - 15*y1a; a5 = -84*(xb - xa) + 45*a1 + 20*a2 + 6*a3 + 39*y1a; a6 = 70*(xb - xa) - 36*a1 - 15*a2 - 4*a3 - 34*y1a; a7 = -20*(xb - xa) + 10*a1 + 4*a2 + a3 + 10*y1a; px = a0 + a1*s + a2*s^2 + a3*s^3 + a4*s^4 + a5*s^5 + a6*s^6 + a7*s^7; % xac dinh he so py b0 = ya; b1 = n*sin(theta_a); y1b = n*sin(theta_b); b2 = 0; b3 = 0; b4 = 35*(yb - ya) - 20*b1 - 10*b2 - 4*b3 - 15*y1b; b5 = -84*(yb - ya) + 45*b1 + 20*b2 + 6*b3 + 39*y1b; b6 = 70*(yb - ya) - 36*b1 - 15*b2 - 4*b3 - 34*y1b; b7 = -20*(yb - ya) + 10*b1 + 4*b2 + b3 + 10*y1b; py = b0 + b1*s + b2*s^2 + b3*s^3 + b4*s^4 + b5*s^5 + b6*s^6 + b7*s^7; px_out(i+1) = px; py_out(i+1) = py; end save D:\data1: px_out py_out % Ve quy dao duong cong plot(px_out,py_out,'b', 'LineWidth',2); title('Trajectory planning'); xlabel('Px'); ylabel('Py'); axis([0 1.5 1.5]); grid on; Giao tiếp I2C RS232 cho vi điều khiển Firmware sử dụng CCS - Cấu hình firmware: Khai báo chip: chọn file có thu viện CCS, VD : #include Khai báo cấu hình phần cứng: sử dụng từ khóa #fuse bao gồm tính : LP, XT, HS, RC,PLL : Chọn kiểu dao dộng WDT, NOWDT : Kiểm soát Watch Dog Timer PROTECT, NOPROTECT : Kiểm soát chép firmware LVP,NOLVP: Kiểm sốt lập trình nguồn thấp Khai báo cấu hình chức nang sử dụng từ khóa #use bao gồm tính năng: delay(clock=24000000) : Khai báo tốc dộ thạch anh i2c(master, sda=PIN_B0, scl=PIN_B1, FAST): Khai báo cấu hình I2C rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7): Khai báo cấu hình cổng COM Khai báo dịch vụ ngắt, sử dụng từ khóa: INT_SSP : Ngắt nối tiếp ghi dịch vừa thực xong bit s INT_EXT : Ngắt INT_TIMER1: Ngắt Timer INT_EEPROM: Ngắt có kiện truy xuất EEPROM Chương trình main() Master: while (TRUE) { Nội dung chương trình } Ghi liệu tới Slave: i2c_start(); // Master tạo tín hiệu Start i2c_write(0xa0); // Gửi dịa bít huớng R/W = (Mode write) dến Slave i2c_write(data); // Gửi liệu byte thứ i2c_write(data1); // Gửi liệu byte thứ hai ………………… i2c_write(datan); // Gửi liệu byte thứ n (n