THIẾT KẾ MÔ HÌNH CÁNH TAY ROBOT GẤP VẬT ỨNG DỤNG XỬ LÝ ẢNH

77 1K 14
THIẾT KẾ MÔ HÌNH CÁNH TAY ROBOT GẤP VẬT ỨNG DỤNG XỬ LÝ ẢNH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề tài này đã được thực hiện thành công và đạt được những kết quả tốt trong việc gắp vật màu theo quy định. Đây cũng chính là mục đích chính của mô hình này, dựa trên các thuật toán mà chúng em phát triển để nó có thể phân biệt màu sắc, sau đó phân loại ra từ hỗn hợp các vật có các màu khác nhau. Để xây dựng thành công thuật toán thì chúng em cần phải dùng đến các board như Arduino Mega, Raspberry Pi 2, cảm biến siêu âm SRF05 cũng như các phần mềm hỗ trợ như: Arduino, Python,OpenCV… Về phần cơ khí, cánh tay Robot do chúng em tự thiết kế, gia công và thực hiện, cánh tay Robot là cơ cấu robot 4 khâu (và 1 khâu cố định) với 3 bậc tự do giúp nó hoạt động linh hoạt và dễ dàng trong việc tìm vật và gắp vật. Với việc ứng dụng xử lý ảnh trên board máy tính mini Raspberry và việc tương tác với Arduino, điều khiển tay gắp vật thông qua các khớp là động cơ Servo. Ta gắp sẽ gắp vật theo màu đã lập trình (ở đây chúng em sử dụng màu đỏ)

