Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 73 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
73
Dung lượng
2,47 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 - - CHUYÊN NGÀNH CƠ ĐIỆN TỬ ĐỀ TÀI: Nghiên cứu, thiết kế tay máy hút phơi tự động sử dụng cơng nghệ xử lí ảnh BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI Giáo viên hướng dẫn : TS PHAN ĐÌNH HIẾU KHOA CƠ KHÍ Sinh viên thực hiện: Mã Sinh Viên - Hồng Cơng Thảo 2018603158 ĐỒ ÁN MÔN Nguyễn Đăng Thiên ĐO Đặng Văn Trà LƯỜNG 2018603521 2018602320 VÀ ĐIỀU KHIỂN 2018604047 BỘHỆ CÔNG THƯƠNG ĐỀ TÀI: XÂY DỰNG THỐNG ĐO VÀ XỬ LÍ TÍN Nguyễn Văn Tú HIỆU SỬ DỤNG CẢM BIẾN PHÁT HIỆN Lớp: ĐH ĐIỆN TỬ 2NGHIỆP – K13 LỬA, TRƯỜNG ĐẠICƠ HỌC CÔNG HÀ CẢM BIẾN NHIỆT ĐỂ CẢNHNỘI BÁO VÀ CHỮA CHÁY KHOA CƠ KHÍ Hà Nội: 2022 - - ĐỒ ÁN MƠN A B I LỜI NĨI ĐẦU Trong nghiệp cơng nghiệp hóa đại hóa đất nước, tự động hóa ngày đóng vai trò quan trọng Với tốc độ phát triển không cần lượng lao động khổng lồ mà cịn địi hỏi có trình độ, chất lượng tay nghề, kỹ thuật lao động thiết bị sản xuất Mức độ phát triển khoa học kỹ thuật ngày cao vấn đề tự động hố ngày trọng Trong cách mạng cơng nghiệp 4.0 việc ứng dụng tự động hóa, trí tuệ nhân tạo vào sản xuất, kinh doanh xu hướng tất yếu nhằm tạo suất lao động cao Trên giới có nhiều nhà máy sử dụng toàn hệ thống chuyền sản xuất tự động hóa, đưa rơbốt vào thay sức lao động người, tạo sản phẩm tốt, độ xác cao Nhờ vào robot, sống ngày tiện nghi an toàn Thật vậy, robot dần thay người công việc nguy hiểm cứu nạn, cứu hộ, kiểm tra môi trường độc hại, nơi ảnh hưởng trực tiếp đến sức khoẻ tính mạng người Khơng vậy, hộ gia đình, robot giúp thực công việc nhàm chán nhiều thời gian lau nhà, hút bụi nhờ chất lượng sống ngày cao Kết hợp xu phát triển thời đại những kiến thức học, Nhóm chúng em lựa chọn đề tài: “Nghiên cứu, thiết kế tay máy hút phôi tự động sử dụng công nghệ xử lí ảnh” Trong thời gian làm đồ án, bảo tận tình thầy Phan Đình Hiếu với cố gắng thành viên nhóm đến đồ án hồn thành Tuy nhiên với kiến thức hạn chế kinh nghiệm, kĩ cịn thiếu, có nhiều cố gắng song nhóm em cịn nhiều thiếu sót cần bổ sung, hồn thiện Kính mong thầy thơng cảm góp ý để đề tài nhóm em hồn thiện phát triển, ứng dụng thời gian tới Em xin trân thành cảm ơn thầy Phan Đình Hiếu giúp đỡ chúng em hồn thành đồ án II MỤC LỤC LỜI NÓI ĐẦU I MỤC LỤC II DANH MỤC HÌNH ẢNH IV DANH MỤC BẢNG BIỂU VI CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Sơ lược robot phát triển robot 1.2 Nội dung nghiên cứu 10 1.3 Phương pháp nghiên cứu đề tài 11 1.4 Phạm vi nghiên cứu đề tài 11 1.5 Tổng quan xử lý ảnh 12 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 15 2.1 Bài tốn cơng nghệ tay máy hút phơi tự động 15 2.2 Các thành phần hệ thống phân loại 19 2.3 Phương trình động học robot 19 2.4 Tiền xử lý ảnh 20 CHƯƠNG 3: THIẾT KẾ VÀ CHẾ TẠO 24 3.1 Thiết kế khí 24 3.2 Tính tốn lựa chọn thiết bị 26 3.3 Thiết kế hệ thống điều khiển 36 3.4 Tích hợp hệ thống xử lí ảnh 45 CHƯƠNG 4: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 49 4.1 Kết thực nghiệm 49 4.2 Đánh giá kết thu 49 III 4.3 Hướng phát triển tương lai 50 TÀI LIỆU THAM KHẢO 51 PHỤ LỤC 52 Code arduino 52 Code python: 56 IV DANH MỤC HÌNH ẢNH Hình 1-1 Robot cơng nghiệp bậc tự giới Hình 1-2 Robot ASIMO đời đầu .3 Hình 1-3 Robonaut .3 Hình 1-4 Sophia-robot công dân giới Hình 1-5 Cấu trúc chung hệ robot Hình 1-6 Robot tọa độ Descarte Hình 1-7 Robot tọa độ trụ Hình 1-8 Robot tọa độ cầu Hình 1-9 Robot kiểu scara Hình 1-10 Cấu trúc hệ điều khiển hở Hình 1-11 Cấu trúc hệ điều khiển phản hồi Hình 1-12 Ứng dụng Arm robot ngành khí Hình 1-13 Arm robot ngành sản xuất điện tử 10 Hình 1-14 Robot kiểm tra khiếm khuyết ứng dụng thị giác máy tính 12 Hình 1-15 Ơ tô không người lái 13 Hình 1-16 Ứng dụng thị giác máy tính nội soi đại tràng .13 Hình 1-17 IBM watson for Oncology 14 Hình 1-18 Ứng dụng ngân hàng 14 Hình 2-1 Sơ đồ khối hệ thống 15 Hình 2-2 Điều chế độ rộng xung 16 Hình 2-3 Mơ hình đơn giản đặt hệ trục khâu robot .20 Hình 2-4 Ảnh sau thực threshold 22 Hình 2-5 Ví dụ thuật tốn contour 23 Hình 3-1 Mơ hình thiết kế 24 Hình 3-2 Cánh tay robot 24 Hình 3-3 Bản vẽ phân dã robot .25 Hình 3-4 Băng tải 25 Hình 3-5 Bản vẽ phân dã băng tải 26 Hình 3-6 Lực tác dụng lên băng tải .27 Hình 3-7 Động DCM3724 29 V Hình 3-8 Động máy bơm MB380 .30 Hình 3-9 Mơ hình đơn giản đặt hệ trục khâu robot .31 Hình 3-10 Động servo MG996R 34 Hình 3-11 Bộ chuyển đổi nguồn 12V 36 Hình 3-12 Sơ đồ khối hệ thống 36 Hình 3-13 Board mở rộng Arduino UNO .37 Hình 3-14 Cảm biến hồng ngoại 39 Hình 3-15 Module điều khiển động 40 Hình 3-16 Module NRF24L01 42 Hình 3-17 Sơ đồ chân mạch NRF24L01 43 Hình 3-18 Sơ đồ mạch RF NRF24L01 43 Hình 3-19 Driver PCA9685 44 Hình 3-20 Sơ đồ nối dây băng chuyền hệ thống hút 45 Hình 3-21 Mạch tiếp nhận tín hiệu từ máy tính điều khiển robot 46 Hình 3-22 Mạch tiếp nhận tín hiệu truyền đến robot .47 Hình 3-23 Lưu đồ thuật tốn code xử lí ảnh 47 Hình 3-24 Mơ hình lắp ráp thực tế 48 Hình 4-1 Camera chụp phơi 49 Hình 4-2 Nhận diện ảnh 49 VI DANH MỤC BẢNG BIỂU Bảng 2-1 Bảng thông số DH 20 Bảng 3-1 Bảng thông số động RF370C 29 Bảng 3-2 Bảng thông số DH 31 Bảng 3-3 Thông số UNO R3 38 Bảng 3-4 Thông số kỹ thuật mạch điều khiển động L298N 40 Bảng 3-5 Sơ đồ chân tín hiệu module L298N 41 Bảng 3-7 Lưu đồ thuật toán 45 CHƯƠNG 1: 1.1 GIỚI THIỆU CHUNG Sơ lược robot phát triển robot 1.1.1 Lịch sử hình thành phát triển Nhu cầu nâng cao suất chất lượng sản phẩm ngày đòi hỏi ứng dụng rộng rãi phương tiện tự động hóa sản xuất Xu hướng tạo dây chuyền thiết bị tự động có tính linh hoạt cao hình thành Các thiết bị thay dần máy tự động “cứng” đáp ứng việc định thị trường ln địi hỏi thay đổi mặt hàng chủng loại, kích cỡ tính Vì ngày tăng nhanh nhu cầu ứng dụng robot để tạo hệ thống sản xuất tự động linh hoạt Thuật ngữ robot lần xuất năm 1922 tác phẩm “Rossum's Universal Robot” Karel Capek Theo tiếng Séc robot người làm tạp dịch Trong tác phẩm nhân vật Rossum trai ông tạo máy gần giống người để hầu hạ người Hơn 20 năm sau, ước mơ viễn tưởng Karel Capek bắt đầu thực Ngay sau chiến tranh giới thứ 2, Hoa Kỳ xuất tay máy chép hình điều khiển từ xa phịng thí nghiệm vật liệu phóng xạ Chiếc robot công nghiệp đưa vào ứng dụng đầu tiên, năm 1961, nhà máy ô tô General Motors Trenton, New Jersey Hoa Kỳ Năm 1967, Nhật Bản nhập robot công nghiệp từ Cơng ty AMF Đến năm 1990 có 40 Cơng ty Nhật Bản, có Cơng ty khổng lồ Công ty Hatachi Công ty Mitsubishi, đưa thị trường quốc tế nhiều loại robot tiếng Từ năm 70 việc nghiên cứu nâng cao tính robot chi nhiều đến lắp đặt thêm cảm biến ngoại tín hiệu để nhận biết môi trường làm việc Tại trường đại học tổng hợp Ford người ta tạo loại robor lắp ráp tự động điều khiển máy tính sở xử lý thông tin từ cảm biến lực thị giác Vào thời gian Công ty IBM chế tạo loại robot có loại cảm biến xúc giác cảm biến lực, điều khiển máy tính để lắp ráp máy in gồm 20 cụm chi tiết 50 Tuy nhiên thời gian ngắn, kinh nghiệm làm thực tế thiết kế gia công khí,lắp ráp, linh kiện chi tiết khí khó tìm, lập trình điều khiển, kiến thức chun mơn lĩnh vực cịn gặp phải nhiều khó khăn nên mơ hình cịn nhiều hạn chế cần cải thiện như: Thiết kế mơ hình cánh tay robot chưa chắn, có dao động định, khớp quay có lệch định, robot có sai số Chương trình điều khiển cánh tay robot cịn tồn hạn chế vài vị trí Điều kiện thực tế đa dạng, có nhiều yếu tố bên kết cấu cánh tay robot ảnh hưởng đến cánh tay robottrong trình vận hành, khiến q trình hoạt động cánh tay robot có vài vị trí bị vấp Để nghiên cứu phát triển mở rộng đề tài phải nhiều thời gian kinh phí 4.3 Hướng phát triển tương lai Cần tận dụng ưu điểm cánh tay robot, tham khảo viết khoa học lĩnh vực Từ kết đạt được, nhóm đề tài dự kiến hướng phát triển, hướng nghiên cứu sau: Cần cải tiến phận khí cánh tay robot để cải thiện kết cấu cánh tay robot, giảm dao động sai lêch khớp, xóa bỏ vấp vài vị trí cánh tay robot Cải tiến chương trình điều khiển cánh tay robot để giảm sai số vị trí gắp phơi robot có chu trình hoạt động đa dạng hiệu Nâng cấp chương trình xử lý ảnh để hoạt động môi trường ánh sáng không ổn định Cải tiến thuật tốn tìm trọng tâm phơi để giảm sai số, tìm trọng tâm phôi qua ảnh gần với trọng tâm phôi thực tế Tùy thuộc vào ứng dụng cụ thể mà trang bị thêm tính cho cánh tay robot chương trình xử lý ảnh 51 TÀI LIỆU THAM KHẢO [1] LUO Jia Jia, HU Guo-qing"Study on the Simulation of Robot Motion Based on MATLAB" Journal of Xiamen University (Natural Science).44.5 (2005): 640-644 [2] Sun Xiaoyong, Xie Zhijiang, Jian Kailin, Zhang Jun “Dynamics Analysis and Simulation of 6-PSS Flexible Parallel Robot Transaction of the Chinese Society for Agricultural Machinery",2012,43(7):194-205 [3] S K SAHA" Introduction to Robotics”, China Machine Process, 2009:76-145 [4] Denavit, Jacques, Hartenberg, Richard Scheunemann (1955)."A kinematic notation for lower-pair mechanisms based on matrices" Trans ASME J.Appl Mech 23:215-221 [5] H.S Lee, SL Chang,"Development of a CAD/CAE/CAM system for a robot manipulator”, 140(2003) 100-104, ISSN:0924-0136 [6] Chen Lugang "Dynamics simulation study of welding robot''based on Adams.Jiangnan university,2012 [7] http://www.roboanalyzer.com [8] S.Hong,C.Cho, H.Lee,S.Kang,and W.Lee,"Joint configuration for physically safe human-robot interaction of serial-chain manipulators, "Mechanism and Machine Theory,vol.107.pp.246–260,2017 View at: Publisher Site Google Scholar [9].Đỗ Năng Toàn (2006), “Tái tạo đối tượng ba chiều từ hình ảnh hai chiều”, Tạp chí Tin | học Điều khiển học,Tập 22,Số 4,339-348 [10].Đỗ Năng Toàn, Trần Thanh Hiệp,Phạm Tấn Năm, Trịnh Hiền Anh (2005), “Một kỹ thuậttiếp cận tạo mơ hình chiều”,Kỷ yếu Hội thảo Quốc gia “Các vấn đề chọn lọc | CNTT”,Hải Phòng 25-27/8/2005,tr 631-642 52 PHỤ LỤC Code arduino Code gửi tín hiệu #include #include #include RF24 radio (7, 8); // nRF24L01 (CE, CSN) const byte address[6] = "00001"; // Address int angle1; int angle2; int angle3; struct Data_Pack { byte EN1_angle; byte EN2_angle; byte EN3_angle; }; Data_Pack data; void setup() { Serial.begin(9600); radio.begin(); radio.openWritingPipe(address); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_LOW); } void loop() { if (Serial.available()>0){ if (Serial.read()=='A') { 53 data.EN1_angle = Serial.parseInt(); } if (Serial.read()=='B') { data.EN2_angle = Serial.parseInt(); } if (Serial.read()=='C') { data.EN3_angle = Serial.parseInt(); } radio.write(&data, sizeof(Data_Pack)); delay(2); } } Code điều khiển robot #include #include #include #include #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #define SERVOMIN 150 // độ dài xung tối thiểu (out of 4096) #define SERVOMAX 600 // độ dài xung tối đa (out of 4096) #define USMIN 600 // độ dài micro giây tối thiểu làm tròn dựa xung tối thiểu 150 #define USMAX 2400 // độ dài micro giây 'tối đa' làm tròn dựa xung tối đa 600 #define SERVO_FREQ 50 // servo chạy 50Hz uint8_t n = 0; int a1; int a2; int a3; 54 unsigned long LastReceivedTime = 0; unsigned long CurrentTime = 0; RF24 radio(7, 8); // nRF24L01 (CE, CSN) const byte address[6] = "00001"; // creating Structure Data struct Data_Pack { byte EN1_angle; byte EN2_angle; byte EN3_angle; }; Data_Pack data; void setup() { Serial.begin(9600); Serial.println("8 channel Servo test!"); pwm.begin(); pwm.setOscillatorFrequency(27000000);// tạo xung 27MHZ pwm.setPWMFreq(SERVO_FREQ); // servo chạy 50Hz delay(10); radio.begin(); radio.openReadingPipe(0, address); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_LOW); radio.startListening(); // Set the module as receiver Serial.println("Radio is Setup for Communication"); delay(1000); } void setServoPulse(uint8_t n, double pulse) { 55 double pulselength; pulselength = 1000000; // 1,000,000 us per second pulselength /= SERVO_FREQ; // Analog servos run at ~60 Hz updates Serial.print(pulselength); Serial.println(" us per period"); pulselength /= 4096; // 12 bits of resolution Serial.print(pulselength); Serial.println(" us per bit"); pulse *= 1000000; // convert input seconds to us pulse /= pulselength; Serial.println(pulse); pwm.setPWM(n, 0, pulse); } void loop() { CurrentTime = millis(); if (CurrentTime - LastReceivedTime > 1000) { Serial.println("Time OUT"); } if (radio.available()) { radio.read(&data, sizeof(Data_Pack)); Serial.println("== InComing Data =="); a1 = 314 - data.EN1_angle; a2 = 360 - data.EN2_angle; a3 = 160 + data.EN3_angle; Serial.println(a1); Serial.println(a2); Serial.println(a3); delay(10); LastReceivedTime = millis(); pwm.setPWM(1, 0, 360); delay (500); 56 //pwm.setPWM(2, 0, 150); //delay (500); pwm.setPWM(0, 0, 315); delay (500); delay(2000); pwm.setPWM(0, 0, a1); delay (1500);//s1 quay pwm.setPWM(1, 0, a2); delay (1500); pwm.setPWM(2, 0, a3); delay(1500); pwm.setPWM(2, 0, 150); delay (500); delay(2000); pwm.setPWM(0, 0, 100); delay (500); pwm.setPWM(1, 0, 240); delay (500); pwm.setPWM(2, 0, 300); delay (1500); pwm.setPWM(2, 0, 150); delay (500); delay(2000); } else { Code python: import numpy as np import cv2 import math import time 57 import serial def Process(frame):#xử lý khung hình để trích xuất đường bao đỉnh phôi cv2.drawContours(frame, [c], -1, (0, 255, 0), 2) approx = cv2.approxPolyDP(c, 0.013 * cv2.arcLength(c, True), True) e, f, w, h = cv2.boundingRect(approx) cv2.rectangle(frame, (e - 10, f - 10), (e + w + 10, f + h + 10), (255, 128, 128), 2) return approx, c, s def Calculate(approx):#tính góc cạnh cho trường hợp đỉnh p1 = approx[0][0] p2 = approx[-1][0] p3 = approx[2][0] p4 = approx[1][0] point = [p1, p2, p3, p4] tl = tr = bl = br = point[0] for pt in point: x1 = pt[0] y1 = pt[1] if (x1 + y1 < tl[0] + tl[1]): tl = pt if (x1 - y1 > tr[0] - tr[1]): tr = pt if (x1 - y1 < bl[0] - bl[1]): bl = pt if (x1 + y1 > br[0] + br[1]): br = pt L1 = math.sqrt((tl[0] - tr[0]) ** + (tl[1] - tr[1]) ** 2) L3 = math.sqrt((br[0] - bl[0]) ** + (br[1] - bl[1]) ** 2) L2 = math.sqrt((tr[0] - br[0]) ** + (tr[1] - br[1]) ** 2) L4 = math.sqrt((bl[0] - tl[0]) ** + (bl[1] - tl[1]) ** 2) vP14 = np.array([(bl[0] - tl[0]), (bl[1] - tl[1])]) vP12 = np.array([(tr[0] - tl[0]), (tr[1] - tl[1])]) vP34 = np.array([(bl[0] - br[0]), (bl[1] - br[1])]) vP32 = np.array([(tr[0] - br[0]), (tr[1] - br[1])]) Alpha = np.arccos((vP14[0] * vP12[0] + vP14[1] * vP12[1]) / ( 58 math.sqrt(vP14[0] ** + vP14[1] ** 2) * math.sqrt(vP12[0] ** + vP12[1] ** 2))) alpha = np.degrees(Alpha) OppAlpha = np.arccos((vP34[0] * vP32[0] + vP34[1] * vP32[1]) / ( math.sqrt(vP34[0] ** + vP34[1] ** 2) * math.sqrt(vP32[0] ** + vP32[1] ** 2))) oppAlpha = np.degrees(OppAlpha) return L1, L2, L3, L4, alpha, oppAlpha def Center_Point(c):#thuật toán moment để lấy trọng tâm đường bao M = cv2.moments(c) if (M["m00"] != 0): x1 = int(M["m10"] / M["m00"]) y1 = int(M["m01"] / M["m00"]) return x1, y1 def Detect_Shape(frame):#dị hình phơi cX = None cY = None approx, c, s= Process(frame) if np.logical_and(len(approx) != None, s != None): if len(approx) == 3:#3 đỉnh cX, cY = Center_Point(c) cv2.putText(frame, 'Tam Giac', (cX, cY), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 0), 2) cv2.putText(frame, "Area:" + str(s), (cX, cY + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 0), 2) print('TAM GIAC') g = True elif len(approx) == 4:#4 đỉnh L1, L2, L3, L4, alpha, oppAlpha = Calculate(approx) if L2 != 0: T=L1/L2 if 86