Giới thiệu dự án
Trong kỷ nguyên Cách mạng Công nghiệp 4.0, tự động hóa và thị giác máy tính (Computer Vision) đã trở thành trụ cột then chốt nâng cao năng suất và độ chính xác trong dây chuyền sản xuất hiện đại. Theo các báo cáo thống kê công nghiệp tự động hóa, việc ứng dụng robot kết hợp hệ thống camera giúp giảm tỷ lệ lỗi phân loại xuống dưới 1.5% và tăng tốc độ xử lý đơn hàng lên 40% so với phương pháp thủ công.
Tại các doanh nghiệp vừa và nhỏ (SMEs), quy trình phân loại sản phẩm thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng: năng suất phụ thuộc vào sức người, tỷ lệ nhầm lẫn cao khi làm việc liên tục (dao động từ 5% đến 8%), và chi phí nhân công tăng lũy tiến theo thời gian. Các dây chuyền phân loại cố định dùng cảm biến quang thông thường lại thiếu tính linh hoạt khi sản phẩm thay đổi quy cách, màu sắc hoặc vị trí ngẫu nhiên trên mặt phẳng làm việc.
Đồ án "Ứng dụng xử lý ảnh và robot phân loại sản phẩm theo màu sắc" giải quyết triệt để bài toán trên bằng cách kết hợp cánh tay robot 3 bậc tự do (3-DOF) kiến trúc Magician cùng hệ thống thị giác máy tính nhận dạng thời gian thực.
+------------------+ +-------------------+ +--------------------+
| Logitech C310 | ----> | Python / OpenCV | ----> | Arduino Uno R3 |
| (Camera 720p) | | (HSV & Moments) | | (Inverse Kinemat) |
+------------------+ +-------------------+ +--------------------+
| |
v v
+-------------------+ +--------------------+
| MySQL Database | | 3x Stepper 127K |
| (Logging & GUI) | | + Servo MG90S |
+-------------------+ +--------------------+
Mục tiêu của dự án:
- Thiết kế và chế tạo phần cứng robot 3-DOF: Xây dựng cánh tay robot dạng khớp bản lề phỏng theo cấu hình Dobot Magician bằng công nghệ in 3D, tích hợp 3 động cơ bước và cơ cấu kẹp chấp hành bằng động cơ servo.
- Giải quyết triệt để bài toán động học: Thiết lập bảng thông số Denavit - Hartenberg (D-H), xây dựng phương trình động học thuận (Forward Kinematics) và giải phương trình động học ngược (Inverse Kinematics) dạng giải tích (Analytical Solution).
- Phát triển module thị giác máy tính: Lập trình thuật toán lọc không gian màu HSV (Hue - Saturation - Value), phân đoạn ảnh nhị phân và tính toán tâm hình học (Centroid) qua hàm Moments trên thư viện OpenCV.
- Xây dựng hệ thống điều khiển và truyền thông: Đồng bộ dữ liệu giữa máy tính xử lý trung tâm và vi điều khiển thông qua giao thức truyền thông nối tiếp UART (Universal Asynchronous Receiver/Transmitter) ở tốc độ 115200 baud.
- Thiết kế giao diện giám sát và cơ sở dữ liệu: Xây dựng GUI (Graphical User Interface) với PyQt5 hỗ trợ hai chế độ Manual/Auto và liên kết hệ quản trị cơ sở dữ liệu MySQL để lưu trữ lịch sử phân loại theo thời gian thực.
Phạm vi và giới hạn đề tài:
- Cơ cấu chấp hành: Robot 3 bậc tự do điều khiển vòng hở (Open-loop Control), sử dụng động cơ bước không gắn encoder hồi tiếp vị trí.
- Đối tượng phân loại: Sản phẩm hình trụ tròn kích thước chuẩn $\varnothing 10\text{ mm} \times h 10\text{ mm}$ với 3 gam màu cơ bản: Đỏ (Red), Vàng (Yellow), Xanh dương (Blue).
- Môi trường làm việc: Mặt phẳng cố định $600 \times 500\text{ mm}$, camera đặt vuông góc góc nhìn tĩnh từ trên xuống (Top-down View).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, ba giải pháp phân loại phổ biến trên thị trường được phân tích và đối sánh kỹ thuật:
| Tiêu chí đánh giá |
Phân loại thủ công |
Cảm biến màu cố định (TCS3200) |
Robot thị giác máy tính (Đề tài) |
| Độ chính xác |
$92% - 95%$ (giảm theo ca làm) |
$88% - 92%$ (dễ nhiễu quang) |
$\mathbf{96.5% - 98.2%}$ |
| Tính linh hoạt tọa độ |
Cao (nhờ mắt người) |
Rất thấp (vật phải đi qua khe sensor) |
Cao (bắt điểm mọi nơi trong workspace) |
| Tốc độ chu kỳ (Cycle time) |
$3.5 - 5.0\text{ s/sp}$ |
$1.2 - 2.0\text{ s/sp}$ |
$\mathbf{2.8 - 3.2\text{ s/sp}}$ |
| Khả năng lưu trữ số liệu |
Ghi chép thủ công |
Hạn chế (chỉ đếm xung) |
Tự động lưu MySQL theo thời gian thực |
| Chi phí đầu tư ban đầu |
Rất thấp |
Thấp |
Tối ưu (chế tạo nội địa < 4.000.000 VNĐ) |
Ma trận phân loại yêu cầu hệ thống theo mô hình MoSCoW:
- Must have: Giải thuật động học ngược chính xác; Phân loại đúng 3 màu Đỏ, Vàng, Xanh; Gắp - thả chính xác vào 3 ô phân loại; Giao tiếp UART ổn định.
- Should have: Giao diện điều khiển Manual/Auto trực quan; Tự động về gốc Home bằng công tắc hành trình cơ khí JL012; Lưu trữ dữ liệu vào MySQL.
- Could have: Bù trừ sai số tọa độ camera - robot bằng ma trận biến đổi Affine; Tự động cảnh báo khi sản phẩm nằm ngoài vùng làm việc.
- Won't have (phiên bản hiện tại): Xử lý vật thể chuyển động trên băng chuyền tốc độ cao; Phân loại đối tượng 3D phức tạp dựa trên Deep Learning.
Thiết kế hệ thống
+-------------------------------------------------------------------------+
| KIẾN TRÚC HỆ THỐNG |
+-------------------------------------------------------------------------+
[TẦNG THỊ GIÁC] Webcam Logitech C310 (HD 720p @ 30fps)
│ (USB 2.0 Video Stream)
▼
[TẦNG XỬ LÝ TRUNG TÂM] PC Core i5 / Python 3.9 + OpenCV 4.8
├── Module Vision: Frame Diff -> HSV -> Moments
├── Module Kinematics: Inverse Kinematics Core
├── Module GUI: PyQt5 (Manual / Auto Dashboard)
└── Module Database: MySQL Server 8.0
│ (UART Serial @ 115200 baud)
▼
[TẦNG ĐIỀU KHIỂN] Arduino UNO R3 (ATmega328P @ 16MHz)
├── CNC Shield V3
├── 3x Driver A4988 (Cấu hình 1/16 Microstepping)
└── 3x Endstop JL012 (Homing Calibration)
│ (PWM & Step/Dir Signals)
▼
[TẦNG CHẤP HÀNH] ├── 3x Stepper Motor 127K38200 (Trục 1, 2, 3)
└── 1x Micro Servo MG90S (Cơ cấu kẹp khí cụ đầu cuối)
Danh mục công nghệ và thông số kỹ thuật phần cứng/phần mềm:
- Ngôn ngữ & Thư viện: Python v3.9.13, OpenCV v4.8.0 (
cv2), PyQt5 v5.15.9, PySerial v3.5, MySQL-Connector-Python v8.0.33.
- Phần mềm biên dịch & Cơ sở dữ liệu: Arduino IDE v2.2.1, MySQL Workbench v8.0.34, JetBrains PyCharm v2023.2.
- Khối xử lý & Vi điều khiển: Arduino UNO R3 (Vi điều khiển 8-bit ATmega328P, xung nhịp 16MHz, 32KB Flash, 2KB SRAM, điện áp hoạt động 5VDC).
- Mạch công suất & Mở rộng: CNC Shield V3 kết hợp 3 module A4988 cấu hình $1/16$ vi bước (Microstepping qua jumper MS1, MS2, MS3 kéo lên mức High).
- Động cơ chấp hành:
- 3x Động cơ bước 127K38200: 2 pha, góc bước cơ bản $1.8^\circ$, dòng định mức $1.7\text{ A/pha}$, mô-men xoắn giữ $43\text{ N}\cdot\text{cm}$, điện trở pha $1.5\ \Omega \pm 10%$.
- 1x Động cơ RC Servo MG90S: Bánh răng kim loại, góc quay $0 - 90^\circ$, điện áp $4.8 - 6.0\text{ VDC}$, lực kéo $2.0\text{ kg}\cdot\text{cm}$.
- Cảm biến & Thu nhận ảnh: Webcam Logitech C310 (Độ phân giải 1.2 MP, 720p/30fps, tiêu cự cố định, cổng USB type A); 3x Công tắc hành trình tiếp điểm JL012 (125V 2A, tuổi thọ $100.000$ chu kỳ).
- Nguồn cấp: Nguồn tổ ong AC-DC 12V – 10A (Công suất 150W, hiệu suất chuyển đổi $\ge 85%$).
Thiết kế lược đồ cơ sở dữ liệu (product_sorting_db):
CREATE TABLE product_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
product_color VARCHAR(20) NOT NULL,
pos_x_pixel FLOAT NOT NULL,
pos_y_pixel FLOAT NOT NULL,
pos_x_real FLOAT NOT NULL,
pos_y_real FLOAT NOT NULL,
sorted_bin VARCHAR(10) NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(20) DEFAULT 'SUCCESS'
);
Giao thức bản tin UART (PC $\leftrightarrow$ Arduino):
Chuỗi dữ liệu điều khiển đóng gói theo định dạng ASCII phân tách bằng dấu phẩy:
$$\text{Frame format: } \texttt{"$CMD,}\theta_1\texttt{,}\theta_2\texttt{,}\theta_3\texttt{,GripperState#"}$$
Ví dụ: "$MOV,45.20,85.10,-110.50,1#" $\rightarrow$ Yêu cầu các khớp $1, 2, 3$ quay tới góc chỉ định và đóng kẹp servo.
Methodology
Đồ án được triển khai theo mô hình phát triển tích hợp chữ V (V-Model) kết hợp các pha lặp ngắn trong thời gian 15 tuần:
Tuần 1 - 3: Khảo sát lý thuyết, tính toán Động học D-H & Mô phỏng Matlab
│
Tuần 4 - 6: Thiết kế thị giác máy tính OpenCV & Thu nhận ảnh Logitech C310
│
Tuần 7 - 9: Gia công in 3D cánh tay robot, lắp ráp mạch CNC Shield V3 & Lập trình Vi điều khiển
│
Tuần 10 - 12: Thiết kế giao diện PyQt5, tích hợp MySQL Database & Ghép nối toàn hệ thống
│
Tuần 13 - 15: Kiểm thử thực nghiệm, tối ưu hóa thuật toán gắp & Đóng gói báo cáo
Ma trận đánh giá rủi ro và giải pháp khắc phục:
- Rủi ro 1: Hiện tượng trượt bước (Step Loss) ở động cơ bước khi tải nặng.
- Giải pháp: Thiết lập thuật toán gia tốc hình thang mềm, cấp nguồn 12V 10A ổn định và điều chỉnh biến trở giới hạn dòng (Vref) trên driver A4988 ở mức $0.85\text{ V}$ ứng với dòng $1.06\text{ A}$.
- Rủi ro 2: Nhiễu ánh sáng môi trường làm biến đổi ngưỡng màu HSV.
- Giải pháp: Thiết kế buồng chụp có khung chắn sáng cố định kết hợp thuật toán tiền xử lý trừ ảnh nền (Background Subtraction).
- Rủi ro 3: Va chạm vật lý khi khớp 2 và khớp 3 liên động cơ khí.
- Giải pháp: Lập trình vị trí gốc Home an toàn $(\theta_1 = 0^\circ, \theta_2 = 115^\circ, \theta_3 = -130^\circ)$ làm trạm trung chuyển trước và sau mỗi chu kỳ gắp.
Implementation và kết quả
Development process
1. Tính toán Động học thuận và ngược (D-H Kinematics)
Kích thước thực tế các khâu của robot in 3D: $d_1 = 12.8\text{ cm}$, $a_2 = 13.5\text{ cm}$, $a_3 = 14.7\text{ cm}$, $a_4 = 6.0\text{ cm}$, $a_5 = 5.5\text{ cm}$.
Ma trận chuyển đổi tổng quát theo quy tắc Denavit - Hartenberg:
$$^{i-1}_i T = \begin{bmatrix} \cos\theta_i & -\sin\theta_i\cos\alpha_i & \sin\theta_i\sin\alpha_i & a_i\cos\theta_i \ \sin\theta_i & \cos\theta_i\cos\alpha_i & -\cos\theta_i\sin\alpha_i & a_i\sin\theta_i \ 0 & \sin\alpha_i & \cos\alpha_i & d_i \ 0 & 0 & 0 & 1 \end{bmatrix}$$
Tọa độ điểm đầu cuối khâu công tác ($P_x, P_y, P_z$):
$$\begin{cases} P_x = \cos(\theta_1)\left[a_4 + a_2\cos\theta_2 + a_3\cos(\theta_2 + \theta_3)\right] \ P_y = \sin(\theta_1)\left[a_4 + a_2\cos\theta_2 + a_3\cos(\theta_2 + \theta_3)\right] \ P_z = d_1 + a_5 + a_2\sin\theta_2 + a_3\sin(\theta_2 + \theta_3) \end{cases}$$
Giải bài toán động học ngược tìm tập nghiệm biến khớp $(\theta_1, \theta_2, \theta_3)$:
$$\theta_1 = \text{atan2}(P_y, P_x)$$
$$\theta_3 = \text{atan2}\left(-\sqrt{1 - c_3^2}, c_3\right) \quad \text{với } c_3 = \frac{X^2 + Y^2 + Z^2 - a_2^2 - a_3^2}{2a_2 a_3}$$
$$\theta_2 = \text{atan2}\left(Z(a_2 + a_3 c_3) - a_3 s_3\sqrt{X^2 + Y^2}, \sqrt{X^2 + Y^2}(a_2 + a_3 c_3) + a_3 s_3 Z\right)$$
(Trong đó nghiệm $\theta_3$ chọn giá trị âm để phù hợp kết cấu vật lý của cấu hình robot Magician).
2. Tính toán phân bổ xung vi bước và bù liên động cơ khí
Tỉ số truyền bánh răng tại cả 3 khớp: $\text{Gear_ratio} = \frac{90}{20} = 4.5$.
Động cơ bước quay 1 vòng cần 200 bước cơ bản. Khi kích hoạt chế độ vi bước $1/16$ trên driver A4988, số xung tương ứng 1 vòng quay trục động cơ là: $200 \times 16 = 3200\text{ pulses/rev}$.
Số xung cấp cho động cơ quay góc $\Delta\theta$ (độ):
$$\text{Pulse}_i = \frac{3200 \times \text{Gear_ratio}_i \times \Delta\theta_i}{360} = \frac{3200 \times 4.5 \times \Delta\theta_i}{360} = 40 \times \Delta\theta_i \quad (\text{xung/độ})$$
Do đặc thù kết cấu cơ khí cánh tay Magician, khi khớp số 2 quay làm thay đổi vị trí tương đối của khớp số 3, để giữ nguyên góc tuyệt đối của khâu 3, xung cấp cho động cơ 3 phải bù trực tiếp góc quay của động cơ 2:
$$\text{Pulse}_{\text{Motor 1}} = \text{Pulse}1; \quad \text{Pulse}{\text{Motor 2}} = \text{Pulse}2; \quad \text{Pulse}{\text{Motor 3}} = \text{Pulse}_3 + \text{Pulse}_2$$
3. Trích xuất giải thuật xử lý ảnh (Python OpenCV)
import cv2
import numpy as np
def detect_product_color_and_centroid(frame, background_gray):
# 1. Chuyen sang gray va tinh tru anh nen
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
diff = cv2.absdiff(gray, background_gray)
_, thresh_diff = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)
# 2. Chuyen he mau HSV va ap nguong loc mau
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
color_ranges = {
'Red': ([0, 120, 70], [10, 255, 255]),
'Yellow': ([20, 100, 100], [35, 255, 255]),
'Blue': ([100, 150, 0], [140, 255, 255])
}
detected_products = []
for color_name, (lower, upper) in color_ranges.items():
mask = cv2.inRange(hsv, np.array(lower), np.array(upper))
mask_combined = cv2.bitwise_and(mask, thresh_diff)
# Loc nhieu hinh thai hoc (Morphological Opening)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
mask_cleaned = cv2.morphologyEx(mask_combined, cv2.MORPH_OPEN, kernel)
contours, _ = cv2.findContours(mask_cleaned, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
area = cv2.contourArea(cnt)
if area > 150: # Loai bo nhieu dien tich nho
M = cv2.moments(cnt)
if M["m00"] != 0:
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
detected_products.append({"color": color_name, "pixel_pos": (cX, cY), "area": area})
return detected_products
4. Đoạn mã điều khiển phát xung đồng thì trên Arduino UNO R3
// Dinh nghia chan dieu khien CNC Shield V3
#define X_STEP 2
#define X_DIR 5
#define Y_STEP 3
#define Y_DIR 6
#define Z_STEP 4
#define Z_DIR 7
#define EN_PIN 8
void execute_motion(long steps_x, long steps_y, long steps_z, int base_delay_us) {
digitalWrite(EN_PIN, LOW); // Bat Driver
digitalWrite(X_DIR, steps_x >= 0 ? HIGH : LOW);
digitalWrite(Y_DIR, steps_y >= 0 ? HIGH : LOW);
digitalWrite(Z_DIR, steps_z >= 0 ? HIGH : LOW);
long max_steps = max(abs(steps_x), max(abs(steps_y), abs(steps_z)));
for (long i = 0; i < max_steps; i++) {
if (i < abs(steps_x)) digitalWrite(X_STEP, HIGH);
if (i < abs(steps_y)) digitalWrite(Y_STEP, HIGH);
if (i < abs(steps_z)) digitalWrite(Z_STEP, HIGH);
delayMicroseconds(base_delay_us);
digitalWrite(X_STEP, LOW);
digitalWrite(Y_STEP, LOW);
digitalWrite(Z_STEP, LOW);
delayMicroseconds(base_delay_us);
}
}
Testing và validation
Hệ thống được thử nghiệm qua $300$ chu kỳ phân loại liên tục tại phòng thí nghiệm Bộ môn Tự động Điều khiển – ĐH Sư phạm Kỹ thuật TP.HCM.
1. Kiểm tra độ chính xác tọa độ điểm đầu cuối:
| Tọa độ đặt $(X, Y, Z)\text{ cm}$ |
Tọa độ thực nghiệm $(X', Y', Z')\text{ cm}$ |
Sai số tuyệt đối $\Delta E\text{ (mm)}$ |
Đánh giá chấp nhận |
| $(20.00, 0.00, 5.00)$ |
$(19.88, 0.05, 5.08)$ |
$1.52\text{ mm}$ |
Đạt tiêu chuẩn gắp |
| $(18.00, 10.00, 4.50)$ |
$(17.85, 10.12, 4.60)$ |
$2.14\text{ mm}$ |
Đạt tiêu chuẩn gắp |
| $(15.00, -12.00, 5.00)$ |
$(14.82, -11.88, 5.11)$ |
$2.41\text{ mm}$ |
Đạt tiêu chuẩn gắp |
| $(22.00, 8.00, 3.00)$ |
$(21.79, 8.14, 3.15)$ |
$2.91\text{ mm}$ |
Đạt tiêu chuẩn gắp |
2. Đánh giá độ chính xác nhận diện màu sắc theo điều kiện quang học:
| Điều kiện môi trường |
Số mẫu thử (Mỗi màu 50) |
Nhận diện đúng (Đỏ / Vàng / Xanh) |
Độ chính xác tổng thể |
Thời gian xử lý trung bình |
| Ánh sáng chuẩn (450 - 550 Lux) |
150 mẫu |
$50 / 49 / 50$ |
$99.33%$ |
$32.4\text{ ms/frame}$ |
| Ánh sáng yếu (100 - 150 Lux) |
150 mẫu |
$46 / 42 / 48$ |
$90.67%$ |
$34.1\text{ ms/frame}$ |
| Ánh sáng chói ngược (> 800 Lux) |
150 mẫu |
$44 / 45 / 43$ |
$88.00%$ |
$33.8\text{ ms/frame}$ |
Kết quả đạt được
- Thời gian chu kỳ (Cycle Time): Đạt $3.1\text{ s/sản phẩm}$ (bao gồm $0.15\text{ s}$ nhận diện xử lý ảnh, $1.8\text{ s}$ di chuyển tiếp cận và kẹp, $1.15\text{ s}$ vận chuyển thả vào ô chứa và quay về vị trí Home).
- Độ tin cậy gắp - thả: Đạt tỷ lệ thành công $96.67%$ trong điều kiện ánh sáng chuẩn.
- Hệ thống điều khiển GUI: Giao diện PyQt5 hiển thị luồng video 30fps trực tiếp, thông số góc quay 3 khớp, số lượng sản phẩm phân loại theo từng màu và log MySQL hoàn toàn theo thời gian thực.
Đổi mới và đóng góp
- Giải pháp bù trừ liên động cơ học bằng phần mềm: Đồ án đề xuất phương pháp giải tích bù xung trực tiếp $(\text{Pulse}_3 + \text{Pulse}_2)$ trong firmware Arduino, loại bỏ hoàn toàn sai số dịch góc của khâu 3 khi khâu 2 chuyển động mà không cần thêm cảm biến hồi tiếp phần cứng đắt tiền.
- Quy trình kết hợp trừ ảnh nền và lọc màu HSV đa lớp: Giảm thiểu hơn $65%$ hiện tượng nhận diện nhầm bóng phản xạ của phôi trên mặt bàn thao tác so với giải pháp chỉ dùng ngưỡng màu RGB thuần túy.
- Mô hình giáo dục & ứng dụng chi phí thấp: Chế tạo thành công cánh tay robot 3-DOF bằng công nghệ in 3D với chi phí gia công phần cứng chỉ bằng $15%$ so với giá thành cánh tay công nghiệp Dobot Magician thương mại, mở ra giải pháp giáo cụ trực quan hiệu quả cao cho các trường đại học kỹ thuật.
Ứng dụng thực tế và triển khai
+-------------------------------------------------------------------------+
| KỊCH BẢN TRIỂN KHAI THỰC TẾ |
+-------------------------------------------------------------------------+
[1. SẢN XUẤT DƯỢC PHẨM] Phân loại nắp lọ thuốc / vỉ thuốc theo mã màu sắc
[2. LINH KIỆN ĐIỆN TỬ] Gắp và chia chọn tụ điện, relay màu trên bảng mạch
[3. CHẾ BIẾN NÔNG SẢN] Phân loại hạt nông sản, cà chua bi theo độ chín màu
[4. ĐÀO TẠO KỸ THUẬT] Mô hình thực hành Robotics & Computer Vision chuẩn
Phân tích tài chính và hoàn vốn (ROI):
- Chi phí đầu tư phần cứng (CAPEX): Khoảng $3.850.000\text{ VNĐ}$ (Bao gồm khung in 3D, Arduino, CNC Shield, 3 động cơ bước, driver A4988, nguồn tổ ong và webcam Logitech C310).
- Chi phí vận hành điện năng (OPEX): Tiêu thụ điện định mức $12\text{V} \times 3\text{A} = 36\text{W}$, tương đương chi phí năng lượng $< 1.500\text{ VNĐ/ngày}$ khi hoạt động liên tục 8 tiếng.
- Thời gian hoàn vốn ước tính: Dưới 2.5 tháng khi thay thế 1 nhân công phân loại thủ công tại các xưởng sản xuất bán tự động quy mô nhỏ.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại:
- Hệ thống hoạt động theo vòng hở (Open-loop), nếu xảy ra ngoại lực cản trở gây mất bước ở động cơ bước, hệ thống không tự phục hồi được vị trí mà phải kích hoạt quy trình Homing lại từ đầu.
- Không gian màu HSV vẫn phụ thuộc vào chất lượng nguồn sáng môi trường xung quanh, dễ giảm độ chính xác khi cường độ sáng biến động quá lớn ($< 150\text{ Lux}$ hoặc $> 800\text{ Lux}$).
- Cơ cấu kẹp servo MG90S có lực kẹp giới hạn ($2\text{ kg}\cdot\text{cm}$), chỉ thích hợp với vật phẩm khối lượng nhỏ ($< 100\text{g}$).
Hướng phát triển nâng cấp:
- Nâng cấp phần cứng: Thay thế động cơ bước thường bằng động cơ bước Step-Servo có gắn Encoder quang học hồi tiếp vị trí khép kín (Closed-loop Stepper); bổ sung đầu gắp giác hút chân không (Vacuum Suction Cup) để gắp đa dạng hình học sản phẩm.
- Nâng cấp thuật toán AI: Tích hợp mô hình mạng nơ-ron tích chập nhẹ YOLOv8-Nano chạy trên bo mạch nhúng NVIDIA Jetson Nano để phân loại vật thể theo hình dạng 3D, khuyết tật bề mặt và màu sắc phức tạp.
- Mở rộng đồng bộ dây chuyền: Tích hợp thuật toán bám chuyển động theo thời gian thực (Visual Conveyor Tracking) sử dụng thuật toán lọc Kalman để gắp vật thể động trên băng tải đang chạy.
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa, Cơ điện tử: Cung cấp tài liệu tham khảo hoàn chỉnh từ thiết lập phương trình động học D-H, tính toán phát xung vi bước đến lập trình xử lý ảnh OpenCV.
- Kỹ sư và Lập trình viên nhúng: Nắm vững cấu trúc kết nối phần cứng giữa Arduino UNO, CNC Shield V3, Driver A4988 và giao thức truyền thông nối tiếp UART chuẩn hóa.
- Doanh nghiệp vừa và nhỏ (SMEs): Tiếp cận mô hình tự động hóa phân loại sản phẩm mức giá bình dân, dễ dàng tùy biến theo kích thước sản phẩm và nhu cầu thực tế của nhà xưởng.
- Các nhà nghiên cứu ứng dụng: Nền tảng mở để thử nghiệm các bộ điều khiển phi tuyến, điều khiển mờ-PID (Fuzzy-PID) hoặc các giải thuật nhận dạng học sâu tiên tiến.
Câu hỏi thường gặp
1. Yêu cầu cấu hình máy tính và môi trường để triển khai hệ thống là gì?
Máy tính cần tối thiểu CPU Intel Core i3 (thế hệ 6 trở lên), RAM 4GB, cổng USB 2.0/3.0, cài đặt hệ điều hành Windows 10/11 hoặc Ubuntu 20.04 LTS. Môi trường phần mềm yêu cầu Python 3.8+ (cài đặt gói thư viện opencv-python, PyQt5, pyserial, mysql-connector-python), MySQL Server 8.0 và Arduino IDE 2.0+.
2. Làm thế nào để mở rộng robot gắp được các vật thể nặng hơn hoặc hình dạng khác nhau?
Để gắp vật phẩm nặng hơn ($> 200\text{g}$), cần nâng cấp động cơ bước lên chuẩn NEMA 23 (kết hợp Driver TB6600 cấp nguồn 24VDC), gia công khung cánh tay bằng hợp kim nhôm CNC thay vì in 3D PLA, và thay cơ cấu kẹp servo bằng đầu hút chân không khí nén điều khiển qua van điện từ relay.
3. Hệ thống xử lý thế nào khi xảy ra mất đồng bộ tọa độ giữa Camera và Robot?
Hệ thống sử dụng ma trận chuyển đổi Affine $2\times 3$ để ánh xạ điểm ảnh $(u, v)$ sang tọa độ thực $(X, Y)$. Khi có sự xê dịch camera, người dùng chỉ cần vào tab Manual Calibration trên giao diện PyQt5, nhấn chọn 4 điểm mốc cố định trên bàn làm việc để phần mềm tự động tính toán lại ma trận hiệu chuẩn mà không cần nạp lại mã nguồn.
4. Tại sao đồ án lựa chọn không gian màu HSV thay vì RGB để phân loại sản phẩm?
Không gian màu RGB gộp chung thông tin màu sắc và độ sáng vào cả 3 kênh (Red, Green, Blue), khiến giá trị màu bị biến đổi mạnh khi độ sáng môi trường thay đổi. Ngược lại, không gian màu HSV tách biệt rõ ràng giữa thành phần màu sắc cốt lõi ($H$ - Hue), độ bão hòa ($S$ - Saturation) và cường độ ánh sáng ($V$ - Value), giúp việc đặt ngưỡng nhận dạng màu độc lập và kháng nhiễu ánh sáng tốt hơn rất nhiều.
5. Chi phí bảo trì và tuổi thọ hoạt động của mô hình ra sao?
Các linh kiện cơ điện như động cơ bước 127K38200 và driver A4988 có tuổi thọ danh định trên $20.000$ giờ hoạt động. Chi phí bảo dưỡng định kỳ chủ yếu là tra mỡ bôi trơn các khớp trục in 3D và thay thế servo kẹp MG90S (chi phí khoảng $40.000\text{ VNĐ/chiếc}$) sau mỗi $100.000$ chu kỳ đóng mở.
Kết luận
Đồ án "Ứng dụng xử lý ảnh và robot phân loại sản phẩm theo màu sắc" của sinh viên Nguyễn Thái Đạt (GVHD: TS. Trần Mạnh Sơn, Đại học Sư phạm Kỹ thuật TP.HCM) đã hoàn thành xuất sắc các mục tiêu thiết kế và thi công hệ thống tự động hóa tích hợp thị giác máy tính. Từ việc giải quyết trọn vẹn bài toán động học thuận - ngược D-H, chế tạo mô hình robot 3-DOF in 3D vững chắc, đến xây dựng giải thuật lọc màu HSV tối ưu và giao diện giám sát MySQL/PyQt5 trực quan, công trình đã chứng minh tính khả thi vượt trội với độ chính xác phân loại đạt $96.67%$ và chu kỳ làm việc ấn tượng $3.1\text{ s/sản phẩm}$.
Đây là tài liệu kỹ thuật có giá trị thực tiễn cao, đóng vai trò nền tảng quan trọng giúp các kỹ sư, sinh viên và doanh nghiệp tiếp cận, làm chủ công nghệ điều khiển cánh tay robot công nghiệp kết hợp trí tuệ thị giác máy tính với chi phí tối ưu nhất.