THIẾT KẾ MƠ HÌNH CÁNH TAY ROBOT GẤP VẬT ỨNG DỤNG XỬ LÝ ẢNH Sinh viên thực hiện: TRƯƠNG PHÁT ĐẠT ĐẶNG PHAN TẤN PHÁT Khóa luận trình để đáp ứng yêu cầu cấp Kỹ sư chuyên ngành Công nghệ kỹ thuật Cơ Điện Tử Giáo viên hướng dẫn: Ths.Trần Thị Kim Ngà Lời cảm ơn Em xin trân trọng cảm ơn tất quý thầy cô trường Đại học Nơng Lâm Thành phố Hồ Chí Minh suốt khóa học giảng dạy kiến thức bổ ích nói chung mơn Cơ điện tử nói riêng Em chân thành cảm ơn Trần Thị Kim Ngà tận tình giúp đỡ chúng em trình làm luận văn tốt nghiệp Em xin gửi lời cám ơn đến người thân bạn bè động viên, ủng hộ tạo cho chúng em điều kiện thuận lợi q trình hồn thành Luận văn tốt nghiệp Đặc biệt, chúng em xin cám ơn quý Thầy, Cô Hội đồng dành thời gian nhận xét, góp ý để Luận văn chúng em hoàn thiện Thành phố Hồ Chí Minh, ngày 08 tháng 06 năm 2016 Sinh viên thực hiện: Đặng Phan Tấn Phát – Trương Phát Đạt Tóm tắt Khóa luận “Thiết kế chế tạo mơ hình cánh tay Robot gắp vật ứng dụng xử lý ảnh” thực khoảng thời gian từ tháng năm 2016 tới tháng năm 2016 thành phố Hồ Chí Minh Đề tài thực thành công đạt kết tốt việc gắp vật màu theo quy định Đây mục đích mơ hình này, dựa thuật toán mà chúng em phát triển để phân biệt màu sắc, sau phân loại từ hỗn hợp vật có màu khác Để xây dựng thành công thuật tốn chúng em cần phải dùng đến board Arduino Mega, Raspberry Pi 2, cảm biến siêu âm SRF05 phần mềm hỗ trợ như: Arduino, Python,OpenCV… Về phần khí, cánh tay Robot chúng em tự thiết kế, gia công thực hiện, cánh tay Robot cấu robot khâu (và khâu cố định) với bậc tự giúp hoạt động linh hoạt dễ dàng việc tìm vật gắp vật Với việc ứng dụng xử lý ảnh board máy tính mini Raspberry việc tương tác với Arduino, điều khiển tay gắp vật thông qua khớp động Servo Ta gắp gắp vật theo màu lập trình (ở chúng em sử dụng màu đỏ) Do thời gian thực hạn chế, mức độ rộng lớn đề tài, nên dù cố gắng phương án giải u cầu mơ hình chúng em chắn khơng thể tránh khỏi thiếu sót Chúng em mong nhận đóng góp ý kiến quý thầy cô bạn bè để đề tài em hoàn thiện MỤC LỤC TRANG TỰA i LỜI CẢM ƠN ii TÓM TẮT iii MỤC LỤC …………………………………………… ………………… iv DANH SÁCH CÁC HÌNH vi DANH SÁCH CÁC BẢNG viii CHƯƠNG 1: MỞ ĐẦU … 1.1 Đặt vấn đề 1.2 Nội dung nghiên cứu CHƯƠNG 2: TỔNG QUAN 2.1 Một số ứng dụng thực tiễn Robot ……………… ………………… 2.2 Các thuật ngữ Robot ………………………………………….……… 2.3 Các thành phần mơ hình ……………………………… …… 2.3.1 Arduino 2.3.2 Raspberry 2.3.3 Cảm biến siêu âm 10 2.3.4 Camera ……………………………………………………….…… 12 2.3.5 Servo ………………………………………………………….…… 13 2.4 Lý thuyết xử lý ảnh 14 2.4.1 Hệ thống xử lý ảnh ……………… 15 2.4.2 Thu nhận ảnh số hóa 15 2.4.3 Lưu trữ ảnh 16 2.4.4 Phân tích ảnh 16 2.4.5 Quá trình nhận dạng trích đối tượng 20 2.5 Phần mềm hỗ trợ xử lý ảnh OpenCV 21 2.6 Vài nét ngôn ngữ Python 24 CHƯƠNG 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 28 3.1 Thời gian thực 28 3.2 Ý tưởng thiết kế 28 3.3 Nội dung nghiên cứu vấn đề cần thực 28 CHƯƠNG 4: KẾT QUẢ VÀ THẢO LUẬN 29 4.1 Sơ đồ nguyên lý ………… 29 4.1.1 Mục tiêu thiết kế 30 4.1.2 Nguyên lý hoạt động 30 4.2 Thiết kế chế tạo mơ hình cánh tay Robot 31 4.2.1 Xây dựng mơ hình 3D 31 4.2.2 Hình ảnh thực tế mơ hình ………………………………… …… 32 4.2.3 Các thơng số hình học mơ hình ………………….………….… 32 4.3 Xử lý ảnh, nhận dạng đối tượng xuất giá trị tọa độ 33 4.3.1 Sơ đồ khối xử lý ảnh đối tượng 33 4.3.2 Giải thuật xử lý ảnh nhận dạng xuất giá trị tọa độ …….………… 34 4.3.3 Nhận dạng đối tượng …………….………………….…………… … 35 4.3.4 Xuất giá trị tọa độ tâm đối tượng ……….……………… ………… 37 4.4 Xác định khoảng cách từ tay gắp đến đối tượng 37 4.5 Tính tốn động học Robot 40 4.5.1 Phương trình động học thuận Robot 40 4.5.2 Bài toán động học ngược Robot 43 4.6 Điều khiển cánh tay robot gắp vật ………………………………………… 44 4.6.1 Lưu đồ giải thuật điều khiển cánh tay Robot …………………… … 44 4.6.2 Cơ cấu chấp hành – tay gấp …………………………………….…… 45 4.6.3 Kết nối cảm biến siêu âm với Raspberry …………………………… 46 4.6.4 Sơ đồ nối dây động Servo Arduino ………………………… 47 4.7 Kết khảo nghiệm thực tế …………………………………………….… 48 CHƯƠNG 5: KẾT LUẬN VÀ ĐỀ NGHỊ 51 5.1 Kết luận 51 5.2 Hướng phát triển đề tài 52 TÀI LIỆU THAM KHẢO 53 PHỤ LỤC 54 DANH SÁCH CÁC HÌNH Hình 2.1: Mơ hình Robot tự hành giám sát vườn Hình 2.2: Robot thu hoạch dâu tây Hình 2.3: Cánh tay Robot lắp ráp oto Hình 2.4: Cánh tay Robot cắt kim loại Hình 2.5: Các thành phần Robot Hình 2.6: Arduino Mega ………… Hình 2.7: Raspberry Pi B+ Hình 2.8: Sơ đồ chân Raspberry Pi B+ 10 Hình 2.9: Cảm biến siêu âm SRF-05 10 Hình 2.10: Bảng trạng thái cấp xung cho chân SRF-05 23 Hình 2.11: Camera 12 Hình 2.12: Servo RC MG996R 13 Hình 2.13: Bảng trạng thái cấp chiều quay Servo qua xung PWM 14 Hình 2.14: Sơ đồ hệ thống xử lý ảnh 15 Hình 2.15: Mơ hình màu RGB 17 Hình 2.16: Mơ hình màu HLV 17 Hình 2.17: Mơ hình màu HLS 18 Hình 2.18: Biến đổi Fourier 19 Hình 2.19: Sơ đồ nhận dạng trích đối tượng 21 Hình 2.20: Lịch sử phát triển OpenCV 22 Hình 2.21: Cấu trúc OpenCV 23 Hình 4.1: Sơ đồ khối xử lý ảnh điều khiển 29 Hình 4.2: Hình ảnh 3D ………………………… …………………… 31 Hình 4.3: Hình ảnh thực tế mơ hình cánh tay Robot gắp vật 32 Hình 4.4: Sơ đồ khối xử lý ảnh đối tượng 33 Hình 4.5: Giải thuật xử lý ảnh nhận dạng nhận giá trị tọa độ 34 Hình 4.6: Hình ảnh camera ảnh HSV khơng có đối tượng 35 Hình 4.7: Hình ảnh camera ảnh HSV có đối tượng 35 Hình 4.8: Hình ảnh chứa đối tượng điều chỉnh tâm camera 36 Hình 4.9: Ảnh có chứa đối tượng hệ tọa độ (x,y), bán kính đối tượng 37 Hình 4.10: Sơ đồ khối xác định khoảng cách từ tay gắp tới đối tượng 38 Hình 4.11: Giá trị khoảng cách vật xa tay gắp 38 Hình 4.12: Giá trị khoảng cách vật gần tay gắp 39 Hình 4.13: Hệ tọa độ gắn lên khâu 40 Hình 4.14: Các biến khớp tay máy khâu 43 Hình 4.15: Lưu đồ giải thuật điều khiển cánh tay Robot 44 Hình 4.16: Tay gấp ……… … 45 Hình 4.17: Sơ đồ nối dây cảm biến siêu âm với Raspberry ảnh thực tế … 46 Hình 4.18: Sơ đồ nối dây Servo với Arduino 47 DANH SÁCH CÁC BẢNG Bảng 4.1: Các thơng số hình học mơ hình cánh tay Robot 32 Bảng 4.2: Bảng thông số DH .40 Bảng 4.3: Bảng khảo nghiệm xử lý ảnh 48 Bảng 4.4: Bảng khảo nghiệm mức độ xác hệ thống 49 Bảng 4.5: Bảng khảo nghiệm thời gian đáp ứng 50 Chương MỞ ĐẦU 1.1.Đặt vấn đề: Ngày xã hội không ngừng phát triển, ngày trở nên đại, khoa học kỹ thuật ngày tân tiến, đòi hỏi người áp dụng, thay phương tiện hình thức sản xuất khác để bắt kịp thay đổi Tuy vậy, khơng phải ngẫu nhiên mà người ta thay nó, họ thấy đạt suất cao hơn, hoạt động xác hơn, tuổi thọ cao với chi phí thấp Trong lĩnh vực cơng nghiệp – tự động hóa, nhà xưởng, cơng ty, việc phân loại sản phẩm theo màu sắc, hay phân loại phế phẩm khỏi băng chuyền sản xuất cơng đoạn ln phải có Thay sử dụng sức lao động người(phân loại mắt thường), nên sử dụng camera để thay ta làm công việc Với đề tài nghiên cứu lần này, chúng em thiết kế, chế tạo mô hình cánh tay Robot có khả gắp vật có màu khác Mơ hình cánh tay Robot phát vật có màu theo quy định (màu đỏ) phân loại chúng Mơ hình bao gồm cánh tay Robot gắn camera cảm biến siêu âm để phát vật, điều khiển Arduino máy tính nhúng Raspberry 1.2 Nội dung nghiên cứu: Hiện nay, Robot diện tất lĩnh vực đời sống, từ điện tử, khí, y tế giáo dục, bảo vệ mơi trường, khai thác khống sản, thăm dò địa chất, hay lĩnh vực công nghiệp, nông nghiệp như: tưới cây, thu hoạch nơng sản, bắt sâu, trì nhiệt độ - độ ẩm, phân loại sản phẩm, đóng gói, vận chuyển,… - Bài giảng Kỹ thuật người máy – Nguyễn Hữu Cường – Đại học Cần Thơ, 2009 Tài liệu tiếng Anh: - OpenCV Computer Vision Application Programming Cookbook - Robert Laganière, 2011 - Raspberry Pi Robotic Projects - Richard Grimmett, 2014 - Getting Started with Raspberry Pi - Matt Richardson and Shawn Wallace, 2013 - The Offial RASPBERRY PI PROJECTS BOOK Tài liệu Internet: - www.arduino.cc - www.arduino.vn - www.github.com - www.innovationclub.vn Phụ lục 54 import RPi.GPIO as GPIO import cv2 import numpy as np import os from operator import itemgetter from Arduino import Arduino import serial ##################################################################### ############################## def main(): board = Arduino("9600", port="/dev/tty.usbmodemfa141") GPIO.setmode(GPIO.BCM) # tao chan GPIO la chan so, khong phai chan vat ly capWebcam = cv2.VideoCapture(0) # tao video hih anh truyen tu camera print "default resolution = " + str(capWebcam.get(cv2.CAP_PROP_FRAME_WIDTH)) + "x" + str(capWebcam.get(cv2.CAP_PROP_FRAME_HEIGHT)) capWebcam.set(cv2.CAP_PROP_FRAME_WIDTH, 320.0) capWebcam.set(cv2.CAP_PROP_FRAME_HEIGHT, 240.0) 55 #tao anh 320x240 de xu ly nhanh print "updated resolution = " + str(capWebcam.get(cv2.CAP_PROP_FRAME_WIDTH)) + "x" + str(capWebcam.get(cv2.CAP_PROP_FRAME_HEIGHT)) if capWebcam.isOpened() == False: # Neu khong nhan tin hieu tu camera print "Loi: CapWebcam khong duoc ket noi\n\n" # in thong bao neu khong nhan tin hieu os.system("pause") return # end if intXFrameCenter = int(float(capWebcam.get(cv2.CAP_PROP_FRAME_WIDTH)) / 2.0) intYFrameCenter = int(float(capWebcam.get(cv2.CAP_PROP_FRAME_WIDTH)) / 2.0) #set toa tam khung anh Chuongtrinhtinhkhoangcach(cm) while cv2.waitKey(1) != 27 and capWebcam.isOpened blnFrameReadSuccessfully, imgOriginal = capWebcam.read() if not blnFrameReadSuccessfully or imgOriginal is None: 56 print "Loi: frame\n" os.system("pause") break # end if imgHSV = cv2.cvtColor(imgOriginal, cv2.COLOR_BGR2HSV) #tao anh HSV imgThreshLow = cv2.inRange(imgHSV, np.array([0, 135, 135]), np.array([19, 255, 255])) imgThreshHigh = cv2.inRange(imgHSV, np.array([168, 135, 135]), np.array([179, 255, 255])) imgThresh = cv2.add(imgThreshLow, imgThreshHigh) imgThresh = cv2.GaussianBlur(imgThresh, (3, 3), 2) imgThresh = cv2.dilate(imgThresh, np.ones((5,5),np.uint8)) imgThresh = cv2.erode(imgThresh, np.ones((5,5),np.uint8)) intRows, intColumns = imgThresh.shape 57 circles = cv2.HoughCircles(imgThresh, cv2.HOUGH_GRADIENT, 3, intRows / 4) if circles is not None: # Khi nhan doi tuong, co doi tuong sortedCircles = sorted(circles[0], key = itemgetter(2), reverse = True) largestCircle = sortedCircles[0] x, y, radius = largestCircle #in (x,y) va radius cua vong tron lon nhat thoi print "Vi tri bong x = " + str(x) + ", y = " + str(y) + ", radius = " + str(radius) # in vi tri bong x1 = fabs( x – intXFrameCenter) y1 = fabs( y – inYFrameCenter) Chuongtrinhtinhkhoangcach(cm) board.SoftwareSerial.begin(0, 7, "9600") board.SoftwareSerial.write(“a”) 58 board.SoftwareSerial.begin(0, 7, "9600") board.SoftwareSerial.write(y%.1fy %) board.SoftwareSerial.write(cm%.1fxcm%) response_char = board.SoftwareSerial.read() #tao ham truyen cac thong so den Arduino de xu ly cv2.circle(imgOriginal, (x, y), 3, (0, 255, 0), -1) # tao hinh tron cham nho mau xanh tai tam cua doi tuong co doi tuong cv2.circle(imgOriginal, (x, y), radius, (0, 0, 255), 3) # tao hinh tron to mau bao quanh doi tuong co doi tuong # end if cv2.imshow("imgOriginal", imgOriginal) cv2.imshow("imgThresh", imgThresh) # end while 59 #tao cua so anh cv2.destroyAllWindows() # remove windows from memory return # end main ##################################################################### ############################## import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO_TRIGGER = 16 GPIO_ECHO = 18 GPIO.setup(GPIO_TRIGGER,GPIO.OUT) # Trigger GPIO.setup(GPIO_ECHO,GPIO.IN) # Echo def Chuongtrinhtinhkhoangcach(cm): GPIo_Output(GPIO_TRIGGER, False) #time.sleep(0.001) # Gui di xung 10us GPIo_Output(GPIO_TRIGGER, True) time.sleep(0.00001) 60 GPIo_Output(GPIO_TRIGGER, False) start = time.time() while GPIO.input(GPIO_ECHO)==0: start = time.time() while GPIO.input(GPIO_ECHO)==1: stop = time.time() # Tinh toan khoang thoi gian time= stop-start distance = time* 34400 khoangcach = distance / return distance; while True: cm = khoang_cach() print "Khoang cach : %.1f" %cm # end function ##################################################################### ############################## if name == " main ": main() 61 Code Arduino: #include #include Servo myservo1, myservo2, myservo3,myservo4; int pos1 ; int pos2 ; int pos3 ; int pos4 ; int xcent = 160; int ycent = 160; double b1; double c1; #define INPUT_SIZE char input[INPUT_SIZE + 1]; void setup() { myservo1.attach(9); myservo2.attach(10); myservo3.attach(11); myservo4.attach(13); Serial.begin(9600); 62 Serial.setTimeout(20); while (!Serial) { ; } } void loop() { myservo4.write(13); delay(1000); myservo2.write(90); delay(1000); myservo3.write(0); delay(2000); for(pos1 = 0; pos1 = 0; pos1 -= 1) { myservo1.write(pos1); delay(70); } delay(500); if (Serial.available() > 0) { byte packetSIZE = Serial.readBytes(input, INPUT_SIZE); input[packetSize] = 0; command = strtok(input, "&"); while (command != 0) { separator = strchr(command, ':'); if (separator != 0) { int KC = atoi(command); ++separator; int value = atoi(separator); } if (value < xcent) { b=fabs(xcent – value); b1=arcos(KC/b); 64 for(pos1 = pos1; pos1 >= b1; pos1 -= 1) { myservo1.write(pos1); delay(70); } } delay(500); else { b=fabs(xcent – value); b1=arcos(KC/b); b1=pos2+b1; for(pos1 = pos1; pos1

Ngày đăng: 21/09/2019, 10:27

Từ khóa liên quan

Mục lục

  • TRƯƠNG PHÁT ĐẠT

  • ĐẶNG PHAN TẤN PHÁT

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan