1. Trang chủ
  2. » Luận Văn - Báo Cáo

Robot_Bám_Line_Finall (1).Pdf

88 2 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 88
Dung lượng 3,6 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 ĐẠI HỌC CHUYÊN NGÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI Nghiên Cứu, Thiết Kế Và Chế Tạo Robot Bám Line Ứng Dụng Công[.]

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 ĐẠI HỌC CHUYÊN NGÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: Nghiên Cứu, Thiết Kế Và Chế Tạo Robot Bám Line Ứng Dụng Công Nghệ Xử Lý Ảnh Cán hướng dẫn: ThS Nhữ Quý Thơ Sinh viên thực hiện: Phạm Duy Khánh 2019601348 Nguyễn Văn Minh 2019601463 Lê Anh Phương 2019600058 Hà Nội-2023 BỘ CÔNG THƯƠNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀNỘI Độc lập - Tự - Hạnh phúc PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGÀNH CÔNG NGHỆ KỸ THUẬT CƠ ĐIỆN TỬ Họ tên sinh viên: Phạm Duy Khánh Mã SV: 2019601348 Lớp: CĐT Khóa:14 Nguyễn Văn Minh Mã SV: 2019601463 Lớp: CĐT Khóa:14 Lê Anh Phương Mã SV: 2019600058 Lớp: CĐT Khóa:14 Tên đề tài: Nghiên cứu, thiết kế chế tạo robot bám line ứng dụng công nghệ xử lý ảnh Mục tiêu đề tài: - Tìm hiểu tổng quan hệ thống - Xây dựng mơ hình hệ thống khí - Thiết kế hệ thống điện, điều khiển hệ thống - Tích hợp hệ thống xây dựng giải pháp điều khiển - Đánh giá chất lượng hệ thống Kết dự kiến - Quyển báo cáo nghiên cứu, thiết kế chế tạo robot bám line ứng dụng công nghệ xử lý ảnh Các vẽ chế tạo khí, vẽ sơ đồ nguyên lý, sơ đồ dây hệ thống điều khiển Bản vẽ lưu đồ thuật toán chương trình điều khiển Mơ hình thực robot Thời gian thực hiện: từ 06/03/2023 đến 07/05/2023 GIÁO VIÊN HƯỚNG DẪN TRƯỞNG KHOA (Ký ghi rõ họ tên) Ths Nhữ Quý Thơ PGS.TS Hoàng Tiến Dũng NỘI DUNG THỰC HIỆN Bố cục thuyết minh đề tài: Nội dung nghiên cứu SV thực Chương 1: Giới thiệu chung robot bám line ứng dụng công nghệ xử lý ảnh 1.1 Lịch sử nghiên cứu Phạm Duy Khánh 1.2 Các vấn đề đặt Nguyễn Văn Minh 1.3 Phương pháp nghiên cứu Lê Anh Phương 1.4 Giới hạn, phạm vi nghiên cứu 1.5 Ý nghĩa thực tiễn Chương 2: Cơ sở lý thuyết robot bám line ứng dụng công nghệ xử lý ảnh Phạm Duy Khánh 2.1 Công nghệ xử lý ảnh ứng dụng Nguyễn Văn Minh 2.2 Hệ thống chấp hành Lê Anh Phương 2.3 Hệ thống điện, điện tử 2.4 Hệ thống điều khiển Chương 3: Tính tốn, thiết kế robot bám line ứng dụng cơng nghệ xử lý ảnh 3.1 Thiết kế hệ thống khí Phạm Duy Khánh 3.2 Thiết kế hệ thống điện, điều khiển Nguyễn Văn Minh 3.3 Xây dựng chương trình điều khiển Lê Anh Phương Chương 4: Chế tạo mơ hình và đánh giá robot bám line ứng dụng công nghệ xử lý ảnh 4.1 Chế tạo mơ hình hệ thống khí 4.2 Chế tạo hệ thống điện, điều khiển Phạm Duy Khánh 4.3 Thử nghiệm đánh giá hệ thống Nguyễn Văn Minh Kết luận và phương hướng phát triển Lê Anh Phương Bản vẽ: TT Tên vẽ Khổ giấy Số lượng SV thực Bản vẽ lắp hệ thống khí A3 Phạm Duy Khánh Bản vẽ hệ thống điều khiển A3 Nguyễn Văn Minh Lưu đồ thuật toán điều khiển A3 Lê Anh Phương Mơ hình/ sản phẩm (nếu có) Trình bày ngắn gọn thơng số kỹ thuật mơ hình/ sản phẩm Nội dung cơng việc SV thực Chế tạo, lắp ráp các cấu chuyển động khí, khung giá Phạm Duy Khánh đỡ mơ hình hệ thống Lắp ráp mạch điều khiển, mạch động lực Nguyễn Văn Minh Lập chương trình thử nghiệm Lê Anh Phương NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Hà Nội, ngày … tháng … năm 2023 Giáo viên hướng dẫn ThS Nhữ Quý Thơ ĐÁ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 2023 Giáo viên phản biện MỤC LỤC CHƯƠNG Giới thiệu chung robot bám line ứng dụng công nghệ xử lý ảnh 1.1 Lịch sử nghiên cứu .1 1.2 Các vấn đề đặt 1.3 Phương pháp nghiên cứu 1.4 Giới hạn phạm vi nghiên cứu 1.4.1 Giới hạn .4 1.4.2 Phạm vi nghiên cứu 1.5 Ý NghĩaThực tiễn đề tài CHƯƠNG Cơ sở lý thuyết robot bám line ứng dụng công nghệ xử lý ảnh 2.1 Công nghệ xử lý ảnh ứng dụng .6 2.1.1 Phương pháp thu nhận ảnh 2.1.2 Phương pháp lọc ảnh 2.1.3 Phương pháp lọc, tách màu 2.1.4 Phương pháp phân ngưỡng màu sắc 2.1.5 Ứng dụng robot bám line 10 2.2 Hệ thống chấp hành 12 2.2.1 Động DC 12 2.2.2 Hiển thị thông tin 13 2.3 Hệ thống điện, điện tử 14 2.3.1 Module điều khiển động LH298 14 2.3.2 Camera 16 2.3.3 Nguồn điện 17 2.3.4 Module hạ áp LM2596 18 2.4 Hệ thống điều khiển 20 2.4.1 Raspberry Pi 20 2.4.2 Arduino Uno R3 23 2.4.3 Phầm mềm điều khiển .26 CHƯƠNG Tính tốn, thiết kế robot bám line ứng dụng công nghệ xử lý ảnh 29 3.1 Thiết kế hệ thống khí 29 3.1.1 Sơ đồ kết cấu robot bám line chức 29 3.1.2 Tính tốn lựa chọn động 33 3.1.3 An tồn robot bám line ứng dụng cơng nghệ xử lý ảnh .36 3.2 Thiết kế hệ thống điện, điều khiển 37 3.2.1 Sơ đồ khối hệ thống 37 3.2.2 Sơ đồ nguyên lý hoạt động hệ thống .38 3.2.3 Hệ thống điện điều khiển điều hướng 41 3.2.4 Hệ thống nhận diện line 43 3.3 Thiết kế chương trình điều khiển .45 3.3.1 Thuật toán điều khiển robot bám line .45 3.3.2 Thuật toán nhận diện line 46 3.3.3 Các bước xây dựng chương trình điều khiển 50 CHƯƠNG Chế tạo mơ hình và đánh giá robot bám line ứng dụng công nghệ xử lý ảnh 53 4.1 Chế tạo mơ hình hệ thống khí .53 4.2 Chế tạo hệ thống điện, điều khiển 53 4.3 Thử nghiệm đánh giá hệ thống 55 Kết luận Tài liệu tham khảo DANH MỤC HÌNH ẢNH Hình 1.1 Robot bám line Hình 2.1 Hình ảnh đọc từ camera sử dụng opencv Hình 2.2 Ảnh áp dụng lọc Gaussian .8 Hình 2.3 Khơng gian màu RGB Hình 2.4 Khơng gian màu HSV Hình 2.5 Hình chuyển đổi ảnh sang khơng gi HSV Hình 2.6 Hình phân ngưỡng màu sắc 10 Hình 2.7 Robot phục vụ di chuyển đường line 11 Hình 2.8 Áp dụng xử lý ảnh nhận line 11 Hình 2.12 Động điện chiều 13 Hình 2.13 Laptop sử dụng để hiển thị thông tin từ camera 14 Hình 2.14 Modul điều khiển LH298 .15 Hình 2.15 Camera A870C 17 Hình 2.16 Pin Lipo3S 17 Hình 2.17 Module hạ áp LM2596 18 Hình 2.18 Bảng trạng thái Module hạ áp LM2596 .19 Hình 2.19 Cấu hình phần cứng Raspberry Pi Module B+ 22 Hình 2.20 Arduino Uno R3 23 Hình 2.21 Sơ đồ chân Arduino Uno R3 25 Hình 2.9 Giao diện phầm mềm VNC 27 Hình 2.10 Giao diện phầm mềm python .27 Hình 2.11 Giao diện phầm mềm arduino IDE 28 Hình 3.1 Kết cấu khối 3D robot bám line .29 Hình 3.2 Đế robot 30 Hình 3.3 Bánh chủ động 31 Hình 3.4 Bánh bị động 31 Hình 3.5 Camera 32 Hình 3.6 Khung robot 32 Hình 3.7 Sơ đồ đặt lực 33 Hình 3.8 Sơ đồ khối hệ thống 37 Hình 3.9 Sơ đồ nguyên lý 38 Hình 3.10 Sơ đồ mạch điện hệ thống robot bám line 39 Hình 3.11 Lưu đồ thuật tốn hệ thống 40 Hình 3.12 Sơ đồ mạch hệ thống điều khiển điều hướng 41 Hình 3.13 Thuật toán điều khiển vi điều khiển .42 Hình 3.14 Sơ đồ mạch điện hệ thống nhận diện line 43 Hình 3.15 Lưu đồ thuật toán nhận diện line 44 Hình 3.16 Ảnh thu nhận 46 Hình 3.17 Điều chỉnh không gian màu HSV 46 Hình 3.18 Cung cấp phạm vi giá trị cần sử dụng để tìm line 47 Hình 3.19 Xác định đường biên ảnh 47 Hình 3.20 Xác định trọng tâm line trọng tâm khung hình 48 Hình 3.21 Giá trị nhị phân line cong .48 Hình 3.22 Ba trường hợp mà phương pháp nhận diện 49 Hình 3.23 Kết nối qua mạng wifi 50 Hình 3.24 Set up hệ điều hành .50 Hình 3.25 Ghi hệ điều hành vào thẻ nhớ .51 Hình 3.26 Kết nối với Pi thông qua ssh 51 Hình 3.29 Enable VNC 52 Hình 3.30 Kết nối máy tính với Pi .52 KẾT LUẬN Sau thời gian thực nghiên cứu, chế tạo, lắp ráp mơ hình đồ án tốt nghiệp cố gắng, nhiệt huyết tất thành viên nhóm hướng dẫn, giúp đỡ nhiệt tình thầy ThS Nhữ Q Thơ, nhóm hoàn thành đồ án tốt nghiệp tiến độ đáp ứng yêu cầu đề thu kết quả: - Xây dựng mơ hình hệ thống khí - Thiết kế hệ thống điện, điều khiển hệ thống - Tìm hiểu đưa giải pháp cho hệ thống robot ổn định - Thiết lập hệ thống giám sát đường line laptop - Hệ thống hoạt động đáp ứng theo yêu cầu thiết kế - Hiểu thuật toán xử lý ảnh - Hiểu ngơn ngữ lập trình python - Hiểu cách giao tiếp vi điều khiển với - Tính toán chọn động cho robot - Mơ hình nhỏ gọn, có tính thẩm mĩ , an toàn, dễ dàng sử dụng - Hiểu nguyên lí hoạt động động các modun Ngồi ra, bên cạnh mục tiêu đạt cịn số vấn đề nhóm chưa nghiên cứu triệt để - Tốc độ thu nhận ảnh xử lý ảnh delay - Tốc độ động chạy khơng nhanh, chưa hiệu chỉnh tối ưu hóa code điều khiển tốc độ động Việc thực thành cơng mơ hình đồ án cịn giúp nâng cao tinh thần làm việc nhóm, nâng cao tinh thần học hỏi tìm tịi, bước đà cho phát triển thân sau TÀI LIỆU THAM KHẢO [1] Pgs.Ts Nguyễn Linh Giang, Giáo trình xử lý ảnh, Đại Học Bách Khoa Hà Nội, 2018 [2] ThS Lê Ngọc Duy, Giáo trình Cảm biến hệ thống đo, Đại Học Công Nghiệp Hà Nội, 2019 [3] Nguyễn Thị Phương Hà(Chủ biên), Lý thuyết điều khiển tự động, Đại Học Quốc Gia TP Hồ Chí Minh, 2016 [4] N T T Hường, Sức bền vật liệu, Đại Học Công Nghiệp Hà Nội, 2011 [5] GS TS Trần Đình Thám, Cơ học kỹ thuật, Đại Học Quốc Gia Hà Nội, 2019 [6] Lê Thị Thủy (Chủ biên), Giáo trình xử lý ảnh, Đại Học Công Nghiệp Hà Nội, 2019 PHỤ LỤC Code xử lý ảnh import cvzone from cvzone.ColorModule import ColorFinder import cv2 import serial import numpy as np class mau(): def init (self): super(). init () self.ser = serial.Serial('/dev/ttyACM0','9600') self.myColorFinder = ColorFinder(False) self.direction1='' self.no_direction=False self.send_data='' self.time=0 self.hsvVals = {'hmin': 0, 'smin': 0, 'vmin': 215, 'hmax': 179, 'smax': 56, 'vmax': 255} def run(self): cap = cv2.VideoCapture(0) cap.set(3, 640) cap.set(4, 480) while True: send='' success, img = cap.read() h, w, _ = img.shape #img=img[200:480,0:640] imgColor, mask = self.myColorFinder.update(img, self.hsvVals) imgContour, contours = cvzone.findContours(img, mask) data=(0,0,0) if contours: data = contours[0]['center'][0], \ h - contours[0]['center'][1], \ int(contours[0]['area']) direction=self.direction(int(data[0])) distance=self.distance(int(data[0])) cv2.line(imgContour,(int(data[0]),int(data[1])),(320,int(data[1])),(0,255,0 ),3) #cv2.putText(imgContour,str(abs(int(data[0])320)),((int(data[0])+320)/2,int(data[1])),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0 ,0),3,cv2.LINE_AA) point_x=50 point_y=50 point=(point_x,point_y) dis=int(data[0]-320) angle=np.interp(dis,(-320,320),(-90,90)) string_angle='Angle: '+str(angle) string_distance='Distance: '+str(dis) cv2.putText(img=imgContour,text=string_angle,org=point,fontFace=cv2.FONT_HE RSHEY_DUPLEX,fontScale=1.0,color=(0,255,0),thickness=1) cv2.putText(img=imgContour,text=string_distance,org=(50,100),fontFace=cv2.F ONT_HERSHEY_DUPLEX,fontScale=1.0,color=(0,255,0),thickness=1) cv2.line(imgContour,(320,0),(320,480),(0,255,0),3) #a=self.ser.read() #print(a) if data[0]==0: self.time=self.time+1 if self.time==150: self.ser.write(b'4000') break if data[0]==0 and self.no_direction==True: self.send_data=self.none_data(self.direction1) self.no_direction=False elif data[0]!=0: self.time=0 self.send_data=direction+distance self.no_direction=True self.direction1=direction self.ser.write(self.send_data.encode()) self.ser.reset_input_buffer() self.ser.reset_output_buffer() imgStack = cvzone.stackImages([mask, imgContour], 2, 1) cv2.imshow("Image", imgStack) if cv2.waitKey(1) & 0xff==ord('q'): cv2.destroyAllWindows() break def direction(self,x): if int(x)-320>0: direc='1' #T elif int(x)-320==0: direc='3' #G elif int(x)==0: direc='4' #K else: direc='2' #P return direc def distance(self,x): dis=abs(x-320) dis=np.interp(dis,(0,320),(0,30)) dis=int(dis) if dis>=10 and dis10){ PID(); timeLast=millis(); } runMotor(direction, angle); } void runMotor(uint8_t dir, uint8_t ang) { if(angle>30) angle=30; if(angle=30) rightVelocity = 0; break; case 2: leftVelocity = LEFT_BALANCE-uint8_t(ang)*3; if(ang>=30) leftVelocity = 0; rightVelocity = RIGHT_BALANCE+uint8_t(ang)+5; break; case 3: leftVelocity = LEFT_BALANCE+8; rightVelocity = RIGHT_BALANCE+8; break; case 4: leftVelocity = 0; rightVelocity = 0; break; } if(leftVelocity>TOC_DO_GIOI_HAN) leftVelocity=TOC_DO_GIOI_HAN; if(leftVelocityTOC_DO_GIOI_HAN) rightVelocity=TOC_DO_GIOI_HAN; if(rightVelocity=4 break; } if(receiveString!="" && receiveString.length()==4) Serial.println(receiveString); if(receiveString.length()==4) { directionString = receiveString[0]; direction = directionString.toInt(); angle = receiveString.toInt()-1000*direction } if(receiveString.length()==4) receiveString=""; } void Demxung() { xung++; } void Demxung2() { xung2++; } void PID() { //double E_2, E1_2, E2_2, out0_2; tocdo=((xung/200)*(1/T)*60); tocdo2=((xung2/200)*(1/T)*60); xungRef=xung; xungRef2=xung2; xung=0; xung2=0; E = tocdodat - tocdo; E_2 = tocdodat2 - tocdo2; alpha = 2*T*Kp + Ki*T*T + 2*Kd; alpha2 = 2*T*Kp2 + Ki2*T*T + 2*Kd2; beta = T*T*Ki - 4*Kd - 2*T*Kp; beta2 = T*T*Ki2 - 4*Kd2 - 2*T*Kp2; gamma = 2*Kd; gamma2 = 2*Kd2; Output = (alpha*E + beta*E1 + gamma*E2 + 2*T*LastOutput)/(2*T); Output2 = (alpha2*E_2 + beta*E1_2 + gamma*E2_2 + 2*T*LastOutput2)/(2*T); LastOutput = Output; LastOutput2 = Output2; E2=E1; E1=E; E2_2=E1_2; E1_2=E_2; if(xungRef

Ngày đăng: 24/05/2023, 15:37

w