Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 129 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
129
Dung lượng
4,5 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CƠ KHÍ - - BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP HÀ NỘI KHOA CƠ KHÍ ĐỒ ÁN -TỐT - NGHIỆP Đề số 1: Nghiên cứu, thiết kế, điều khiển mơ hình tay máy ứng dụng thuật tốn xử lý ảnh BỘ CƠNG THƯƠNG ĐỒ ÁN TỐT NGHIỆP GVHD:TRƯỜNG ĐẠI TS.HỌC BÙI THANH LÂM HÀ NỘI CƠNG NGHIỆP Trần Thanh AnKHÍ KHOA CƠ Sinh viên: 2018 601 103 Nguyễn Viết Chung 2018 601 088 - Đề số 1: Nghiên cứu, thiết kế, điều khiển mơ hình tay máy ứng dụng Trần Nguyên Tài 2018 606 218 thuật toán xử lý ảnh Khóa ĐH – K13 ĐỒ ÁN TỐT NGHIỆP BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI Đề số 1: Nghiên cứu, thiếtKHOA kế, điềuCƠ khiển KHÍmơ hình tay máy ứng dụng thuật toán xử lý ảnh - ĐỒ ÁN TỐT NGHIỆP BỘ kế, CÔNG Đề số 1: Nghiên cứu, thiết điều THƯƠNG khiển mơ hình tay máy ứng dụng Hà Nội – 2021 TS BÙI THANH LÂM thuật tốnTRƯỜNG xử lý ảnh ĐẠI HỌC CƠNG NGHIỆP HÀ NỘI Sinh viên: Trần Thanh An 2018 601 103 KHOA CƠ KHÍ Nguyễn Viết Chung 2018 601 088 ĐỒ ÁN TỐT NGHIỆP MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU LỜI CẢM ƠN CHƯƠNG 1: GIỚI THIỆU CHUNG TAY MÁY ỨNG DỤNG THUẬT TOÁN XỬ LÝ ẢNH 1.1 Các vấn đề đặt 1.2 Tổng quan đề tài 1.3 Ý nghĩa khoa học thực tiễn đề tài 10 1.4 Mục tiêu đề tài 11 1.5 Đối tượng phạm vi nghiên cứu 11 1.6 Phương pháp nghiên cứu 11 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ TAY MÁY ỨNG DỤNG THUẬT TOÁN XỬ LÝ ẢNH 13 2.1 Kết cấu hệ thống khí tay máy 13 2.1.1 Tổng quan tay máy bậc tự 13 2.1.2 Bài toán động học thuận 15 2.1.3 Bài toán động học ngược 18 2.2 Hệ thống cảm biến đo lường tín hiệu 20 2.2.1 Giới thiệu hệ thống xử lý ảnh 20 2.2.2 Thị giác máy tính 23 2.2.3 Thuật toán nhận diện vật thể 29 2.2.4 Tiền xử lý ảnh 29 2.2.5 Mơ hình YOLO 50 2.2.6 Mơ hình SSD 62 2.2.7 Các toán xử lý ảnh 70 2.3 Xây dựng, mô hệ thống 78 2.3.1 Mục đích, yêu cầu thiết kế điều khiển mờ 78 2.3.2 Tiến hành thiết kế 78 CHƯƠNG 3: TÍNH TỐN THIẾT KẾ HỆ THỐNG TAY MÁY ỨNG DỤNG THUẬT TOÁN XỬ LÝ ẢNH 85 3.1 Tính tốn, thiết kế hệ thống khí robot 85 3.1.1 Tính tốn thiết kế tay máy 85 3.1.2 Tính tốn chọn vịng bi 86 3.1.3 Tính toán thiết kế truyền động 87 3.1.4 Thi cơng hệ thống khí 89 3.2 Tính tốn, thiết kế hệ thống điện điều khiển truyền thông 94 3.2.1 Nguyên lý hoạt động hệ thốngUaUUFGBDGD3.2.2 Khối động 94 3.2.3 Khối vi xử lý 96 3.2.4 Truyền nhận liệu serial từ lap qua arduino 98 3.2.5 Khối nguồn 100 3.2.6 Công tắc hành trình 101 3.3 Xây dựng chương trình kế nối kiểm nghiệm mơ hình 103 Trước tiên cần xây dựng lưu đồ thuật toán hệ thống 103 CHƯƠNG 4: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 105 4.1 Kết đạt 105 4.1.1 Hệ thống khí 105 4.1.2 Hệ thống điều khiển 106 4.1.3 Về người 108 4.1.4 Đánh giá 108 4.2 Định hướng phát triển 108 4.2.1 Hạn chế đề tài 108 4.2.2 Hướng phát triển 109 TÀI LIỆU THAM KHẢO 110 PHỤ LỤC 112 DANH MỤC HÌNH ẢNH Hình 1 Cánh tay robot ứng dụng xử lý ảnh 10 Hình Tay máy hãng MITSUBISHI 14 Hình 2 Kết cấu tay máy robot tọa độ cầu RRR 17 Hình Bài tốn động học ngược robot 18 Hình Phân tích cấu khâu 20 Hình Hệ thống xử lý ảnh dây truyền sản xuất 20 Hình So sánh loại camera xử lý ảnh thường dùng 22 Hình Hệ thống đèn hồng ngoại dùng cho camera ban đêm 23 Hình Nhận diện vật thể thị giác máy tính 24 Hình Kết dự án Summer Vision Project 25 Hình 10 Ứng dụng xử lý ảnh giao thông 27 Hình 11 Phép biến đổi tuyến tính 31 Hình 12 Dịch chuyển ảnh 33 Hình 13 Phép xoay ảnh 34 Hình 14 Phép biến đổi anffine 34 Hình 15 Biến đổi phối cảnh 35 Hình 16 Crop ảnh 36 Hình 17 Bộ lọc tích chập 2D 37 Hình 18 Làm ảnh 37 Hình 19 Bộ lọc Gausian 38 Hình 20 Các lọc khác 38 Hình 21 Phương pháp xác định edge thuật toán canny 40 Hình 22 Phương pháp triệt tiêu cạnh (edge) theo ngưỡng cường độ gradient 41 Hình 23 Contour ảnh 42 Hình 24 Moment ảnh 43 Hình 25 Bài toán object detection 45 Hình 26 Vẽ bounding box cho vật thể 45 Hình 27 Loại bỏ bounding box overlap 46 Hình 28 Tách biệt vật thể 46 Hình 29 Các điểm mốc tay 49 Hình 30 Nhận diện bàn tay thực tế 50 Hình 31 Kiến trúc mạng Yolo 51 Hình 32 Các layer mạng darknet-53 52 Hình 33 Kiến trúc output model YOLO 54 Hình 34 Thay đổi feature map đối tượng 55 Hình 35 Xác định anchor box cho vật thể 56 Hình 36 Hai vật thể trùng midpoint 57 Hình 37 Cơng thức ước lượng bounding box từ anchor box 60 Hình 38 Thuật tốn non-max suppression 61 Hình 39 Cách xác định IoU 62 Hình 40 So sánh tốc độ xử lý độ xác lớp model object detection 63 Hình 41 Sơ đồ kiến trúc mạng SSD 64 Hình 42 Vị trí default bounding box ảnh gốc áp dụng feature map có kích thước 4x4 66 Hình 43 Mối quan hệ nhận dạng vật thể xử lý ảnh 71 Hình 44 So sánh toán nhận dạng vật thể tốn phân đoạn hình ảnh 73 Hình 45 Input Output toan 73 Hình 46 Các dạng image segmentation khác 74 Hình 47 Ứng dụng image segmentation vệ tinh 75 Hình 48 Bộ lọc binary threshold 76 Hình 49 Thuật tốn K-mean clustering 76 Hình 50 Phương pháp expectation maximization clustering 77 Hình 51 Thuật tốn mean shift clustering 78 Hình 52 Sơ đồ biến vào 79 Hình 53 Hàm thuộc ngón 80 Hình 54 Hàm thuộc ngón trỏ 80 Hình 55 Hàm thuộc ngón 81 Hình 56 Hàm thuộc ngõ động step 81 Hình Phần đế tay máy 85 Hình Phần cánh tay 86 Hình 3 Tay gắp 86 Hình Vịng bi 6009-2RS1 87 Hình Thiết kế bánh truyền động khâu đế 88 Hình Thiết kế bánh truyền động tay máy 89 Hình Động step 1.8° 43D2033 95 Hình Servo RC MG90S 95 Hình Arduino Uno R3 board 96 Hình 10 Sơ đồ chân Arduino Uno R3 97 Hình 11 Chuẩn truyền nhận UART 99 Hình 12 Sơ đồ đấu nối 100 Hình 13 Nguồn tổ ong 101 Hình 14 Cơng tắc hành trình 102 Hình 15 Sơ đồ kết nối điện 104 Hình Tay máy sau hồn thiện 105 Hình Đáp ứng quay phải 106 Hình Đáp ứng quay trái 107 DANH MỤC BẢNG BIỂU Bảng Bảng thông số Denavit – Hartenberg 15 Bảng 2 Bảng thông số DH 17 Bảng Mơ hình điều khiển mờ hệ tay máy Simulink 84 Bảng Khoảng giá trị ngôn ngữ đầu vào 81 Bảng Bảng luật điều khiển khâu 82 Bảng 3 Bảng luật điều khiển khâu 82 Bảng Bảng luật điều khiển khâu 82 Bảng Bảng luật điều khiển tay gắp 83 Bảng Bảng luật tổng hợp 83 Bảng Bảng giá trị đầu theo luật mờ Sugeno 83 Bảng Thông số kỹ thuật 98 LỜI CẢM ƠN Trong q trình thực đồ án nhóm em cố gắng hoàn thành nhiệm vụ đề tài dặt chắn không tránh khỏi thiếu sót, mong q Thầy/Cơ thơng cảm chúng em mong nhận ý kiến đóng góp để chúng em hồn thiện Hiện nay, đất nước ta giai đoạn phát triển, thực cơng cơng nghiệp hóa, đại hóa nên việc nghiên cứu phát triển đề tài khoa học công nghệ đặc biệt tay máy robot yếu tố quan trọng, đề tài nghiên cứu bước đệm để ngành công nghiệp đất nước phát triển mạnh mẽ Là sinh viên nghành Cơ điện tử khoa Cơ khí trường Đại học Công nhiệp Hà Nội, sau bốn năm học tập rèn luyện hướng dẫn giảng dạy tận tình thầy môn Cơ điện tử, em học hỏi nhiều điều bổ ích Theo nhiệm vụ thiết kế tốt nghiệp môn, đề tài tốt nghiệp chúng em là: Nghiên cứu, thiết kế, điều khiển mơ hình tay máy ứng dụng thuật toán xử lý ảnh Trong nghiên cứu tay máy điều khiển dựa xử lý ảnh để gắp vật thể không gian làm việc, tín hiệu điều khiển truyền khơng dây giúp robot vận hành khoảng cách xa Chúng em xin chân thành cảm ơn thầy,cô giáo môn, đặc biệt T.S Bùi Thanh Lâm trực tiếp hướng dẫn, giảng dạy, giúp đỡ chúng em trình làm đồ án tốt nghiệp Hà Nội, ngày … tháng … năm 2022 Sinh viên thực Trần Thanh An Nguyễn Viết Chung Trần Nguyên Tài CHƯƠNG 1: GIỚI THIỆU CHUNG TAY MÁY ỨNG DỤNG THUẬT TOÁN XỬ LÝ ẢNH 1.1 Các vấn đề đặt Đề tài “Nghiên cứu, thiết kế, điều khiển mơ hình tay máy ứng dụng thuật toán xử lý ảnh” đặt yêu cầu: Thiết kế chế tạo hệ thống khí cánh tay Robot khung điều khiển, - đảm bảo hệ thống hoạt động chắn, chạy êm, cấu di chuyển tới vị trí mong muốn Điều khiển cánh tay Robot chuyển động theo yêu cầu đặt Cánh tay - robot có khả chuyển động theo chuyển động đáp ứng yêu cầu tốn thơng qua thiết bị điều khiển sử dụng xử lý ảnh Giải toán động học động lực học làm sở để điều khiển - robot Sử dụng phần mềm để tính tốn, mơ robot - Thiết kế hệ thống điều khiển cho robot: mạch điều khiển, mạch công suất 1.2 Tổng quan đề tài Cánh tay tất thể phận phần robot phức tạp Các liên kết điều khiển nối với khớp nối cho phép chuyển động quay (như robot có khớp nối) chuyển dịch (tuyến tinh) Các liên kết người thao túng tạo thành chuỗi động học Điểm cuối chuỗi động học điều khiển gọi điểm đích Cấu tạo cánh tay robot thiết kế để thực nhiệm vụ mong muốn như: sơn, hàn, gắp, … tùy thuộc vào ứng dụng Xử lý ảnh phân ngành xử lý số tín hiệu với tín hiệu xử lý ảnh Đây phân ngành khoa học phát triển năm gần Xử lý ảnh gồm lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh truy vấn ảnh Sự phát triển xử lý ảnh đem lại nhiều lợi ích cho sống người Ứng dụng xử lý ảnh vào điều khiển canh tay robot xu hướng phát triển cơng nghệ Hình 1 Cánh tay robot ứng dụng xử lý ảnh 1.3 Ý nghĩa khoa học thực tiễn đề tài Robot sử dụng cơng nghiệp địi hỏi tính linh hoạt, hoạt động nhanh, tinh vi chuẩn xác, có khả thay người hoạt động môi trường nguy hiểm, độc hại Cánh tay robot điều khiển thuật toán xử lý ảnh robot linh hoạt, xác, có tính ứng dụng dây chuyền cơng nghiệp, phát triển để ứng dụng vào việc lắp ráp sản phẩm dây chuyền sản xuất đại Ở Việt Nam nói chung cơng nghệ chế tạo tay máy cịn chậm phát triển, vẩn chưa có nhà máy có khả chế tạo phận cấu thành tay máy đạt tiêu chuẩn quốc tế Tận dụng vật liệu có sẳn để gia cơng chi tiết khí linh kiện , thiết bị điện có sẳn nước ngồi sản suất để thiết kế thành sản phẩm cụ thể trước hết ứng dụng làm phương tiện giảng dạy trường học từ phát triển cao để ứng dụng vào sản suất hướng đắng kỹ sư Việt Nam Đề tài : “NGHIÊN 10 if(digitalRead(E_1)==0) a.h1=true; else a.h1=false; if(digitalRead(E_2)==0) a.h2=true; else a.h2=false; if(digitalRead(E_3)==0) a.h3=true; else a.h3=false; } bool EndStopsClass::HomingCheck(HanhTrinh &a) { UpdateStates(a); if (a.h1 == true && a.h2 == true && a.h3 == true) { return true; } else { return false; } } bool EndStopsClass::States(Stepper s, HanhTrinh a) { switch (s) { 115 case Stepper1: return a.h1; break; case Stepper2: return a.h2; break; case Stepper3: return a.h3; break; default: break; } return false; } Phụ lục 3: Code Luật di chuyển #include "LuatDiChuyen.h" #include "EndStops.h" void LuatDiChuyenClass::SetupPinMode() { Serial.begin(9600); while (!Serial); pinMode(E_1,INPUT_PULLUP); pinMode(E_2,INPUT_PULLUP); pinMode(E_3,INPUT_PULLUP); pinMode(pul_1,OUTPUT); pinMode(pul_2,OUTPUT); pinMode(pul_3,OUTPUT); pinMode(dir_1,OUTPUT); pinMode(dir_2,OUTPUT); 116 pinMode(dir_3,OUTPUT); pinMode(pul_servo,OUTPUT); // k=1000; } Control_Sig LuatDiChuyenClass::DiChuyen(Input a, Control_Sig &control) { // Serial.print(a.Flex_1); Serial.print(a.Flex_2); Serial.println(a.Flex_3); control.velocity1=0; control.velocity2=0; control.velocity3=0; control.Chieu1=0; control.Chieu2=0; control.Chieu3=0; //Luật if (a.Flex_1==THAP && a.Flex_3==THAP && (a.Flex_2==CAO || a.Flex_2==VUA)) { control.velocity1=CHAM; control.Chieu1=thuan; } else if (a.Flex_1==THAP && a.Flex_2==THAP (a.Flex_3==CAO || a.Flex_3==VUA)) { control.velocity1=CHAM; control.Chieu1=nghich; }//============================================== else if (a.Flex_1==VUA && a.Flex_3==THAP && 117 && (a.Flex_2==CAO || a.Flex_2==VUA)) { control.velocity2=CHAM; control.Chieu2=thuan; } else if (a.Flex_1==VUA&& a.Flex_2==THAP && (a.Flex_3==CAO || a.Flex_3==VUA)) { control.velocity2=NHANH; control.Chieu2=nghich; }//================================================ else if (a.Flex_1==CAO && a.Flex_3==THAP && && a.Flex_2==THAP && (a.Flex_2==CAO || a.Flex_2==VUA)) { control.velocity3=CHAM; control.Chieu3=nghich; } else if (a.Flex_1==CAO (a.Flex_3==CAO || a.Flex_3==VUA)) { control.velocity3=CHAM; control.Chieu3=thuan; } return control; } void LuatDiChuyenClass::Step(int step_number, boolean chieu, int toc_do) { if (step_number ==1 ) 118 { // step if(chieu == thuan){ // 0- chiều thuận từ trái sang phải digitalWrite(dir_1, 0); digitalWrite(pul_1, 1); digitalWrite(pul_1, 0); } if(chieu == nghich){ digitalWrite(dir_1, 1); digitalWrite(pul_1, 1); digitalWrite(pul_1, 0); } } else if (step_number ==2 ) { // step if(chieu == thuan){ // 0- chiều thuận từ lên digitalWrite(dir_2, 0); digitalWrite(pul_2, 1); digitalWrite(pul_2, 0); } if(chieu == nghich){ digitalWrite(dir_2, 1); digitalWrite(pul_2, 1); digitalWrite(pul_2, 0); } } else if (step_number ==3 ) { // step 119 if(chieu == thuan){ // 0- chiều thuận từ lên digitalWrite(dir_3, 1); digitalWrite(pul_3, 1); digitalWrite(pul_3, 0); } if(chieu == nghich){ digitalWrite(dir_3, 0); digitalWrite(pul_3, 1); digitalWrite(pul_3, 0); } } } void LuatDiChuyenClass::Homming(Control_Sig &b, HanhTrinh a) { while(EndStops.HomingCheck(a)==false) { b.velocity1=NHANH; b.velocity2=NHANH; b.velocity3=NHANH; b.Chieu1=nghich; b.Chieu2=thuan; b.Chieu3=thuan; } } LuatDiChuyenClass LuatDiChuyen; 120 Phụ lục 4: Chương trình chinh #include #include #include "config.h" #include "enum.h" #include "LuatDiChuyen.h" #include "MsTimer2.h" #include "EndStops.h" void RunMotor(); void TurnOffPluse(); HanhTrinh h; Control_Sig Control; Input x; long int dem,dem1,t=0,luu; int s1,s2,s3; char k; String data; char c; int stringCounter = 0; bool stringCounterStart = false; String myRevivedString; int stringLength = 7; int a = 50; int i_ = 50; bool IsRunning = false; Servo servo; void get_data() { // Serial.println("getdata"); 121 while (Serial.available()) { char c = Serial.read(); if (c == '$') { stringCounterStart = true; } if (stringCounterStart == true ) { if (stringCounter < stringLength) { myRevivedString = String(myRevivedString + c); stringCounter++; } if (stringCounter >= stringLength) { stringCounter = 0; stringCounterStart = false; x.Flex_1 = myRevivedString.substring(1, 3).toInt(); x.Flex_2 = myRevivedString.substring(3, 5).toInt(); x.Flex_3 = myRevivedString.substring(5, 7).toInt(); if(x.Flex_1