Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 167 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
167
Dung lượng
7,7 MB
Nội dung
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 CNKT CƠ ĐIỆN TỬ ĐỀ TÀI NGHIÊN CỨU, THIẾT KẾ, ĐIỀU KHIỂN ROBOT DELTA PHỤC VỤ TRONG ĐÀO TẠO Giáo viên hướng dẫn: TS Bùi Thanh Lâm Sinh viên thực hiện: Nguyễn Văn Anh 2018603336 Nguyễn Trí Linh 2018603159 Trịnh Văn Hiệp 2018604648 Đoàn Thị Thùy Linh 2018605841 Hà Nội-2022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Hà Nội, ngày … tháng … năm 2022 Giáo viên hướng dẫn TS Bùi Thanh Lâm ĐÁNH GIÁ, NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Hà Nội, ngày … tháng … năm 2022 Giáo viên phản biện MỤC LỤC MỤC LỤC MỤC LỤC HÌNH ẢNH MỤC LỤC BẢNG BIỂU .10 LỜI MỞ ĐẦU 11 CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 12 1.1 Các vấn đề đặt 12 1.2 Tổng quan đề tài .12 1.2.1 Giới thiệu chung 12 1.2.2 Ưu điểm nhược điểm robot delta .15 1.2.3 Ứng dụng robot Delta .16 1.3 Ý nghĩa khoa học thực tiễn đề tài 18 1.4 Mục tiêu nghiên cứu đề tài .18 1.5 Đối tượng phạm vi nghiên cứu 19 1.6 Phương pháp nghiên cứu .19 1.6.1 Phương pháp nghiên cứu lý thuyết 19 1.6.2 Phương pháp nghiên cứu thực nghiệm 19 CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ ROBOT DELTA 20 2.1 Động học thuận .21 2.2 Động học nghịch 24 CHƯƠNG TÍNH TỐN, THIẾT KẾ VÀ CHẾ TẠO MƠ HÌNH 28 3.1 Thiết kế hệ thống khí 28 3.1.1 Mơ hình hóa robot 28 3.1.2 Tính tốn lựa chọn động 30 3.1.3 Lựa chọn cấu truyền động cho robot .35 3.1.4 Một số phận robot thông số kỹ thuật 36 3.1.5 Đánh giá bền cho số chi tiết robot .43 3.2 Thiết kế hệ thông điều khiển 54 3.2.1 Phương pháp điều khiển robot Arduino Mega 2560 54 3.2.2 Phương pháp xử lý ảnh 56 3.2.3 Thư viện OpenCV 72 3.2.4 Mô tả hệ thống điều khiển 76 3.3 Kết nối, xây dựng giao diện chương trình điều khiển 84 3.3.1 Phần mềm PyQt5, Qt Designer ngơn ngữ lập trình Python 84 3.3.2 Giao diện điều khiển 86 3.3.3 Lưu đồ thuật toán .88 CHƯƠNG KẾT LUẬN 90 4.1 Kết đạt 90 4.1.1 Đánh giá dựa phần mềm Matlab 90 4.1.2 Đánh giá chung 98 4.2 Hạn chế định hướng phát triển 98 PHỤ LỤC 100 MỤC TÀI LIỆU THAM KHẢO 166 MỤC LỤC HÌNH ẢNH Hình 1.1: Mơ hình robot song song Willard L Polard đăng kí quyền năm 1942 [7] 13 Hình 1.2: Máy kiểm tra lốp Gough Whitehall [4] 13 Hình 1.3: Sơ đồ "nền tảng Stewart" [10] 14 Hình 1.4: Robot Delta Omron [3] 15 Hình 1.5: Robot Delta cơng đoạn đóng gói sản phẩm nhà máy 16 Hình 1.6: Robot Delta cơng nghiệp [2] 16 Hình 1.7: Robot Delta sử dụng để nâng kính giúp bác sĩ phẫu thuật 17 Hình 1.8: Mơ hình thiết kế Hồi sức tim phổi(CPR) [6] 17 Hình 2.1: Cấu tạo Robot Delta [1] 20 Hình 2.2: Mơ hình động học robot delta 21 Hình 2.3: Mơ hình động học robot delta 21 Hình 2.4: Tọa độ điểm 𝐽1, , 𝐽2, , 𝐽3, mặt phẳng Oxy 22 Hình 2.5: Mơ hình động học robot Delta với thơng số cho trước 24 Hình 2.6: Minh họa động học cánh tay đòn 25 Hình 2.7: Mặt phẳng YZ 25 Hình 2.8: Quy đổi tọa độ 27 Hình 3.1: Các thơng số hình học robot Delta 28 Hình 3.2: Sơ đồ robot Delta 30 Hình 3.3: Lực tải trọng tác dụng vào robot 30 Hình 3.4: Trường hợp momen lớn tải trọng khối lượng robot tác động lên 31 Hình 3.5: Lực tác động giá di động 32 Hình 3.6: Lực tác động lên cánh tay L2 33 Hình 3.7: Các lực tác động lên cánh tay L1 33 Hình 3.8: Động Hybird Servo Leadshine 2Nm 573HBM20-1000 35 Hình 3.9: Cơ cấu chuyền động robot 36 Hình 3.10: Giá cố định 37 Hình 3.11: Giá di động 37 Hình 3.12: Cánh tay 38 Hình 3.13: Cánh tay cấu hình bình hành 38 Hình 3.14: Khung máy 39 Hình 3.15: Giác hút chân khơng 39 Hình 3.16: Bơm chân khơng 40 Hình 3.17: NVIDIA Jetson Nano Developer Kit B01 40 Hình 3.18: Camera IMX477 12.3MP 42 Hình 3.19: 16mm and 6mm Wide Angle Lens 43 Hình 3.20: Ứng suất giá cố định 43 Hình 3.21: Chuyển vị giá cố định 44 Hình 3.22: Ứng suất trục 44 Hình 3.23: Chuyển vị trục 44 Hình 3.24: Ứng suất cánh tay 45 Hình 3.25: Chuyển vị cánh tay 45 Hình 3.26: Ứng suất trục 45 Hình 3.27: Chuyển vị trục 46 Hình 3.28: Ứng suất cánh tay 46 Hình 3.29: Chuyển vị cánh tay 46 Hình 3.30: Bản vẽ lắp hệ thống 53 Hình 3.31: Arduino Mega 2560 54 Hình 3.32: Ảnh số tạo vào năm 1921 từ băng mã hóa máy in điện tín (Nguồn: McFarlane) 57 Hình 3.33: Ảnh số tạo năm 1922 từ card đục lỗ sau lần chuyên qua Đại Tây Dương (Nguồn: Mc Farlane) 57 Hình 3.34: Ảnh 15 cấp độ xám truyền từ London đến New York năm 1929 (Nguồn: McFarlane) 57 Hình 3.35: Ảnh mặt trăng đợc chụp bở tàu vũ trụ Rănger Mỹ, vào 09 09 phút sáng ngày 31/02/1964 (Nguồn: NASA) 58 Hình 3.36: Sơ đồ khối bước q trình xử lí ảnh 60 Hình 3.37 Quá trình xử lí phân tích ảnh 62 Hình 3.38 Khối xử lý phân tích ảnh 62 Hình 3.39: Ơ bàn cờ hiệu chỉnh camera 63 Hình 3.40: Độ méo ảnh 64 Hình 3.41: Hình ảnh chưa hiệu chỉnh 65 Hình 3.42: Hình ảnh chưa hiệu chỉnh 65 Hình 3.43: Hình ảnh chưa hiệu chỉnh 65 Hình 3.44: Hình ảnh chụp sau hiệu chỉnh 66 Hình 3.45: Thơng số trước hiểu chỉnh 66 Hình 3.46: Thống số sau hiệu chỉnh 66 Hình 3.47: Khơng gian màu RGB 67 Hình 3.48: Khơng gian màu HSV 67 Hình 3.49: Ảnh camera ghi lại 69 Hình 3.50: Phủ mặt nạ cho ảnh 69 Hình 3.51: Khơng gian màu HSV 69 Hình 3.52: Tọa độ thực thơng qua camera 70 Hình 3.53: Hệ tọa độ quy đổi 71 Hình 3.54: Tọa độ thực cà chua 72 Hình 3.55: Tọa độ thực 2D 72 Hình 3.56: Ảnh vật sau lọc vật xác định 75 Hình 3.57: Sơ đồ khối hệ thống 76 Hình 3.58: Sơ đồ kết nối mạch điện 77 Hình 3.59:Driver HBS57 78 Hình 3.60: Đấu nối Driver với động Servo 78 Hình 3.61: Nguồn tổ ong 24VDC 79 Hình 3.62: Bộ nguồn 12VDC 80 Hình 3.63: Cơng tắc hành trình 80 Hình 3.64: Sơ đồ kết nối cơng tắc hành trình 81 Hình 3.65: Giao diện phần mềm Qt Designer 84 Hình 3.66: Code để kết hợn Qt Designer Python 85 Hình 3.67: Giao diện 86 Hình 3.68: Mơ hình Robot Delta hoàn thiện 87 Hình 3.69: Mơ hình Robot Delta hồn thiện2 87 Hình 5.1: Mơ Matlab Simulink 90 Hình 5.2: Thơng số robot nhập vào khối động học nghịch mô Matlab 90 Hình 5.3: Góc quay động từ phương trình động học ngược 91 Hình 5.4: Sai số góc 92 Hình 5.5: Tín hiệu điều khiển 92 Hình 5.6: Đáp ứng vận tốc 92 Hình 5.7: Đáp ứng góc theta1 93 Hình 5.8: Đáp ứng góc theta2 93 Hình 5.9: Đáp ứng góc theta3 93 Hình 5.10: Góc quay động từ phương trình động học ngược 94 Hình 5.11: Sai số góc 94 Hình 5.12: Tín hiệu điều khiển 94 Hình 5.13: Đáp ứng vận tốc 95 Hình 5.14: Đáp ứng góc theta1 95 Hình 5.15: Đáp ứng góc theta2 95 Hình 5.16: Đáp ứng góc theta3 95 Hình 5.17: Góc quay động từ phương trình động học ngược 96 Hình 5.18: Sai số góc 96 Hình 5.19: Tín hiệu điều khiển 97 Hình 5.20: Đáp ứng vận tốc 97 Hình 5.21: Đáp ứng góc theta1 97 Hình 5.22: Đáp ứng góc theta2 97 Hình 5.23: Đáp ứng góc theta3 98 Hình 4.1: Giao diện Của phần mềm iRC 102 Hình 4.2: Giao diện chọn Robot để mơ 102 Hình 4.3: Giao diện phím bấm để điều khiển Robot di chuyển theo trục X, Y, Z 103 Hình 4.4: Nút Play để chạy mơ 103 Hình 4.5: Biểu tượng Window phần mềm iRC 103 Hình 4.6: Chọn Robot Delta để mơ 104 Hình 4.7: Giao diện điều khiển Robot 104 Hình 4.8: Chọn tọa độ tham chiếu cho Robot 105 Hình 4.9: Tăng, giảm tốc độ Robot 105 Hình 4.10: Các nút bấm điều khiển Robot 105 Hình 4.11: Lưu chuyển động Robot 106 Hình 4.12: Lưu chuyển động Robot lệnh Joint motion 106 Hình 4.13: Sau lưu chuyển động, phần lập trình 107 Hình 4.14: Lưu file lập trình Robot lệnh Save 108 Hình 4.15: Robot chạy mơ 108 Hình 4.16: Robot chạy mô 109 Hình 4.17: Robot chạy mơ 109 Hình 4.18: Các phím chức để điều chỉnh góc nhìn robot 110 Hình 4.19: Giao diện điều khiển Robot 111 Hình 4.20: Giao diện điều khiển Robot nút ấn 113 Hình 4.21: Chọn tốc độ bao cho Robot 113 Hình 4.22: Khu vực viết code điều khiển Robot 114 Hình 4.23: Gửi code đến Robot 115 Hình 4.24: Giao diện phần mềm Delta 116 Hình 4.25: Giao diện điều khiển Robot tay 117 Hình 4.26: Các nút ấn để điều khiển Robot di chuyển theo trục X, Y, Z 118 Hình 4.27: Ngắt kết nối với Robot lệnh DISCONECT 119 Hình 4.28: Giao diện Robot sau mở phần mềm 120 Hình 4.29: Đặt vật vị trí camera bắt ảnh vật 121 Hình 4.30: Ảnh sau chuyển sang chế độ Mask 121 Hình 4.31: Lưu thơng số sau điều chỉnh thước điều chỉnh 122 gcode=open(text,'w') gcode.write('') gcode.close() gcode=open(text,'a+') gcode.write(g) gcode.close() gcode=open(text,'a+') gcode.write('\n') gcode.close() gcode1=open(text) while True: if(self.data1=='Ok' or self.data1=='Init Success!' or self.data1=='Unknown' ): a=gcode1.readline() self.serialPort.write(a.encode()) if(a=='' or a==' '): gcode1.close() os.remove(text) break self.data1 = self.serialPort.readline().decode("utf-8").strip() def gui1(self,cy,j): #global data1,serialPort 152 if self.serialPort.is_open: time.sleep(4.6) x=np.interp(cy,(179,234),(-20,20)) y=0.825*x-3.5 a='0' b=' '+str(x)+' '+str(y)+' '+'-300' c='\nM03\n' d=' 0 -250 50 50 -250' e='\nM05\n' f=' 50 50 -300 0 -250' g=self.xuly(b)+c+self.xuly(d)+e+self.xuly(f) text='send'+str(j)+'.txt' gcode=open(text,'w') gcode.write('') gcode.close() gcode=open(text,'a+') gcode.write(g) gcode.close() gcode=open(text,'a+') gcode.write('\n') gcode.close() gcode1=open(text) while True: 153 if(self.data1=='Ok' or self.data1=='Init Success!' or self.data1=='Unknown' ): a=gcode1.readline() self.serialPort.write(a.encode()) if(a=='' or a==' '): gcode1.close() os.remove(text) break self.data1 = self.serialPort.readline().decode("utf-8").strip() def Thread_send_data(self,data): thread1=Thread(target=self.send_data,args=(data,)) thread1.start() def Thread_send_trajectory(self): thread2=Thread(target=self.send_trajectory) thread2.start() def Thread_gui_kinect_start(self,cy,j): self.thread3=Thread(target=self.gui,args=(cy,j)) self.thread3.start() def Thread_gui_kinect_start1(self,cy,j): 154 thread4=Thread(target=self.gui1,args=(cy,j)) thread4.start() def Thread_gui_kinect_stop(self): self.thread3=None def move(self,axis): if axis == 'XD': self.X-=5 elif axis =='XU': self.X+=5 elif axis =='YD': self.Y-=5 elif axis =='YU': self.Y+=5 elif axis =='ZD': self.Z-=5 elif axis =='ZU': self.Z+=5 if self.Z>-200: self.Z=-200 if self.Z