(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do(Đồ án tốt nghiệp) Thiết kế và điều khiển thực tế ảo Robot 6 bậc tự do
TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT TPHCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ VÀ ĐIỀU KHIỂN THỰC TẾ ẢO ROBOT BẬC TỰ DO SVTH: TRẦN LƯU PHÚC HOÀ MSSV: 16151027 NGUYỄN HẢI PHONG MSSV: 16151061 NGÀNH: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HỐ GVHD: TS ĐẶNG XN BA Tp Hồ Chí Minh, tháng năm 2020 TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT TPHCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ VÀ ĐIỀU KHIỂN THỰC TẾ ẢO ROBOT BẬC TỰ DO SV TH: TRẦN LƯU PHÚC HOÀ MSSV: 16151027 NGUYỄN HẢI PHONG MSSV: 16151061 NGÀNH: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HOÁ GVHD: TS ĐẶNG XUÂN BA Tp Hồ Chí Minh, tháng năm 2020 LỜI CẢM ƠN Chúng em xin chân thành cảm ơn quý thầy, cô Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM tận tình dạy dỗ chúng em suốt năm qua Trong phải kể đến q thầy mơn Tự động Điều khiển nói riêng Khoa đào tạo Chất lượng cao nói chung truyền đạt kiến thức, kinh nghiệm với đam mê khơi dậy lên lửa đam mê khám phá chúng em từ kiến thức, đam mê chúng em vận dụng vào đồ án tốt nghiệp, bàn đạp để bước vào cánh cửa lớn Đặc biệt, nhóm xin chân thành cảm ơn thầy Đặng Xuân Ba tận tình giúp đỡ chúng em trình lựa chọn đề tài hỗ trợ chúng em q trình thực Nhờ có đóng góp, ý kiến thầy mà chúng em vượt qua khó khăn, bổ sung kiến thức cịn thiếu Ngồi việc hỗ trợ mặt kĩ thuật, thầy cịn đơn đốc, khuyến khích chúng em để chúng em vững bước hồn thành tốt khố luận Chúng cảm ơn bạn lớp 16151CL1 anh em lab “Dynamics and Robotics Control” ln sát cánh có góp ý để phát triển đề tài Cuối cùng, chúng xin dành hội để chân thành cảm ơn ba mẹ ln giúp đỡ, động viên suốt q trình học tập hồn thành khố luận TP.HCM, ngày 25 tháng năm 2020 Sinh viên thực đồ án TÓM TẮT ĐỀ TÀI Trong luận án này, mơ hình cánh tay robot sáu bậc tự điều khiển hệ thống cảm biến đo lường quán tính (IMU) qua chuẩn truyền thông không dây Bluetooth đề xuất Đồ án bao gồm ba phần: Xây dựng mơ hình cánh tay robot sáu bậc tự hoạt động ổn định; xây dựng điều khiển truyền thông qua Bluetooth; xây dựng hệ thống cảm biến đo lường quán tính đặt lên cánh tay người để điều khiển robot Mơ hình cánh tay robot sáu bậc tự chế tạo theo dạng cánh tay robot công nghiệp kiểu cánh tay người, điều khiển bo mạch Arduino Mega Arduino Uno R3 Để đạt độ ổn định xác hoạt động, giải thuật động học robot thiết kế Giải thuật động học bao gồm hai phần: phần động học thuận tính tốn dựa việc xác định góc toạ độ khớp, thành lập bảng Denavit-Hartenberg tính tốn ma trận biến đổi đồng nhất; phần động học nghịch tính dựa biến đổi ma trận biến đổi đồng động học thuận vận dụng Góc Euler để xác định ma trận xoay điểm đầu cuối Toàn thuật tốn lập trình vào bo mạch Arduino Mega điều khiển sáu động vận hành robot, sau mơ hình quy hoạch quỹ đạo sử dụng để điều khiển động cách ổn định Hệ thống cảm biến đo lường quán tính (IMU) thiết kế để ước tính góc khớp vai khuỷu tay cách sử dụng bốn bo mạch cảm biến đo lường quán tính gắn lên ngực, cẳng tay, tay ngón tay Sau sử dụng phương pháp Euler phát triển Leonhard Euler để xác định hướng khớp quay không gian ba chiều, nhằm xác định vị trí bàn tay so với trái đất góc xoay bàn tay Dữ liệu vị trí góc xoay bàn tay truyền bo mạch điều khiển robot thông qua giao thức truyền thông Bluetooth Thông thường để điều khiển mơ hình cánh tay robot vật thể xác định tay người, cần sử dụng phương pháp xử lí ảnh tốn nhiều tài nguyên cần điều khiển đủ mạnh để xử lí ví dụ máy tính nhúng Raspberry Pi Nhưng luận án đề xuất phương pháp điều khiển với độ xác tương đối tốn tài nguyên MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP iii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iv PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN v LỜI CẢM ƠN vi TÓM TẮT ĐỀ TÀI vii MỤC LỤC viii DANH MỤC CÁC TỪ VIẾT TẮT xiii DANH MỤC CÁC BẢNG BIỂU xiv DANH MỤC CÁC HÌNH ẢNH, BIỂU ĐỒ xv CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt Vấn Đề 1.2 Mục Tiêu Đề Tài 1.3 Nội Dung Nghiên Cứu 1.4 Giới Hạn 1.5 Bố Cục CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tổng Quan Về Thực Tế Ảo 2.1.1 Khái Niệm 2.1.2 Ứng Dụng Của Thực Tế Ảo 2.2 Tổng Quan Về Robot 2.2.1 Lịch Sử Phát Triển Robot 2.2.2 Các Khái Niệm Về Robot 2.2.2.1 Khái Niệm 2.2.2.2 Bậc tự Robot 2.2.2.3 Hệ tọa độ 2.2.2.4 Vùng Làm Việc Của Robot 2.2.3 Cấu tạo Robot 2.2.3.1 Cấu tạo chung 2.2.3.2 Cơ cấu tay máy (Manipulator) 10 2.2.4 Phân Loại Robot 12 2.2.4.1 Phân Loại Theo Vùng Hoạt Động, Kết Cấu Tay Máy 12 2.2.4.2 Phân Loại Theo Mơ Hình Điều Khiển 12 2.2.4.2 Phân Loại Theo Phạm Vi Ứng Dụng 13 2.2.5 Động Học Tay Máy 13 2.2.5.1 Hệ Tọa Độ Thuần Nhất 13 2.2.5.2 Các Phép Biến Đổi 14 2.2.5.2.1 Phép Biến Đổi Tịnh Tiến (Translation) 14 2.2.5.2.2 Phép Quay (Rotation) 14 2.2.5.3 Ma Trận Chuyển Đổi Đồng Nhất 15 2.2.5.4 Quy Tắc Denavid-Hartenberg 15 2.2.5.5 Bài toán động học thuận 16 2.2.5.6 Bài Toán Động Học Nghịch 16 2.2.6 Thiết Kế Quỹ Đạo Chuyển Động Cho Robot 17 2.2.6.1 Giới Thiệu Và Cơ Sở Thiết Kế Quỹ Đạo 17 2.2.6.2 Thiết Kế Quỹ Đạo Chuyển Động Trong Không Gian Khớp 17 2.2.6.3 Thiết Kế Quỹ Đạo Trong Không Gian Làm Việc 18 2.3 Tổng Quan Về Cảm Biến Đo Lường Quán Tính (IMU) 20 2.3.1 Cảm Biến Đo Lường Quán Tính 20 2.3.2 Phương Pháp Xác Định Góc Nghiêng Trong Khơng Gian 21 2.3.2.1 Phương pháp sử dụng góc Euler 21 2.3.2.2 Phương pháp sử dụng Quaternion 23 2.3.3 Cảm Biến MPU 9250 24 2.3.3.1 Gia Tốc Kế 24 2.3.3.2.Xử Lý Tín Hiệu Gia Tốc Từ Gia Tốc Kế 24 2.3.3.3 Con Quay Hồi Chuyển 25 2.3.3.3 Từ kế 28 2.4 Bộ Lọc 29 2.4.1 Bộ Lọc Thông Thấp Số 30 2.4.2 Bộ Lọc Bù Complementary 30 2.4.3 Bộ Lọc Kalman 30 2.5 Giao Thức Truyền Thông Bluetooth 31 2.5.1 Sơ Lược Về Bluetooth 31 2.5.2 Đặc Điểm Của Công Nghệ Bluetooth 32 2.5.3 Các Thế Hệ Bluetooth 32 2.5.4 Giao Tiếp Chủ - Tớ 32 2.5.5 Khung liệu Bluetooth 33 2.6 Các Chuẩn Kết Nối 33 2.6.1 Chuẩn Giao Tiếp UART 33 2.6.1.1 Sơ Lược Về UART 33 2.6.1.2 Các khái niệm quan trọng chuẩn truyền thông UART 34 2.6.1.3 Khung Truyền Dữ Liệu 34 2.6.2 Chuẩn Giao Tiếp I2C 36 2.6.2.1 Sơ Lược I2C 36 2.6.2.2 Đặc Điểm Của I2C 36 2.6.2.3 Thiết Bị Chủ (Master) Và Tớ (Slave) 36 2.6.2.4 Khung Truyền Dữ Liệu 37 2.7 Chuỗi Json Trong Truyền Nhận Dữ Liệu 38 2.7.1 Khái niệm chuỗi Json 38 2.7.2 Cấu trúc chuỗi Json 39 CHƯƠNG 3: THIẾT KẾ VÀ TÍNH TỐN 40 3.1 Thiết Kế Khung Robot 40 3.1.1 Yêu Cầu Thiết Kế 40 3.1.2 Phương Án Thiết Kế 40 3.1.2 Thiết Kế 40 3.2 Tính Tốn Động Học 41 3.2.1 Xác Định Gốc Toạ Độ Của Từng Khớp 41 3.2.2 Động Học Thuận 42 3.2.3 Động Học Nghịch 42 3.3 Tính Tốn Hệ Thống Cảm Biến IMU 44 3.3.1 Mơ Hình Hệ Thống IMU Đặt Trên Cánh Tay 44 CHƯƠNG 4: THI CÔNG HỆ THỐNG 46 4.1 Sơ Đồ Khối Của Hệ Thống 46 4.2 Giới Thiệu Hệ Thống 46 4.2.1 Robot Bậc Tự Do 46 4.2.1.1 Giới thiệu 46 4.2.1.2 Động bước 47 4.2.1.3 Động Servo DC 49 4.2.2 Bộ Điều Khiển Robot 51 4.2.2.1 Nguyên lí hoạt động 51 4.2.2.2 Khối nguồn 51 4.2.3.3 Bộ truyền tín hiệu Bluetooth HC-05 52 4.2.2.4 Bộ vi xử lí 53 4.2.2.5 Mạch điều khiển động bước TB6600 55 4.2.3 Hệ Thống IMU 56 4.2.3.1 Nguyên lí hoạt động 56 4.2.3.2 Cảm biến IMU 56 4.2.3.3 Bộ ghép kênh I2C 57 4.2.3.4 Arduino nano 58 4.2 Giải Thuật Điều Khiển 59 4.2.1 Lưu Đồ Điều Khiển 59 CHƯƠNG 5: KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ 62 5.1 Thiết Kế Robot Bậc Tự Do 62 5.2 Tính Tốn Động Học Và Giải Thuật Điều Khiển Cho Robot 63 5.2.1 Giao Diện Điều Khiển 63 5.2.1 Kiểm Chứng Động Học 63 5.2.2 Thí Nghiệm Về Quy Hoạch Quỹ Đạo 68 5.3 Thiết Kế Bộ IMU Gắn Trên Cánh Tay Người Điều Khiển RoBot 69 5.4 Ứng Dụng Giải Thuật Điều Khiển Vào Mơ Hình Thực Tế 71 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72 6.1 Kết Luận 72 6.2 Hướng Phát Triển 72 Tài Liệu Tham Khảo 73 Phụ Lục 74 DANH MỤC CÁC TỪ VIẾT TẮT DoF – Degree of Freedom IMU - Inertial Measurement Unit – đơn vị đo quán tính MCU - Microcontroller Unit – vi điều khiển MPU - Microprocessing Unit – vi xử lý DH - Denavit-Hartenberg } void quyhoach() { if (mode == 0) { int_t++; vtmm1_old = vtmm1_new; vtmm2_old = vtmm2_new; vtmm3_old = vtmm3_new; /*********tinh toan qui hoach qui dao va dong toc do*****************/ if (int_t (time / 10)) { Timer5.stop(); } } else if (mode == 1) { } } /******************dieu khien dong co buoc*****************************/ void stepmotor1() { if (vtmm1_new - vtmm1_old > 0) { digitalWrite(dirPin1, LOW); if (x1 < vtmm1_new - vtmm1_old) { digitalWrite(stepPin1, !digitalRead(stepPin1)); x1++; vt1++; } Trang | 78 else Timer1.stop(); } else { digitalWrite(dirPin1, HIGH); if (x1 < abs(vtmm1_new - vtmm1_old)) { digitalWrite(stepPin1, !digitalRead(stepPin1)); x1++; vt1 ; } else Timer1.stop(); } } void stepmotor2() { if (vtmm2_new - vtmm2_old > 0) { digitalWrite(dirPin2, LOW); if (x2 < vtmm2_new - vtmm2_old) { digitalWrite(stepPin2, !digitalRead(stepPin2)); x2++; vt2++; } else Timer3.stop(); } Trang | 79 else { digitalWrite(dirPin2, HIGH); if (x2 < abs(vtmm2_new - vtmm2_old)) { digitalWrite(stepPin2, !digitalRead(stepPin2)); x2++; vt2 ; } else Timer3.stop(); } } void stepmotor3() { if (vtmm3_new - vtmm3_old > 0) { digitalWrite(dirPin3, HIGH); if (x3 < vtmm3_new - vtmm3_old) { digitalWrite(stepPin3, !digitalRead(stepPin3)); x3++; vt3++; } else Timer4.stop(); } else { Trang | 80 digitalWrite(dirPin3, LOW); if (x3 < abs(vtmm3_new - vtmm3_old)) { digitalWrite(stepPin3, !digitalRead(stepPin3)); x3++; vt3 ; } else Timer4.stop(); } } /*********************tinh toan du lieu thi***************************/ void chart_calculator() { a1 = (vt2 * 180) / ((3969 / 289) * * 200 * 2) * 2; a2 = (vt3 * 180) / ((3969 / 289) * * 200 * 2) * 2; a3 = (vt1 * 180) / ((3969 / 289) * * 200 * 2) * 2; value = ""; value += '*'; value += a1; value += '*'; value += a2; value += '*'; value += a3; value += '*'; value += a4; value += '*'; value += a5; value += '*'; value += a6; Trang | 81 value += '*'; } /***********************void main**************************************/ void loop() { /********************guide*****************************************/ if (Serial.available() && Serial.find("{")) { buf_s = String("{") + Serial.readString(); StaticJsonBuffer jsonBuffer; JsonObject&object = jsonBuffer.parseObject(buf_s); Serial1.println(buf_s); y1 = object.get("dt1"); y2 = object.get("dt2"); y3 = object.get("dt3"); mode = object.get("dt8"); time = object.get("dt7"); chay(y1, y2, y3); } /*****************Bluetooth**************************************/ if (Serial2.available() && Serial2.find("{")) { int y1_o = y1; int y2_o = y2; int y3_o = y3; buf_s = String("{") + Serial2.readString(); StaticJsonBuffer jsonBuffer; JsonObject&object = jsonBuffer.parseObject(buf_s); Serial1.println(buf_s); Trang | 82 Serial.println(buf_s); y1 = object.get("a"); y2 = object.get("b"); y3 = object.get("c"); y4 = object.get("d"); y5 = object.get("e"); y6 = object.get("f"); time = 400; chay(y3, y1, y2); mode = 1; } Send(); } void Send() { chart_calculator(); Serial.println(value); } void chay(float temp1, float temp2, float temp3){ z1 = ((temp1 * (3969 / 289) * * 200 * 2) / 360) * 2; z2 = ((temp2 * (3969 / 289) * * 200 * 2) / 360) * 2; z3 = ((temp3 * (3969 / 289) * * 200 * 2) / 360) * 2; vtmm1 = z1 - vt1; vtmm2 = z2 - vt2; vtmm3 = z3 - vt3; x1 = 0; x2 = 0; x3 = 0; the1 = vtmm1; the2 = vtmm2; the3 = vtmm3; Trang | 83 if (mode == 0) { vtmm1_old = 0; vtmm2_old = 0; vtmm3_old = 0; vtmm1_new = 0; vtmm2_new = 0; vtmm3_new = 0; a_1 = vtmm1_old; b_1 = 0; c_1 = * (the1 - vtmm1_old) / pow(time, 2); d_1 = -2 * (the1 - vtmm1_old) / pow(time, 3); a_2 = vtmm2_old; b_2 = 0; c_2 = * (the2 - vtmm2_old) / pow(time, 2); d_2 = -2 * (the2 - vtmm2_old) / pow(time, 3); a_3 = vtmm3_old; b_3 = 0; c_3 = * (the3 - vtmm3_old) / pow(time, 2); d_3 = -2 * (the3 - vtmm3_old) / pow(time, 3); Timer5.start(); } else { vtmm1_old = vt1; vtmm2_old = vt2; vtmm3_old = vt3; vtmm1_new = vtmm1; vtmm2_new = vtmm2; vtmm3_new = vtmm3; tinhtocdo(); } int_t = 0; } void tinhtocdo() { max_t = max(abs(vtmm1 - vt1), max(abs(vtmm2 - vt2), abs(vtmm3 - vt3))); int_t1 = (max_t * time) / (abs(vtmm1 - vt1) + 1); int_t2 = (max_t * time) / (abs(vtmm2 - vt2) + 1); Trang | 84 int_t3 = (max_t * time) / (abs(vtmm3 - vt3) + 1); } if ((int_t1 < 400) && (int_t2 < 400) && (int_t3 < 400)){ int_t1 = int_t2 = int_t3 = 400; Timer1.initialize(int_t1); Timer1.attachInterrupt(stepmotor1); Timer3.initialize(int_t2); Timer3.attachInterrupt(stepmotor2); Timer4.initialize(int_t3); Timer4.attachInterrupt(stepmotor3); Timer1.start(); Timer3.start(); Timer4.start(); } Code cho Arduino Uno R3 #include #include SoftwareSerial condiSerial(2, 3); #define servol1 #define servol2 10 #define servol3 11 int temp1,temp2,temp3,num4,num5,num6; int vtmm4, vtmm5, vtmm6; String buf_s; /*************3 motor Servo**********************************/ void servo1_on(){ if(vtmm4 >0){ if(temp1 = num4){ float goc4 = (temp1 * 9.44)+600; digitalWrite(servol1, HIGH); delayMicroseconds(goc4); digitalWrite(servol1, LOW); delayMicroseconds(20000-goc4); temp1 ; } else temp1 = num4; } if(vtmm4 == 0){ float goc4 = (temp1 * 9.44)+600; digitalWrite(servol1, HIGH); delayMicroseconds(goc4); digitalWrite(servol1, LOW); delayMicroseconds(20000-goc4); } } void servo2_on(){ if(vtmm5>0){ if(temp2 ){ Trang | 87 if(temp3 = num6){ float goc6 = (temp3 * 9.44)+600; digitalWrite(servol3, HIGH); delayMicroseconds(goc6); digitalWrite(servol3, LOW); delayMicroseconds(20000-goc6); temp3 ; } else temp3 = num6; } if(vtmm6 == 0){ float goc6 = (temp3 * 9.44)+600; digitalWrite(servol3, HIGH); delayMicroseconds(goc6); digitalWrite(servol3, LOW); delayMicroseconds(20000-goc6); } } /***************************************************************/ Trang | 88 void setup() { delay(1000); condiSerial.begin(115200); Serial.begin(9600); pinMode(servol1,OUTPUT); pinMode(servol2,OUTPUT); pinMode(servol3,OUTPUT); temp1 = temp2 = temp3 = 0; num4 = num5 = num6 = 0; vtmm4 = vtmm5 = vtmm6 = 90; } void loop() { /************truyen thong Bluetooth***********************/ if(Serial.available() && Serial.find("{")){ buf_s=String("{")+ condiSerial.readString(); StaticJsonBuffer jsonBuffer; JsonObject&object = jsonBuffer.parseObject(buf_s); num4 = object.get("d"); num5 = object.get("e"); num6 = object.get("f"); Serial.print("the4 the5 the6: "); Serial.print(num4); Serial.print(" "); Serial.print(num5); Serial.print(" "); Serial.println(num6); vtmm4 = num4 - temp1; vtmm5 = num5 - temp2; vtmm6 = num6 - temp3; } Trang | 89 servo1_on(); servo2_on(); servo3_on(); chart_calculator(); } /******************thu thap du lieu*********************/ void chart_calculator() { String data_send =""; data_send += temp1; data_send += "|"; data_send += temp2; data_send += "|"; data_send += temp3; Serial.println(data_send); } Trang | 90 S K L 0 ... CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ VÀ ĐIỀU KHIỂN THỰC TẾ ẢO ROBOT BẬC TỰ DO SV TH: TRẦN LƯU PHÚC HOÀ MSSV: 161 51027 NGUYỄN HẢI PHONG MSSV: 161 51 061 NGÀNH: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HỐ GVHD:... nghiệm 2.2 .6 Thiết Kế Quỹ Đạo Chuyển Động Cho Robot 2.2 .6. 1 Giới Thiệu Và Cơ Sở Thiết Kế Quỹ Đạo Trong toán thiết kế giải thuật điều khiển robot, thiết kế quỹ đạo phần quan trọng đảm bảo cho robot. .. Trên Cánh Tay Người Điều Khiển RoBot 69 5.4 Ứng Dụng Giải Thuật Điều Khiển Vào Mơ Hình Thực Tế 71 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72 6. 1 Kết Luận 72 6. 2 Hướng