1. Trang chủ
  2. » Tất cả

Hệ thống lưu kho tự động và quản lý hàng hóa ứng dụng iot = iot base automated storage and retrieval system

100 54 6
Tài liệu đã được kiểm tra trùng lặp

Đ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 100
Dung lượng 2,08 MB

Nội dung

ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CƠ KHÍ LUẬN VĂN THẠC SĨ Hệ thống lưu kho tự động quản lý hàng hoá ứng dụng IoT IoT Base Automated Storage and Retrieval System NGUYỄN VĂN UY Uy.NV202611M@sis.hust.edu.vn Chuyên ngành Kỹ thuật Cơ điện tử Giảng viên hướng dẫn: TS Nguyễn Thành Hùng Khoa: Cơ Điện Tử Nhóm chun mơn: Robot Chữ ký GVHD Hà Nội 10/2022 Lời cảm ơn Em xin chân thành cảm ơn quý thầy, Khoa Cơ khí trang bị cho em kiến thức cần thiết thời gian học tập, nghiên cứu trường để hồn thành tốt luận văn Đặc biệt em xin cảm ơn hướng dẫn tận tình giảng viên hướng dẫn Tiến sĩ Nguyễn Thành Hùng giúp em giải đáp khúc mắc q trình hồn thành luận văn chỉnh sửa giải pháp cho hệ thống Trong q hình hồn thành luận văn khơng tránh khỏi vấn đề thiếu sót, em mong nhận đóng góp ý kiến thầy để luận văn hồn thiện Chúc q thầy cô sức khoẻ công tác tốt công việc nghiên cứu đào tạo Tóm tắt nội dung luận văn Nội dung luận văn nhằm giải toán hệ thống lưu xuất kho sản xuất tự động Cụ thể thiết kế hệ thống khí robot lấy hàng giá lưu trữ hàng hệ thống điều khiển robot vận chuyển Chương trình tạo mã giải mã QR code với xử lý ảnh để đo kích thước độ lệch góc tâm hàng giúp quản lý, phân loại hàng hoá dễ dàng Cuối hệ thống IoT xây dựng trang web để giám sát quản lý liệu trình hoạt động kho hàng thiết bị mà có kết nối mạng tài khoản kiểm tra tình trạng kho hàng Phương pháp thực hiện: Dựa lý thuyết thuật tốn phương pháp xử lý ảnh để đo kích thước, độ lệch hàng sau tạo mã QR code để phân loại hàng Những liệu chương trình xử lý điều khiển rơ bốt xuất nhập kho, cuối gửi thông tin lên sở liệu internet để lưu trữ quản lý Công cụ sử dụng: Arduino IDE – Arduino MEGA, Window form – C#, PyCharm – OpenCV, PHP Laravel Kết đạt luận văn đáp ứng yêu cầu đặt cho hệ thống lưu kho quản lý hàng hoá tự động Tính khoa học thực tiễn có ý nghĩa cao hệ thống phân loại nhập hàng tự động quản lý hàng hoá Định hướng phát triển tăng độ xác cho hệ xử lý ảnh học sâu xây dựng trang web tương tác với người dùng tối ưu Hà Nội, Ngày … Tháng … Năm 2022 Học viên thực MỤC LỤC Danh mục hình ảnh CHƯƠNG.1 TỔNG QUAN ĐỀ TÀI 1.1 1.2 1.3 1.4 Tổng quan hệ thống Rô bốt lưu kho tự động 1.1.1 Rô bốt công nghiệp 1.1.2 Kho hàng tự động 11 Tổng quan hệ thống xử lý hình ảnh 12 1.2.1 Tổng quan ứng dụng mã QR code 12 1.2.2 Tổng quan đo kích thước vật thể 15 1.2.3 Nhận diện QR code đo vật thể với thư viện OpenCV 17 Tổng quan Internet of Things 17 1.3.1 Khái niệm IoT 17 1.3.2 Các ứng dụng thách thức IoT 19 Các nghiên cứu lĩnh vực liên quan 19 Nội dung nghiên cứu luận văn 22 CHƯƠNG.2 THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 23 2.1 2.2 Hệ thống cấu chấp hành 23 2.1.1 Nguyên lý hoạt động kho hàng 23 2.1.2 Cấu tạo nguyên lý hoạt động rô bốt 23 2.1.3 Chọn thành phần hệ thống khí 26 2.1.4 Thiết kế kích cỡ khung hàng 29 Hệ thống điều khiển 30 2.2.1 Phân tích lựa chọn thành phần hệ thống điều khiển 30 2.2.2 Sơ đồ điểm di chuyển rô bốt 36 2.2.3 Sơ đồ thuật toán 37 2.2.4 hàng Xây dựng chương trình để điều khiển giám sát kho 38 CHƯƠNG.3 THUẬT TỐN XỬ LÝ HÌNH ẢNH 41 3.1 3.2 3.3 Thuật toán xử lý mã QR Code 41 3.1.1 Mã hoá QR code 41 3.1.2 Giải mã QR code 48 Thuật tốn đo kích thước độ lệch 49 3.2.1 Những phương pháp xử lý hình ảnh hiệu chỉnh camera 49 3.2.2 Thuật tốn nhận diện đo kích thước 53 Chương trình xử lý hình ảnh 59 CHƯƠNG.4 ỨNG DỤNG IOT QUẢN LÝ KHO HÀNG 61 4.1 Truyền thông IoT với hệ thống điều khiển 61 4.1.1 Kiến trúc IoT 61 4.1.2 Các công nghệ IoT 62 4.2 Thiết kế frontend Web 65 4.3 Thiết kế backend Web 67 4.4 Hệ quản trị sở liệu framework PHP Laravel 72 4.4.1 Phần mềm tạo máy chủ Xampp hệ quản trị sở liệu 72 4.4.2 Framework PHP Laravel 74 CHƯƠNG.5 THỰC NGHIỆM VÀ KẾT LUẬN 78 5.1 5.2 Thực nghiệm đánh giá kết 78 5.1.1 Thực nghiệm 78 5.1.2 Đánh giá kết 80 Kết luận hướng phát triển 81 5.2.1 Kết Luận 81 5.2.2 Hướng phát triển đề tài tương lai 81 PHỤ LỤC 84 File chương trình giao diện xử lý ảnh 84 File hàm tính tốn xử lý ảnh 87 Code chương trình 92 Tài liệu tham khảo 100 Danh mục hình ảnh Hình 1.1 - Toạ độ suy rộng rơ bốt O0 đến On 10 Hình 1.2 - Cấu trúc rơ bốt cơng nghiệp 11 Hình 1.3 - Rô bốt vận chuyển hàng kho Amazon 11 Hình 1.4 - Kho hàng tự động ASRS 12 Hình 1.5 - Mã vạch mã QR code 13 Hình 1.6 - Cấu tạo mã QR Code 14 Hình 1.7 - Thơng số cần để đo kích thước 15 Hình 1.8 - Đo vật thể với OpenCV đối tượng tham chiếu 16 Hình 1.9 - Mơ tả xác định độ lệch điểm góc khối Rubik 16 Hình 1.10 - Sơ đồ thành phần hệ thống IoT 18 Hình 1.11 - Con người kết nối với thiết bị giám sát 18 Hình 1.12 - Ứng dụng IoT 19 Hình 1.13 - Giải thuật kinh nghiệm cho hệ thống lưu kho 20 Hình 1.14 - Mơ hình tổng quan hệ thống hệ rơ bốt 21 Hình 2.1 - Mặt cắt mơ hình 3D kho hàng 24 Hình 2.2 - Sơ đồ motor lắp với puly cụm puly đai 24 Hình 2.3 - Cụm hệ puly đai chuyển động ngang 25 Hình 2.4 - Cụm hệ puly đai chuyển động thẳng đứng 25 Hình 2.5 - Cụm xích bánh xích chuyển động lấy trả hàng 26 Hình 2.6 - Ray trượt bi 26 Hình 2.7 - Động bước 28BYJ driver 27 Hình 2.8 - Động bước size 42 trục nâng hạ 28 Hình 2.9 - Thơng số kích thước động 28 Hình 2.10 - Kích cỡ hình chiếu đứng 3D khung hàng 29 Hình 2.11 - Sơ đồ mặt kho hàng 30 Hình 2.12 - Arduino Mega 2560 31 Hình 2.13 - Sơ đồ kết nối chân 32 Hình 2.14 - Nguyên lý làm việc động bước nam châm vĩnh cửu 33 Hình 2.15 - Drive điều khiển động TB6600 35 Hình 2.16 - Cảm biến khoảng cách E18-D80NK 35 Hình 2.17 - Các điểm thao tác trục X Y 36 Hình 2.18 - Điểm thao tác trục Z 36 Hình 2.19 - Sơ đồ nối dây Arduino với động qua module TB6600 37 Hình 2.20- Sơ đồ thuật tốn cho Rô bốt 38 Hình 2.21 - Giao diện kho hàng tự động 39 Hình 2.22 - Code Arduino chờ nhận giá trị trả 40 Hình 3.1 - Sơ đồ quy trình tạo mã QR Code 41 Hình 3.2 - Các function pattern vị trí 43 Hình 3.3 - Kích thước Finder pattern 44 Hình 3.4 - Phiên phiên 18 44 Hình 3.5 - Thêm Separator 44 Hình 3.6 - Kích thước Alignment pattern 45 Hình 3.7 - Cách đặt Alignment pattern 45 Hình 3.8 - Thêm Timing pattern 45 Hình 3.9 - Thêm Format information 46 Hình 3.10 - Bit thơng tin phiên (từ phiên trở lên) 46 Hình 3.11 - Chiều xếp bit data 47 Hình 3.12 - Thứ tự đặt bit liệu 47 Hình 3.13 - Sơ đồ quy trình giải mã code 48 Hình 3.14 - Chuyển đổi ảnh màu sang ảnh xám 49 Hình 3.15 - Bộ lọc Gaussian cho hình ảnh 50 Hình 3.16 - Cạnh vùng maxVal minVal 51 Hình 3.17 - Sử dụng giải thuật dilation 51 Hình 3.18 - Phép erosion 52 Hình 3.19 - Viền contour màu xanh bao quanh vật thể 52 Hình 3.20 - Ảnh trước sau hiệu chỉnh camera ảnh hưởng lens 53 Hình 3.21 - Biến dạng xuyên tâm 54 Hình 3.22 - Không biến dạng biến dạng tiếp tuyến 54 Hình 3.23 - Sơ đồ thuật tốn đo kích thước vật 55 Hình 3.24 - Chuyển đổi phối cảnh ảnh 56 Hình 3.25 - Đo kích thước vật thể 57 Hình 3.26 - Sơ đồ thuật toán đo độ lệch vật 57 Hình 3.27 - Mơ tả độ lệch vật thể 58 Hình 3.28 - Kết đo độ lệch góc tâm 59 Hình 3.29 - Giao diện trang auto chương trình 59 Hình 3.30 - Giao diện setting chương trình vision 60 Hình 4.1 - Kiến trúc IoT 61 Hình 4.2 - Phân tầng hệ thống IoT 61 Hình 4.3 - ESP32 (trái) Raspberry Pi4 (phải) 62 Hình 4.4 - Một số loại cảm biến 63 Hình 4.5 - Mơ tả q trình phiên làm việc http 64 Hình 4.6 - Phương thức hoạt động MQTT 65 Hình 4.7 - HTML cho nội dung trang web 66 Hình 4.8 - Phương thức lấy liệu từ web server 68 Hình 4.9 - Xử lý web server có yêu cầu đến 69 Hình 4.10 - Giao diện phần mềm Xampp 72 Hình 4.11 - Thao tác CRUD với sở liệu 74 Hình 4.12 - Mơ hình MVC Laravel 74 Hình 4.13 - Model thao tác với bảng sở liệu 75 Hình 4.14 - Cấu trúc thư mục Laravel 76 Hình 4.15 - Trang web hệ thống IoT 77 Hình 5.1 - Kết liệu thu sau xử lý ảnh 78 Hình 5.2 - Dữ liệu sau gửi lên chương trình 79 Hình 5.3 - Dữ liệu xuất nhập kho từ chương trình gửi lên Web 79 Hình 5.4 - Kết mẫu thử đo kích thước hàng 80 Hình 5.5 - Bảng phân tích sai số đo kích thước 80 CHƯƠNG.1 TỔNG QUAN ĐỀ TÀI 1.1 Tổng quan hệ thống Rô bốt lưu kho tự động Nền khoa học kỹ thuật thời đại ngày phát triển Điều khiển tự động lĩnh vực có vai trị quan trọng ngành cơng nghiệp đất nước Do nắm bắt vận dụng cơng nghệ để tạo sản phẩm đóng góp vào phát triển khoa học kỹ thuật giới nói chung phát triển kỹ thuật tự động nói riêng cần thiết Và xử lý hình ảnh, quản lý thứ qua internet giám sát nơi yêu cầu thiết thực giúp ích nhiều để quản lý hàng hố kho 1.1.1 Rơ bốt cơng nghiệp Thuật ngữ “Rơ bốt” khởi đầu có ý nghĩa cơng việc tạp dịch Đầu thập kỷ 60, công ty Mỹ AMF quảng cáo loại máy tự động vạn gọi “Người máy cơng nghiệp” sau máy công cụ điều khiển số đời, nhằm đáp ứng yêu cầu gia công chi tiết ngành chế tạo máy bay Trong năm sau này, việc nâng cao tính hoạt động rơ bốt khơng ngừng phát triển Các rô bốt trang bị thêm loại cảm biến khác để nhận biết môi trường xung quanh, với thành tựu to lớn lĩnh vực tin học - điện tử, nhờ rô bốt cơng nghiệp có vị trí quan trọng dây chuyền sản suất đại Trong sản xuất, rơ bốt ứng dụng vào nhiều lĩnh vực mang tính thay sức lao động người nhằm góp phần nâng cao tính tự động hố, giảm thiểu tác động người vào sản phẩm tăng suất trình sản xuất Để đáp ứng điều kiện rơ bốt có khả làm việc bền bỉ thời gian dài, không bị ảnh hưởng mơi trường làm việc độc hại, phóng xạ, nhạy bén với điều kiện người trang bị hệ thống cảm biến Rơ bốt cơng nghiệp cấu chuyển động lập trình, lặp lại chương trình, tổng hợp chương trình đặt trục toạ độ, có khả định vị, định hướng đối tượng theo chu trình thiết lập chương trình nhằm thực nhiệm vụ, chức công việc khác Bậc tự rô bốt: số khả chuyển động số cấu (chuyển động quay tịnh tiến) Để dịch chuyển vật thể không gian Hệ toạ độ: Mỗi rô bốt thường bao gồm nhiều khâu liên kết với qua khớp, tạo thành xích động học xuất phát từ khâu đứng yên Hệ toạ độ trung gian khác gắn với khâu động gọi hệ toạ độ suy rộng Hình 1.1 - Toạ độ suy rộng rô bốt O0 đến On Hệ cấu trúc rô bốt công nghiệp gồm phần hệ thống điều khiển cấu chấp hành - Hệ thống điều khiển tiếp nhận điều khiển từ tay cầm xử lý dựa thao tác người dùng tác động lên bảng điều khiển Tiếp hệ điều khiển tự động nghĩa rơ bốt lấy chương trình mà người dùng thiết lập từ trước đọc theo dòng lệnh, kiểm tra điều kiện thao thác từ đầu đến cuối - Cơ cấu chấp hành gồm sensor giám sát để trả tín hiệu cho điều khiển thực thi lệnh chương trình, cụm truyền động khí động servo với cơng suất mô men, phần công tác tool gắn rô bốt, phần cơng tác bao gồm tính tốn bù từ môi trường nhiệt độ, lực, mô men bên 10 self.ui.tData.setText(str(BoxData.t_data)) self.ui.widthData.setText(str(BoxData.width_data)) self.ui.HeightData.setText(str(BoxData.height_data)) cv2.imshow("Camera_Vision_Source", img_src) if cv2.waitKey(20) == ord(' '): break self.check_came = True cv2.destroyAllWindows() self.cap.release() def CreateQRCode(self): self.m_idcode = self.ui.lineIDCreate.text() self.m_path = "Image_QR/" + self.ui.linePath.text() + ".png" qr1 = qrcode.QRCode(version=1, box_size=10, border=3) qr1.add_data(self.m_idcode) qr1.make(fit=True) img_qr = qr1.make_image(fill_color='black',back_color='white') print("Create QR Code OK !") img_qr.save(self.m_path) m = cv2.imread(self.m_path, 1) cv2.imshow(self.m_idcode, m) def connect_client(self): try: self.soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM) ip_host = '192.168.123.20' port = 55678 self.soc.connect((ip_host, port)) self.soc.send((str(BoxData.id_code) + "/").encode('utf-8')) self.soc.send((str(BoxData.type_code) + "/").encode('utf-8')) self.soc.send((str(BoxData.pos) + "/").encode('utf-8')) self.soc.send((str(BoxData.x_data) + "/").encode('utf-8')) self.soc.send((str(BoxData.y_data) + "/").encode('utf-8')) self.soc.send((str(BoxData.t_data) + "/").encode('utf-8')) print("Sent OKKkkkkkkKKKKKKKKKKKKK") print(self.soc.recv(1024).decode()) self.soc.shutdown(socket.SHUT_RDWR) self.soc.close() except socket.error as err: print("Socket creation failed with error: " + err) 86 def connect_client11(self): try: self.soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ip_host = self.ui.lineIPMain.text() port = int(self.ui.linePortMain.text()) self.soc.connect((ip_host, port)) self.soc.send((str(BoxData.x_data) + "\n").encode('utf-8')) self.soc.send((str(BoxData.y_data) + "\n").encode('utf-8')) self.soc.send((str(BoxData.t_data) + "\n").encode('utf-8')) print("Sent OKKkkkkkkKKKKKKKKKKKKK") print(self.soc.recv(1024).decode()) self.soc.shutdown(socket.SHUT_RDWR) self.soc.close() return True except socket.error as err: print("Socket creation failed with error: " + err) return False if name == " main ": app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) File hàm tính tốn xử lý ảnh import cv2 import numpy as np import math import box_data from box_data import BoxData def get_contour_object(img, c_thr=[100, 100], min_area=1000, show_canny=False, filter1=0, draw=False, width=100, height=100): img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_blur = cv2.GaussianBlur(img_gray, (5, 5), 1) img_canny = cv2.Canny(img_blur, c_thr[0], c_thr[1]) kernel = np.ones([5, 5]) img_dial = cv2.dilate(img_canny, kernel, iterations=1) 87 img_thresh = cv2.erode(img_dial, kernel, iterations=1) if show_canny: cv2.imshow("Canny", img_canny) cv2.imshow("img_canny", img_canny) cv2.imshow("img_thresh", img_thresh) final_contour = [] arr = [] xywh = [] contour,hierarchy = cv2.findContours(img_thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) for i in contour: x, y, w, h = cv2.boundingRect(i) xywh = cv2.boundingRect(i) if w > width and h > height: if len(arr) == 0: arr.append((x, y)) M = cv2.moments(i) BoxData.x_data = int(M["m10"] / M["m00"]) BoxData.y_data = int(M["m01"] / M["m00"]) cv2.circle(img, (BoxData.x_data, BoxData.y_data), 3, (0, 255, 0), -1) cv2.putText(img, '({},{})px'.format(BoxData.x_data, BoxData.y_data), (BoxData.x_data-55, BoxData.y_data+15),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(0,0,255),1) peri = cv2.arcLength(i, True) approx = cv2.approxPolyDP(i, 0.1 * peri, True) bbox = cv2.boundingRect(approx) if len(approx) == 4: cv2.circle(img, (approx[0][0][0], approx[0][0][1]), 3, (255, 0, 0), -1) final_contour.append(approx) cv2.drawContours(img, [approx], 0, (0, 0, 255), 1) BoxData.t_data, points_2 = find_angle(img, approx[0], approx[1], approx[3]) s_rect = round(dd_AB * dd_AD, 1) BoxData.t_data = round(BoxData.t_data, 2) cv2.putText(img, '{}deg'.format(BoxData.t_data), (approx[0][0][0]-30, approx[0][0][1]-10), cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(255, 255, 255), 2) else: flag = True for k in arr: if abs(x-k[0])

Ngày đăng: 24/03/2023, 23:42

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w