Hệ thống phân loại sản phẩm nhằm chia sản phẩm ra các nhóm cócùng thuộc tính với nhau để thực hiện đóng gói hay loại bỏ sản phẩm hỏng.. Do đó dựa trên nền tảng kiến thức đã học, vốn hiểu
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CƠ KHÍ
BÀI TẬP LỚN Xây dựng chương trình giao tiếp với hệ cơ
điện tử ứng dụng xử lý ảnh
Đề tài: Thiết kế hệ thống điều khiển cho hệ thống phân
loại sản phẩm ứng dụng xử lý ảnh
Giảng viên hướng dẫn: TS Nguyễn Thành Hùng
Nguyễn Hải Anh
MSSV: 20184413 MSSV: 20184342
HÀ NỘI, 1/2022
Trang 2Đánh giá của giảng viên hướng dẫn
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Kết quả đánh giá Hà Nội, ngày tháng năm 2022
Giảng viên hướng dẫn
Phạm Ngọc Dương
Nguyễn Hải Anh
Trang 3MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Giới thiệu chung 1
1.2 Nguyên lý hoạt động của hệ thống 1
1.3 Các thành phần cơ bản của hệ thống 1
1.3.1 Phần cứng 1
1.3.2 Phầm mềm 4
CHƯƠNG 2 THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN 7
2.1 Thuật toán xử lý ảnh 7
2.2 Phương thức giao tiếp và thuật toán điều khiển 7
2.2.1 Phương thức giao tiếp 7
2.2.2 Thuật toán điều khiển 8
CHƯƠNG 3 MÔ HÌNH THỰC NGHIỆM VÀ PHÂN TÍCH 9
3.1 Mô hình thực nghiệm 9
3.2 Kết quả thực nghiệm 9
3.3 Thảo luận kết quả thực nghiệm 9
CHƯƠNG 4 KẾT LUẬN 10
4.1 Kết luận 10
4.2 Hướng phát triển của đề tài trong tương lai 10
TÀI LIỆU THAM KHẢO 11
PHỤ LỤC 12
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu chung
- Ngày nay, xã hội ngày càng phát triển Công nghiệp hóa, hiện đại hóa ngày càng được nâng cao để phát triển đất nước và cải thiện cuộc sống của người dân
Vì vậy việc ứng dụng khoa học kỹ thuật ngày càng rộng rãi, phổ biến và mang lại hiệu quả cao trong hầu hết các lĩnh vực kinh tế, kỹ thuật cũng như trong đời sống
xã hội
- Trong đó có một khâu quan trọng ảnh hưởng đến chất lượng sản phẩm là phân loại sản phẩm Hệ thống phân loại sản phẩm nhằm chia sản phẩm ra các nhóm có cùng thuộc tính với nhau để thực hiện đóng gói hay loại bỏ sản phẩm hỏng Do
đó dựa trên nền tảng kiến thức đã học, vốn hiểu biết về điện tử và công nghệ xử
lý ảnh nhóm chúng em chọn đề tài: “Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm”
- Mục tiêu thiết kế là mô hình phân loại sản phẩm theo màu sắc (đỏ, xanh, vàng) Dựa trên ngôn ngữ Python với thư viện chính là OpenCV và được thực hiện trên Kit Arduino Uno Ở đây sử dụng các đặc điểm riêng biệt của từng màu sắc để đi nhận dạng và sau đó phân loại từng sản phẩm Kết quả thực hiện của đề tài đã nhận dạng được những sản phẩm có màu sắc (đỏ, xanh, vàng)
1.2 Nguyên lý hoạt động của hệ thống
Đầu tiên camera sẽ thu nhận hình ảnh chụp sản phẩm, sau đó đưa đến phần mềm xử lý ảnh để xử lý, ở đây sản phẩm sẽ được phân loại theo màu sắc, khi có tín hiệu nhận biết được sản phẩm ta tiếp tục gửi tín hiệu đến cho vi điều kiển( ở đây là arduino), vi điều khiển sẽ nhận tín hiệu và điều khiển các cơ cấu chấp hành
1.3 Các thành phần cơ bản của hệ thống
1.3.1 Phần cứng
+) Kit Arduino uno R3
Một board mạch chủ chính dùng để truyền và nhận dữ liệu từ người sử dụng đến các thiết bị điện tử khác
Trang 5Các thông số cơ bản:
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi
bootloader
+) Động cơ Servo SG -90
2
Trang 6- Servo là một dạng động cơ điện đặc biệt Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với góc quay nằm trong khoảng bất kì từ 0 – 180 0 0
Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau
- Động cơ servo được thiết kế hệ thống hồi tiếp vòng kín Tín hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và
vị trí sẽ được hồi tiếp về mạch điều khiển này
Thông số kĩ thuật:
Khối lượng : 9g
Kích thước: 22.2x11.8.32 mm
Momen xoắn: 1.8kg/cm
Tốc độ hoạt động: 60 độ trong 0.1 giây
Điện áp hoạt động: 4.8V(~5V)
Nhiệt độ hoạt động: 0 ºC – 55 ºC
Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam với chân phát xung của vi điều khiển Ở chân xung cấp một xung từ 1ms-2ms theo để điều khiển góc quay theo ý muốn
+) Camera USB
- Do tình hình dịch bệnh nên phần cứng của bọn em cũng bị hạn chế, ở đây bọn
em chỉ sử dụng 1 con webcam thông thường có thể kết nối USB
Trang 71.3.2 Phầm mềm
+) Thư viện opencv
- OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho
xử lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, Python Java vì vậy
hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần
4
Trang 8- Opencv có rất nhiều ứng dụng:
Hình ảnh street view
Kiểm tra và giám sát tự động
Robot và xe hơi tự lái
Phân tích hình ảnh y học
Tìm kiếm và phục hồi hình ảnh/video
Phim – cấu trúc 3D từ chuyển động
Nghệ thuật sắp đặt tương tác
- Tính năng và các module phổ biến của OpenCV:
Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
Phát hiện các vật thể (objdetect, features2d, nonfree)
Geometry-based monocular hoặc stereo computer vision (calib3d, stitching, videostab)
Computational photography (photo, video, superres)
Machine learning & clustering (ml, flann)
CUDA acceleration (gpu)
+) Pycharm IDE
- PyCharm là môi trường phát triển tích hợp đa nền tảng (IDE) được phát triển bởi Jet Brains và được thiết kế đặc biệt cho Python PyCharm có mặt trên cả 3 nền tảng Windows, Linux và Mac OS
Trang 9- Pycharm là một giải pháp phù hợp cho Python developers vì IDE này hỗ trợ nhiều extensions, môi trường ảo (Virtual Environment), nhiều tính năng thông minh như bộ code completion, tự động thụt lề, phát hiện văn bản trùng lặp và kiểm tra lỗi Ngoài ra còn có các tính năng tìm kiếm mã nguồn thông minh để tìm kiếm từng từ một trong nháy mắt
+) Arduino IDE
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường
Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo
Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino Môi trường này hỗ trợ cả ngôn ngữ C và C ++
6
Trang 10CHƯƠNG 2 THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN
2.1 Thuật toán xử lý ảnh
- Với ảnh chụp thu thập được từ Camera sẽ cho không gian màu của ảnh là RGB, không gian màu RGB không thích hợp cho việc nhận dạng màu sắc, để phân biệt màu sắc người ta thường dùng không gian màu HSV Vì vậy ta cần chuyển đổi ảnh gốc ( ảnh có không gian màu RGB) sang ảnh có không gian màu HSV Các bước thực hiện xử lý ảnh:
+) Thuật toán nhận dạng vật thể theo màu sắc
- Trước tiên ta chuyển sang hệ màu HSV
- Tìm ngưỡng màu của vật thể muốn phân loại
- Tạo lớp mặt nạ của vật nằm trong ngưỡng màu
- Sử dụng các phép hình thái học để xử lý và lọc nhiễu ( vd như opening, erosion, )
- Sau khi đã có lớp mặt nạ đầy đủ nhất của vật, ta tiến hành thực hiện một số công việc để thuận tiện cho việc gửi tín hiệu xuống vi điều khiển, ví dụ như tìm tất cả các contours của vật có trong khung hình, tìm diện tích hoặc bán kính của đường tròn nhỏ nhất bao quanh contours để check xem đó có phải là vật thể cần phân loại không hay là một số thành phần nhiễu
2.2 Phương thức giao tiếp và thuật toán điều khiển
2.2.1 Phương thức giao tiếp
+) Chuẩn giao tiếp UART:
• Theo định nghĩa, UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp không đồng bộ với tốc độ có thể định cấu hình Không đồng bộ có nghĩa là không có tín hiệu đồng hồ để đồng
bộ hóa các bit đầu ra từ thiết bị truyền đi đến bên nhận
• Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận
• Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
Trang 11+ Transmitter (Tx)
+ Receiver (Rx)
2.2.2 Thuật toán điều khiển
Vi điều khiển sẽ nhận tín hiệu được gửi xuống từ phầm mềm xử lý ảnh, ứng với từng tín hiệu thì vi điều khiển sẽ điều khiển các cơ cấu chấp hành sao cho phù hợp với yêu cầu mình đặt ra
8
Trang 12CHƯƠNG 3 MÔ HÌNH THỰC NGHIỆM VÀ PHÂN TÍCH
3.1 Mô hình thực nghiệm
Dưới đây là mô hình thực nghiệm cùng với các phần tử đã nêu ở trên và bộ khung mô hình làm bằng xốp mô phỏng cụm cấp phôi và trả phôi về nơi chứa
Trang 133.2 Kết quả thực nghiệm
Theo như thực nghiệm thì kết quả đạt được khá là tốt:
Hệ thống nhận dạng và phân loại được sản phẩm theo màu sắc bằng ngôn ngữ Python dựa vào thư viện OpenCV
Giao tiếp được Arduino với laptop thông qua pyserial, để điều khiển servo
Thiết kế thành công mô hình phân loại sản phẩm theo màu sắc, mặc dù còn chưa được tối ưu, và còn đơn giản chưa có nhiều tính năng
Mô hình hoạt động khá ổn định Bộ xử lý trung tâm xử lý tín hiệu khá tốt Phân loại thành công các sản phẩm đỏ, xanh, vàng, nếu không thuộc một trong các màu sắc kể trên thì được xem là sản phẩm khác, hệ thống cấp phôi cũng như hệ thống máng trượt sản phẩm hoạt động khá ổn định
3.3 Thảo luận kết quả thực nghiệm
- Sau 5 lần thực nghiệm trên mỗi sản phẩm, hệ thống phân loại sản phẩm cho thấy hoạt động tương đối ổn định với độ chính xác cao, không bị nhầm lẫn trong việc phân loại giữa các màu với nhau và phân loại rõ ràng từng sản phẩm Tuy nhiên, ở đây chỉ thực hiện 3 màu và mỗi màu 5 sản phẩm, khi thực hiện liên tục nhiều sản phẩm hơn sẽ có xuất hiện những sai sót do ảnh hưởng của nhòe ảnh, nhiễu, cường độ sáng,…và thuật toán cũng chưa được tối ưu nếu ta nhận diện nhiều màu hơn, gây nhận diện không chính xác được sản phẩm
- Do tình hình dịch bệnh phức tạp nên phần cứng còn đơn giản, thiếu sót dẫn đến cũng ảnh hưởng để hệ thống chung
10
Trang 14CHƯƠNG 4 KẾT LUẬN 4.1 Kết luận
+) Kết quả đạt được:
Biết cách thiết kế 1 hệ thống phân loại sản phẩm đơn giản
Ứng dụng được xử lý ảnh vào trong hệ thống
Kết nối được các phần cứng với nhau, cũng như là các phần mềm, và hiểu được các phương thức giao tiếp
Biết cách làm việc nhóm với nhau
+) Hạn chế:
o Tốc độ xử lý còn chậm, các tín hiệu giống nhau gửi liên tiếp do số khung hình trên giây lớn
o Hệ thống buồng ảnh chưa đáp ứng được ánh sáng tốt nhất
o Chỉ phân loại được sản phẩm theo màu sắc, không phát hiện được sản phẩm bị lỗi
o Do dịch bệnh nên khả năng làm việc nhóm chưa được tối ưu, cũng như phần cứng còn hạn chế
4.2 Hướng phát triển của đề tài trong tương lai
- Từ những mặt hạn chế của đề tài, để đề tài hoạt động tốt hơn và có thể áp dụng vào thực tế sau này nhóm đã đề ra những hướng phát triển như sau: Làm thành dây chuyền sản xuất với cấu hình mạnh hơn, fix các lỗi còn tồn đọng, cải tiến thêm chức năng phát hiện được sản phẩm lỗi, tìm hiểu và phát triển thêm chức năng vận hành và giám sát từ xa để có thể áp dụng trực tiếp vào các dây truyền ví
dụ như phân loại hoa quả chín, hư hỏng,…
Trang 15TÀI LIỆU THAM KHẢO
12