Thời buổi hiện nay thì robot luôn không ngừng được nghiên cứu và phát triền Bài toán lập bản đồ là một trong những vấn đề được nghiên cứu chủ yếu của ngành Robot học Robot tương lai sẽ thay thế con người làm rất nhiều việc và càng được ứng dụng rộng rãi trên thế giới
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO ROBOT VẼ BẢN ĐỒ SLAM Người hướng dẫn: Người duyệt: Sinh viên thực hiện: TS LÊ HOÀI NAM PGS.TS TRẦN XUÂN TÙY TRẦN CÔNG VIỆN HỒ DUY VŨ Số thẻ sinh viên : 101140169 101140170 Lớp: 14CDT1 Đà Nẵng, 2019 ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ………………………………………… Độc lập - Tự - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Thông tin chung: Họ tên sinh viên: TRẦN CÔNG VIỆN Lớp: 14CDT1 Số thẻ SV: 101140169 Tên đề tài: Thiết kế chế tạo robot vẽ đồ SLAM Người hướng dẫn: LÊ HOÀI NAM Học hàm/ học vị: Tiến Sỹ II Nhận xét, đánh giá đồ án tốt nghiệp: Về tính cấp thiết, tính mới, khả ứng dụng đề tài: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về kết giải nội dung nhiệm vụ yêu cầu đồ án: (điểm tối đa 4đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về hình thức, cấu trúc, bố cục đồ án tốt nghiệp: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Đề tài có giá trị khoa học/ có báo/ giải vấn đề đặt doanh nghiệp nhà trường: (điểm tối đa 1đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………………………………………………………… ……………………………………………………………………………………… III Tinh thần, thái độ làm việc sinh viên: (điểm tối đa 1đ) ……………………………………………………………………………………… IV Đánh giá: Điểm đánh giá: …… /10 (lấy đến số lẻ thập phân) Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 201 Người hướng dẫn ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ………………………………………… CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHẬN XÉT PHẢN BIỆN ĐỒ ÁN TỐT NGHIỆP I Thông tin chung: Họ tên sinh viên: TRẦN CÔNG VIỆN Lớp: 14CDT1 Số thẻ SV: 101140169 Tên đề tài: Thiết kế chế tạo robot vẽ đồ SLAM Người phản biện: TRẦN XUÂN TÙY Học hàm/ học vị: PGS TS II Nhận xét, đánh giá đồ án tốt nghiệp: Điểm Điểm TT Các tiêu chí đánh giá tối đa đánh giá Sinh viên có phương pháp nghiên cứu phù hợp, giải 80 đủ nhiệm vụ đồ án giao - Tính (nội dung ĐATN có phần so với ĐATN trước đây) 1a 15 - Đề tài có giá trị khoa học, cơng nghệ; ứng dụng thực tiễn - Kỹ giải vấn đề; hiểu, vận dụng kiến thức bản, sở, chuyên ngành vấn đề nghiên cứu 1b 50 - Chất lượng nội dung ĐATN (thuyết minh, vẽ, chương trình, mơ hình,…) - Có kỹ vận dụng thành thạo phần mềm ứng dụng vấn đề nghiên cứu; 1c - Có kỹ đọc, hiểu tài liệu tiếng nước ứng 15 dụng vấn đề nghiên cứu; - Có kỹ làm việc nhóm; Kỹ viết: 20 2a - Bố cục hợp lý, lập luận rõ ràng, chặt chẽ, lời văn súc tích 15 2b - Thuyết minh đồ án khơng có lỗi tả, in ấn, định dạng Tổng điểm đánh giá theo thang 100: Quy thang 10 (lấy đến số lẻ) - Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………… ……………………………………………………………………………………… - Câu hỏi đề nghị sinh viên trả lời buổi bảo vệ: ………………………………… ……………………………………………………………………………………… - Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 201… Người phản biện ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ………………………………………… Độc lập - Tự - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Thông tin chung: Họ tên sinh viên: HỒ DUY VŨ Lớp: 14CDT1 Số thẻ SV: 101140170 Tên đề tài: Thiết kế chế tạo robot vẽ đồ SLAM Người hướng dẫn: LÊ HOÀI NAM Học hàm/ học vị: Tiến Sỹ II Nhận xét, đánh giá đồ án tốt nghiệp: Về tính cấp thiết, tính mới, khả ứng dụng đề tài: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về kết giải nội dung nhiệm vụ yêu cầu đồ án: (điểm tối đa 4đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về hình thức, cấu trúc, bố cục đồ án tốt nghiệp: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Đề tài có giá trị khoa học/ có báo/ giải vấn đề đặt doanh nghiệp nhà trường: (điểm tối đa 1đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………………………………………………………… ……………………………………………………………………………………… III Tinh thần, thái độ làm việc sinh viên: (điểm tối đa 1đ) ……………………………………………………………………………………… IV Đánh giá: Điểm đánh giá: …… /10 (lấy đến số lẻ thập phân) Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 201 Người hướng dẫn ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ………………………………………… CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHẬN XÉT PHẢN BIỆN ĐỒ ÁN TỐT NGHIỆP III Thông tin chung: Họ tên sinh viên: HỒ DUY VŨ Lớp: 14CDT1 Số thẻ SV: 101140170 Tên đề tài: Thiết kế chế tạo robot vẽ đồ SLAM Người phản biện: TRẦN XUÂN TÙY Học hàm/ học vị: PGS TS IV.Nhận xét, đánh giá đồ án tốt nghiệp: Điểm Điểm TT Các tiêu chí đánh giá tối đa đánh giá Sinh viên có phương pháp nghiên cứu phù hợp, giải 80 đủ nhiệm vụ đồ án giao - Tính (nội dung ĐATN có phần so với ĐATN trước đây) 1a 15 - Đề tài có giá trị khoa học, cơng nghệ; ứng dụng thực tiễn - Kỹ giải vấn đề; hiểu, vận dụng kiến thức bản, sở, chuyên ngành vấn đề nghiên cứu 1b 50 - Chất lượng nội dung ĐATN (thuyết minh, vẽ, chương trình, mơ hình,…) - Có kỹ vận dụng thành thạo phần mềm ứng dụng vấn đề nghiên cứu; 1c - Có kỹ đọc, hiểu tài liệu tiếng nước ứng 15 dụng vấn đề nghiên cứu; - Có kỹ làm việc nhóm; Kỹ viết: 20 2a - Bố cục hợp lý, lập luận rõ ràng, chặt chẽ, lời văn súc tích 15 2b - Thuyết minh đồ án khơng có lỗi tả, in ấn, định dạng Tổng điểm đánh giá theo thang 100: Quy thang 10 (lấy đến số lẻ) - Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………… ……………………………………………………………………………………… - Câu hỏi đề nghị sinh viên trả lời buổi bảo vệ: ………………………………… ……………………………………………………………………………………… - Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 201… Người phản biện TÓM TẮT Tên đề tài: Thiết kế chế tạo robot vẽ đồ SLAM Sinh viên thực hiện: Trần Công Viện Số thẻ SV: 101140169 Lớp: 14CDT1 Hồ Duy Vũ Số thẻ SV: 101140169 Lớp: 14CDT1 Thời buổi robot ln khơng ngừng nghiên cứu phát triền Bài toán lập đồ vấn đề nghiên cứu chủ yếu ngành Robot học Robot tương lai thay người làm nhiều việc ứng dụng rộng rãi giới Nội dung đồ án tốt nghiệp gồm chương: Chương TỔNG QUAN VỀ ĐỀ TÀI NGHIÊN CỨU Chương 2: CƠ SỞ LÝ THUYẾT Chương 3: TÍNH TỐN THIẾT KẾ KẾT CẤU CƠ KHÍ Chương 4: TÍNH TỐN THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN Chương 5: CHƯƠNG TRÌNH ĐIỀU KHIỂN ROBOT Đồ án trình bày rõ việc thiết kế, chế tạo robot chi tiết từ phần khí, điện tử, ngơn ngữ lập trình… để hồn thiện robot vẽ đồ ĐẠI HỌC ĐÀ NẴNG CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ………………………………………… Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TT Họ tên sinh viên Số thẻ SV Lớp Ngành Trần Công Viện 101140169 14CDT1 Kỹ thuật Cơ điện tử Hồ Duy Vũ 101140170 14CDT1 Kỹ thuật Cơ điện tử Tên đề tài đồ án: Thiết kế chế tạo robot vẽ đồ SLAM Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: …………………………………… …………………………………………… …… ………………………………………………………………………………………… … ………………………………….… ……………………… ……………………… Nội dung phần thuyết minh tính tốn: Phần chung: TT Họ tên sinh viên Trần Công Viện Hồ Duy Vũ Nội dung -Tìm hiểu số loại cấu thực tế để đưa ý tưởng tốt -Đưa nguyên lí, lựa chọn cấu phù hợp để thiết kế -Chế tạo hệ thống Phần riêng: TT Họ tên sinh viên Nội dung Trần Công Viện - Lên phương án điều khiển, kết nối hệ thống, tìm hiểu code điều khiển HHồ Duy Vũ - Thiết kế hệ thống, mơ Tính tốn khí, gia cơng robot Hồn thành thuyết minh Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): Phần chung TT Họ tên sinh viên Nội dung Trần Công Viện Hồ Duy Vũ - Bản vẽ tổng thể 1A0 Phần riêng: TT Họ tên sinh viên Trần Công Viện Hồ Duy Vũ Nội dung - Bản vẽ thuật toán 1A0 - Bản vẽ sơ đồ mạch điện 1A0 - Bản vẽ sơ đồ chi tiết - Bản vẽ sơ đồ động 1A0 1A0 Họ tên người hướng dẫn: Phần/ Nội dung: TS Lê Hoài Nam Toàn đồ án Ngày giao nhiệm vụ đồ án: 25/02/2019 Ngày hoàn thành đồ án: 02/06/2019 Đà Nẵng, ngày Trưởng Bộ môn……………………… tháng Người hướng dẫn năm 201 LỜI NÓI ĐẦU Cùng với phát triển xã hội loài người, ngành khoa học - kỹ thuật không ngừng đến thành cơng Nhiều cơng trình khoa học, phát minh nhà khoa học vào sống, phục vụ lợi ích người Ngày Robot ứng dụng rộng rãi ngành công nghiệp, thay cho hoạt động người môi trường độc hại, nguy hiểm Trong đồ án tốt nghiệp ngành Kỹ thuật Cơ điện tử, nhóm chúng em tìm hiểu, nghiên cứu chế tạo Robot dị đồ cơng nghệ SLAM Trong q trình thực đồ án với nỗ lực nhóm thời gian, kiến thức kinh nghiệm chúng em cịn hạn chế nên khơng thể tránh khỏi thiếu sót Chúng em mong giúp đỡ đóng góp ý kiến thầy cô người để phát điều chưa chưa hợp lý Chúng em xin chân thành cảm ơn TS Lê Hoài Nam thầy khoa Cơ khí tận tình hướng dẫn chúng em hoàn thành đồ án này! Đà Nẵng, ngày 29/05/2019 Nhóm sinh viên thực Trần Cơng Viện i Hồ Duy Vũ Tên đề tài Hình 5.20 Robot hoàn thiện Ghi phần Kết luận Phần Kết luận cần phải nêu kết luận chung, khẳng định kết đạt được, đóng góp, đề xuất kiến nghị (nếu có); Trong phần này, định dạng điểm/ mục kết luận theo dạng Outline Numbering Bullets SVTH: Trần Công Viện – Hồ Duy Vũ GVHD: TS Lê Hoài Nam 85 TÀI LIỆU THAM KHẢO [1] Nguyễn Trọng Hiệp, Nguyễn Văn Lẫm, Thiết kế chi tiết máy, Nhà xuất Giáo Dục, Hà Nội, 1999 [2] Nguyễn Hữu Lộc, Cơ sở thiết kế máy, Nhà xuất Khoa học – kỹ thuật, Hà Nội, 2006 [3] M.R Andersen, T Jensen, P Lisouski, A.K Mortensen, M.K Hansen, T Gregersen and P.Ahrendt, Kinect depth sensor evaluation for computer vision applications, Aarhus University, Department of Engineering, 2013 [4] Cộng đồng Arduino Việt Nam – Arduino.vn [5] KS Phạm Quang Huy, Vi Điều Khiển Và Ứng Dụng Arduino Dành Cho Người Tự [6] http://arduino.vn/bai-viet/1183-huong-dan-su-dung-cam-bien-dong-dien-acs712voi-arduino [7] ROS Tutorials, http://wiki.ros.org/ROS/Tutorials [8] Install Libfreenect, https://github.com/OpenKinect/libfreenect [9] Library open Kinect, https://openkinect.org/wiki/Getting_Started PHỤ LỤC Code arduino #include #include #include #include "I2Cdev.h" #include "MPU6050.h" // Thư viện Lidar LIDARLite myLidarLite; Servo myservo; // chân điều khiển Motor1 #define INA_1 #define INB_1 #define EN1 #define PWM1 //chân điều khiển Motor #define INA_2 12 #define INB_2 11 #define EN2 13 #define PWM2 // Cấu hình chân cho cảm biến siêu âm #define echo1 A1// chân #define trig1 A0// chân vào #define echo2 A3// chân #define trig2 A2// chân vào int Tien = 1; int Lui = 0; int sp = 50; // Tốc độ xe % void setup() { // Cấu hình chân vào động pinMode(INA_1, OUTPUT); pinMode(INB_1, OUTPUT); pinMode(EN1, OUTPUT); pinMode(PWM1, OUTPUT); //Chân băm xung // Cấu hình chân vào động pinMode(INA_2, OUTPUT); pinMode(INB_2, OUTPUT); pinMode(EN2, OUTPUT); pinMode(PWM2, OUTPUT); //Chân băm xung myLidarLite.begin(); Serial.begin(9600); myservo.attach(10); // Cấu hình chân vào cho cảm biến siêu âm pinMode(trig1, OUTPUT); pinMode(echo1, INPUT); pinMode(trig2, OUTPUT); pinMode(echo2, INPUT); } void loop() { while (Serial.available() > 0) { int a = Serial.read() - 48; Serial.println(a); while (a == 1) { int a = Serial.read() - 48; Serial.println(a); if (a == 0) { break; } myservo.write(95); // tell servo to go to position in variable 'pos' delay(15); Xe_Tien(80); while (myLidarLite.distance() > 120) { int a = Serial.read() - 48; Serial.println(a); if (a == 0) { break; } if (SieuAm1() > 60 && SieuAm2() > 60) { myservo.write(95); delay(15); Xe_Tien(80); // tell servo to go to position in variable 'pos' } if (SieuAm1() < 60 && SieuAm2() > 80) { for (int i = 0; i < 10; i++) { myservo.write(135); Tien_Trai(150); delay(15); } } if (SieuAm1() > 80 && SieuAm2() < 60) { for (int i = 0; i < 10; i++) { myservo.write(50); Tien_Phai(150); delay(15); // tell servo to go to position in variable 'pos' } } if (SieuAm1() < 50 && SieuAm2() < 50) { myservo.write(95); Xe_Lui(100); delay(1000); myservo.write(135); Tien_Trai(150); delay(1500); break; } if (myLidarLite.distance() < 100) { break; } } while (myLidarLite.distance() < 120) { int a = Serial.read() - 48; Serial.println(a); if (a == 0) { break; } if (SieuAm1() < 60 && SieuAm2() > 80) { for (int i = 0; i < 10; i++) { myservo.write(135); Tien_Trai(150); delay(15); } } if (SieuAm1() > 80 && SieuAm2() < 60) { for (int i = 0; i < 10; i++) { myservo.write(55); Tien_Phai(150); // tell servo to go to position in variable 'pos' delay(15); } } if (SieuAm1() > 60 && SieuAm2() > 60) { myservo.write(95); // tell servo to go to position in variable 'pos' delay(15); Xe_Tien(80); Tien_Trai(150); delay(1000); } if (SieuAm1() < 50 && SieuAm2() < 50) { myservo.write(95); Xe_Lui(100); delay(1000); myservo.write(55); Tien_Phai(150); delay(1500); break; } if (myLidarLite.distance() > 120) { break; } } } while (a == 2) { int a = Serial.read() - 48; Serial.println(a); if (a == 0) { break; } if (a == 3) { myservo.write(95); delay(15); Xe_Tien(80); } if (a == 4) { myservo.write(95); delay(15); Xe_Lui(100); } if (a == 5) { for (int i = 0; i < 10; i++) { myservo.write(55); Tien_Phai(150); // tell servo to go to position in variable 'pos' delay(15); } } if (a == 6) { for (int i = 0; i < 10; i++) { myservo.write(135); Tien_Trai(150); delay(15); } } } } Serial.print(SieuAm1()); Serial.print("\t"); Serial.println(SieuAm2()); Dung(); } void Motor1(int a, int b, int c) { digitalWrite(INA_1, b); digitalWrite(INB_1, - b); digitalWrite(EN1, c); analogWrite(PWM1, a); } void Motor2(int a, int b, int c) { digitalWrite(INA_2, b); digitalWrite(INB_2, - b); digitalWrite(EN2, c); analogWrite(PWM2, a); } void Xe_Tien(int v) { Motor1(v, Tien, 1); Motor2(v, Tien, 1); } void Xe_Lui(int v) { Motor1(v, Lui, 1); Motor2(v, Lui, 1); } void Tien_Phai(int v) { Motor1(v, Tien, 1); Motor2(v, 0, 0); } void Tien_Trai(int v) { Motor1(v, 0, 0); Motor2(v, Tien, 1); } void Lui_Phai(int v) { Motor1(v, Lui, 1); Motor2(v, 0, 0); } void Lui_Trai(int v) { Motor1(v, 0, 0); Motor2(v, Lui, 1); } void Dung() { Motor1(0, 0, 0); Motor2(0, 0, 0); } void Xoay_Phai(int v) { Motor1(v, Tien, 1); Motor2(v, Lui, 1); } void Xoay_Trai (int v) { Motor1(v, Lui, 1); Motor2(v, Tien, 1); } float SieuAm1() { unsigned long duration1; // biến đo thời gian int distance1; // biến lưu khoảng cách /* Phát xung từ chân trig */ digitalWrite(trig1, 0); // tắt chân trig delayMicroseconds(2); digitalWrite(trig1, 1); // phát xung từ chân trig delayMicroseconds(5); // xung có độ dài microSeconds digitalWrite(trig1, 0); // tắt chân trig /* Tính tốn thời gian */ // Đo độ rộng xung HIGH chân echo duration1 = pulseIn(echo1, HIGH); // Tính khoảng cách đến vật distance1 = int(duration1 / / 29.412); /* In kết Serial Monitor */ return distance1; } float SieuAm2() { unsigned long duration2; // biến đo thời gian int distance2; // biến lưu khoảng cách /* Phát xung từ chân trig */ digitalWrite(trig2, 0); // tắt chân trig delayMicroseconds(2); digitalWrite(trig2, 1); // phát xung từ chân trig delayMicroseconds(5); // xung có độ dài microSeconds digitalWrite(trig2, 0); // tắt chân trig /* Tính tốn thời gian */ // Đo độ rộng xung HIGH chân echo duration2 = pulseIn(echo2, HIGH); // Tính khoảng cách đến vật distance2 = int(duration2 / / 29.412); /* In kết Serial Monitor */ return distance2; } PHỤ LỤC Code giao diện from Tkinter import* import time import serial V = 80 Tam1 = Dk = Tk() stringOn = StringVar() stringOff = StringVar() stringTang = StringVar() stringGiam = StringVar() stringDung = StringVar() stringOn.set("ON") stringOff.set("OFF") stringDung.set(V) Dk.title("Ban Dieu Khien") Dk.minsize(height = 130, width = 280) Dk.resizable(height = True, width = True) ser = serial.Serial( port = '/dev/ttyUSB0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = ) def TuDong(): Entry(Dk,width = 4, textvariable = stringOn).grid(row = 2, column = 1) Entry(Dk,width = 4, textvariable = stringOff).grid(row = 3, column = 1) while True: ser.write(b"1") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def Tay(): Entry(Dk,width = 4, textvariable = stringOff).grid(row = 2, column = 1) Entry(Dk,width = 4, textvariable = stringOn).grid(row = 3, column = 1) while True: ser.write(b"2") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def TangToc (): global V if (V) < 100: V = V+5 stringTang.set(V) Entry(Dk,width = 3, textvariable = stringTang).grid(row = 3, column = 6) def GiamToc (): global V if (V) > 0: V = V-5 stringGiam.set(V) Entry(Dk,width = 3, textvariable = stringGiam).grid(row = 3, column = 6) def TienDK(): while True: ser.write(b"3") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def LuiDK(): while True: ser.write(b"4") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def PhaiDK(): while True: ser.write(b"5") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def TraiDK(): while True: ser.write(b"6") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def DungDK(): global V Entry(Dk,width = 4, textvariable = stringOff).grid(row = 2, column = 1) Entry(Dk,width = 4, textvariable = stringOff).grid(row = 3, column = 1) stringDung.set(0) Entry(Dk,width = 4, textvariable = stringDung).grid(row = 3, column = 6) while True: ser.write(b"00") data = ser.read() ser.flush() time.sleep(1) print(data) Dk.update() def NutNhan(): Entry(Dk,width = 4, textvariable = stringOff).grid(row = 2, column = 1) Entry(Dk,width = 4, textvariable = stringOff).grid(row = 3, column = 1) Entry(Dk,width = 4, textvariable = stringDung).grid(row = 2, column = 6) Entry(Dk,width = 4, textvariable = stringDung.set(0)).grid(row = 3, column = 6) frameButton1 = Frame() Button(frameButton1,text = "TD ", command = TuDong, height = 2, width = 4).pack(side = LEFT) frameButton1.grid(row = 2, column = 0) frameButton2 = Frame() Button(frameButton2,text = " ^ ", command = TienDK, height = 2, width = 4).pack(side = LEFT) frameButton2.grid(row = 2, column = 3) frameButton3 = Frame() Button(frameButton3,text = " < ", command = TraiDK, height = 2, width = 4).pack(side = LEFT) frameButton3.grid(row = 3, column = 2) frameButton4 = Frame() Button(frameButton4,text = "OK", command = 0, height = 2, width = 4).pack(side = LEFT) frameButton4.grid(row = 3, column = 3) frameButton5 = Frame() Button(frameButton5,text = " > ", command = PhaiDK, height = 2, width = 4).pack(side = LEFT) frameButton5.grid(row = 3, column = 4) frameButton6 = Frame() Button(frameButton6,text = "Tay", command = Tay, height = 2, width = 4).pack(side = LEFT) frameButton6.grid(row = 3, column = 0) frameButton7 = Frame() Button(frameButton7,text = " v ", command = LuiDK, height = 2, width = 4).pack(side = LEFT) frameButton7.grid(row = 4, column = 3) frameButton8 = Frame() Button(frameButton8,text = " + ", command = TangToc, height = 2, width = 4).pack(side = LEFT) frameButton8.grid(row = 2, column = 6) frameButton9 = Frame() Button(frameButton9,text = " - ", command = GiamToc, height = 2, width = 4).pack(side = LEFT) frameButton9.grid(row = 4, column = 6) frameButton9 = Frame() Button(frameButton9,text = " Dung ", command = DungDK, height = 2, width = 6).pack(side = LEFT) frameButton9.grid(row = 4, column = 0) Dk.update() NutNhan() mainloop() ... tưởng thực đề tài ? ?Thiết kế chế tạo robot vẽ đồ SLAM? ?? mong tiếp cận giải vấn đề nêu Mục tiêu đồ án nghiên cứu chế tạo robot vẽ đồ SLAM tự động điều khiển tay Chế tạo kết cấu robot tìm cách lập... Duy Vũ GVHD: Lê Hoài Nam 35 Thiết kế chế tạo robot vẽ đồ SLAM Chương 2: CƠ SỞ LÝ THUYẾT 2.1 Phân tích phương án 2.1.1 Robot vẽ đồ vẽ phương án sau: Robot vẻ đồ vẽ đồ 2D cách lấy liệu từ cảm biến... Hoài Nam 31 Thiết kế chế tạo robot vẽ đồ SLAM Hình 1.6 Parallel robot Thường ứng dụng để tạo khung đế xoay tự mơ bay Loại robot có khớp trượt xoay đồng thời Hình 1.7 Robot công nghiệp Robot công