Giới thiệu dự án

Trong kỷ nguyên Công nghiệp 4.0 và chuyển đổi số sản xuất, tự động hóa đóng vai trò huyết mạch giúp nâng cao năng suất, tối ưu hóa chi phí vận hành và loại bỏ sai sót do con người. Theo thống kê từ Liên đoàn Robot Quốc tế (IFR), mật độ robot công nghiệp trong các dây chuyền lắp ráp và đóng gói đã tăng trưởng trung bình trên 13% mỗi năm. Tại Việt Nam, nhu cầu chuyển đổi sang các dây chuyền tự động hóa linh hoạt (Flexible Manufacturing Systems - FMS) đang trở nên cấp thiết đối với các doanh nghiệp vừa và nhỏ (SMEs).

Tuy nhiên, các hệ thống phân loại truyền thống chủ yếu dựa trên cảm biến quang điện đơn điểm hoặc phân loại thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Chi phí nhân công và rủi ro lao động: Phân loại thủ công liên tục trong nhiều giờ dẫn đến mệt mỏi, tỷ lệ sai sót từ 5% - 8%, đồng thời không an toàn trong môi trường nhiệt độ cao hoặc có hóa chất.
  • Độ linh hoạt thấp: Cảm biến cơ - quang thông thường chỉ phát hiện vật thể tĩnh hoặc phân biệt kích thước cơ bản, hoàn toàn bất lực trước các tiêu chí phân loại phức tạp như sắc thái màu sắc, thông tin định danh số hóa hay vị trí lệch tọa độ trên băng tải.
  • Chi phí đầu tư robot công nghiệp quá cao: Các dòng robot Delta hoặc SCARA 4-6 bậc tự do kèm bộ xử lý thị giác công nghiệp chuyên dụng (như Cognex, Keyence) có giá thành từ hàng trăm triệu đến hàng tỷ đồng, vượt quá ngân sách tiếp cận của các cơ sở sản xuất quy mô vừa và nhỏ hoặc các phòng thí nghiệm đào tạo kỹ thuật.
flowchart LR
    A[Sản phẩm trên băng tải] --> B[Webcam Logitech C310]
    B --> C[Xử lý ảnh Python / OpenCV]
    C -->|Trích xuất đặc trưng & Tọa độ| D[Giải toán Động học nghịch IK]
    D -->|Gói dữ liệu UART| E[Arduino UNO R3 + CNC Shield V3]
    E -->|Xung Step/Dir FOC| F[Driver MKS Servo42C + Động cơ bước]
    F --> G[Robot Magician 3-DOF Pick & Place]
    C -->|Log dữ liệu| H[(Cơ sở dữ liệu MySQL)]
    C --> I[Giao diện giám sát PyQt5 GUI]

Mục tiêu dự án

  1. Thiết kế và chế tạo cơ khí mô hình: Xây dựng cánh tay robot 3 bậc tự do (3-DOF) cấu hình Magician bằng công nghệ in 3D chịu lực, kết hợp hệ thống hút chân không tại cơ cấu chấp hành cuối (end-effector).
  2. Nghiên cứu và giải bài toán động học: Thiết lập hệ trục tọa độ Denavit - Hartenberg (D-H), giải phương trình động học thuận (Forward Kinematics) và động học nghịch (Inverse Kinematics) để điều khiển vị trí đầu cuối robot chính xác trong không gian Descartes.
  3. Phát triển module thị giác máy tính: Xây dựng thuật toán xử lý ảnh thời gian thực bằng Python và OpenCV nhằm nhận dạng, theo dõi chuyển động (tracking) sản phẩm trên băng chuyền theo 2 chế độ: không gian màu HSV và giải mã ma trận QR code.
  4. Hệ thống điều khiển vòng kín & đồng bộ: Ứng dụng board mở rộng CNC Shield V3 kết hợp driver thông minh MKS Servo42C điều khiển động cơ bước vòng kín theo giải thuật FOC (Field-Oriented Control), ngăn ngừa hoàn toàn hiện tượng trượt bước (step loss).
  5. Số hóa quy trình quản lý: Xây dựng giao diện điều khiển, giám sát thời gian thực bằng PyQt5 và đồng bộ hóa cơ sở dữ liệu sản xuất thông qua MySQL Server.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án kết hợp giữa xử lý ảnh trên máy tính (High-level controller) và điều khiển nhúng thời gian thực trên vi điều khiển AVR ATmega328P (Low-level controller) qua giao thức UART. Tốc độ nhận diện đạt $\ge 25\text{ fps}$, độ chính xác phân loại $\ge 95%$ trong điều kiện ánh sáng tiêu chuẩn, thời gian chu kỳ gắp - thả (Pick-and-Place Cycle) đạt dưới $3.0\text{ giây/sản phẩm}$.

Phạm vi và giới hạn

  • Mô hình thử nghiệm trên băng tải mini với vận tốc tuyến tính $v \le 0.15\text{ m/s}$.
  • Nhận diện ổn định với phôi phẳng (màu sắc cơ bản: Đỏ, Xanh lá, Xanh dương, Vàng) và mã QR chuẩn ma trận 2D kích thước tối thiểu $25\text{ mm} \times 25\text{ mm}$.
  • Hệ thống hoạt động tối ưu trong điều kiện độ rọi ánh sáng môi trường ổn định ($300 - 500\text{ lux}$).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Phân loại thủ công Cảm biến màu quang học + Piston khí nén Hệ thống Robot Vision (Đề tài đề xuất)
Độ chính xác 90% - 94% (giảm theo ca làm) 92% - 95% (chỉ phát hiện điểm) 96% - 98% (ổn định)
Khả năng tracking động Thấp Không thể (chỉ kích hoạt cố định) Cao (theo dõi liên tục tọa độ)
Đọc dữ liệu định danh (QR/Barcode) Cần súng quét cầm tay Không hỗ trợ Tự động giải mã & trích xuất DB
Khả năng tùy biến quỹ đạo Linh hoạt nhưng chậm Cố định hành trình xy lanh Linh hoạt đa điểm trong không gian 3D
Chi phí đầu tư & bảo trì Chi phí nhân công định kỳ cao Trung bình (cần hệ thống nén khí) Tối ưu, cấu kiện module hóa thấp

Yêu cầu hệ thống (Mô hình MoSCoW)

  • Must have (Bắt buộc): Giải đúng động học ngược; nhận diện chính xác tọa độ phôi $(u, v)$ chuyển đổi sang $(P_x, P_y, P_z)$; gắp và thả đúng vị trí quy định; có chế độ điều khiển Manual/Auto.
  • Should have (Nên có): Bộ điều khiển bước vòng kín chống mất bước; lưu trữ lịch sử phân loại vào hệ quản trị cơ sở dữ liệu quan hệ (RDBMS MySQL).
  • Could have (Có thể có): Giao diện đồ họa hiển thị trực tiếp camera stream và bảng thống kê năng suất theo thời gian thực.
  • Won't have (Chưa thực hiện đợt này): Nhận diện 3D qua cảm biến đo chiều sâu (RGB-D Camera) hoặc tích hợp mạng nơ-ron học sâu (Deep Neural Networks).

Thiết kế kiến trúc hệ thống

+-------------------------------------------------------------------------+
|                           MÁY TÍNH XỬ LÝ TRUNG TÂM                       |
|  +-----------------------------------+  +----------------------------+  |
|  |       Computer Vision Engine      |  |     PyQt5 GUI Controller   |  |
|  | - OpenCV 4.9.0 / Pyzbar 0.1.9     |  | - Manual / Auto Control    |  |
|  | - HSV Filtering / QR Decoding     |  | - Realtime Yield Dashboard |  |
|  | - Coordinate Transform (Pixel->mm)|  +--------------+-------------+  |
|  +-----------------+-----------------+                 |                |
|                    |                         +---------+---------+      |
|                    +------> [ Kinematics ] ->| MySQL 8.0 Database|      |
|                             [ Solver (IK)  ] +-------------------+      |
+------------------------------------+------------------------------------+
                                     | USB Serial (UART @ 115200 bps)
                                     v
+-------------------------------------------------------------------------+
|                        KHỐI ĐIỀU KHIỂN NHÚNG REAL-TIME                   |
|  +-------------------------------------------------------------------+  |
|  |         Arduino UNO R3 (ATmega328P @ 16MHz) + CNC Shield V3       |  |
|  +-----------------+------------------------+------------------------+  |
|                    | Step/Dir Pulses        | Relay Output Logic        |
|                    v                        v                           |
|       +-------------------------+     +--------------------------+      |
|       | 3x Driver MKS Servo42C  |     | Mạch 2 Relay Opto 12VDC  |      |
|       | (FOC Closed-loop PID)   |     +-------------+------------+      |
|       +------------+------------+                   |                   |
+--------------------|--------------------------------|-------------------+
                     v                                v
        [3x Stepper 127K38200]             [Bơm hút chân không Pyp-370]
        [Khớp 1, Khớp 2, Khớp 3]            [Hút / Nhả chi tiết phôi]

Danh mục công nghệ và phần cứng sử dụng

Technology Stack:
├── Hardware:
│   ├── Mainboard: Arduino UNO R3 (ATmega328P - 8-bit, 16 MHz, 32KB Flash, 2KB SRAM)
│   ├── Expansion Shield: CNC Shield V3 (Hỗ trợ 4 trục, jumper microstepping)
│   ├── Closed-loop Stepper Driver: Makerbase MKS Servo42C (STM32 MCU + TMC2209 + 14-bit Magnetic Encoder)
│   ├── Actuators: 3x Hybrid Stepper Motor 127K38200 (1.8°/step, 1.7A, holding torque 43 N.cm)
│   ├── End-effector: Bơm hút chân không 12VDC Pyp-370 (Lưu lượng > 2 LPM, áp suất chân không < -58 kPa)
│   ├── Optical Sensor: Logitech C310 (HD 720p, 30 fps, tiêu cự cố định, cổng giao tiếp USB 2.0)
│   └── Conveyor Motor: Động cơ giảm tốc LS220 12VDC 30 RPM + Mạch băm xung PWM Mini 2.5A
└── Software & Libraries:
    ├── Embedded Firmware: Arduino C/C++ (Arduino IDE 2.3.2)
    ├── Vision & App Logic: Python 3.9.13
    ├── Core Vision Library: OpenCV (opencv-python 4.9.0.80)
    ├── QR Decoder: Pyzbar 0.1.9
    ├── GUI Framework: PyQt5 5.15.10
    └── Database: MySQL Server 8.0.36 + mysql-connector-python 8.3.0

Phương pháp nghiên cứu và quản lý dự án

Dự án được triển khai theo mô hình kỹ thuật lặp (Iterative Engineering Lifecycle) kết hợp phân kỳ kiểm thử chức năng (V-model verification):

Giai đoạn (Milestone) Nội dung thực hiện Sản phẩm bàn giao (Deliverables)
Phase 1 (Tuần 1 - 3) Tính toán động học, thiết kế CAD in 3D cơ khí robot Khung robot 3-DOF, Bảng thông số D-H
Phase 2 (Tuần 4 - 6) Lắp ráp mạch điều khiển, lập trình firmware giải mã tọa độ Module Arduino điều khiển 3 trục bước
Phase 3 (Tuần 7 - 9) Xử lý ảnh: Phân đoạn HSV, giải mã QR, chuyển đổi hệ tọa độ Script Python Computer Vision hoàn chỉnh
Phase 4 (Tuần 10 - 12) Ghép nối hệ thống toàn diện, thiết kế GUI PyQt5, Database Giao diện điều khiển, Database logs
Phase 5 (Tuần 13 - 15) Đánh giá sai số, tối ưu hóa chu kỳ gắp, viết tài liệu Báo cáo hoàn chỉnh, nghiệm thu mô hình

Implementation và kết quả

Cơ sở tính toán Động học (Kinematics)

Bảng thông số Denavit - Hartenberg (D-H) cho cánh tay robot Magician 3 bậc tự do:

Khâu ($i$) $a_i\text{ (mm)}$ $\alpha_i\text{ (rad)}$ $d_i\text{ (mm)}$ $\theta_i\text{ (rad)}$
1 $0$ $\pi/2$ $d_1 = 129$ $\theta_1$
2 $a_2 = 140$ $0$ $0$ $\theta_2$
3 $a_3 = 140$ $0$ $0$ $\theta_3$
4 $a_4 = 40$ $0$ $0$ $-(\theta_2 + \theta_3)$
5 $a_5 = 50$ $-\pi/2$ $0$ $0$

Ma trận biến đổi tổng quát từ khâu chấp hành cuối về gốc tọa độ đế robot: $$^0T_5 = \begin{bmatrix} c_1 & 0 & s_1 & c_1(a_4 + a_2 c_2 + a_3 c_{23}) \ s_1 & 0 & -c_1 & s_1(a_4 + a_2 c_2 + a_3 c_{23}) \ 0 & 1 & 0 & d_1 + a_2 s_2 + a_3 s_{23} - a_5 \ 0 & 0 & 0 & 1 \end{bmatrix}$$ Trong đó: $c_i = \cos(\theta_i)$, $s_i = \sin(\theta_i)$, $c_{23} = \cos(\theta_2 + \theta_3)$, $s_{23} = \sin(\theta_2 + \theta_3)$.

Nghiệm của bài toán động học nghịch (Inverse Kinematics) phục vụ điều khiển góc khớp $\theta_1, \theta_2, \theta_3$ từ tọa độ đích $P(P_x, P_y, P_z)$: $$\theta_1 = \text{atan2}(P_y, P_x)$$ $$\theta_3 = \text{atan2}\left(-\sqrt{1 - \left(\frac{X^2 + Y^2 + Z^2 - a_2^2 - a_3^2}{2 a_2 a_3}\right)^2}, \frac{X^2 + Y^2 + Z^2 - a_2^2 - a_3^2}{2 a_2 a_3}\right)$$ $$\theta_2 = \text{atan2}\left(Z(a_2 + a_3 c_3) - a_3 s_3 \sqrt{X^2 + Y^2}, (a_2 + a_3 c_3)\sqrt{X^2 + Y^2} + a_3 s_3 Z\right)$$ (Với $X = P_x - a_4 \cos\theta_1$, $Y = P_y - a_4 \sin\theta_1$, $Z = P_z - d_1 + a_5$).

Thuật toán xử lý ảnh và điều khiển

import cv2
import numpy as np
from pyzbar.pyzbar import decode

class ProductVisionPipeline:
    def __init__(self, calib_matrix: np.ndarray):
        # Ma trận biến đổi Affine/Perspective từ Pixel sang Robot Space (mm)
        self.H = calib_matrix
        # Dải ngưỡng màu HSV (Ví dụ: Màu Đỏ)
        self.color_ranges = {
            'RED': [
                (np.array([0, 120, 70]), np.array([10, 255, 255])),
                (np.array([170, 120, 70]), np.array([180, 255, 255]))
            ],
            'BLUE': [(np.array([100, 150, 0]), np.array([140, 255, 255]))],
            'GREEN': [(np.array([40, 70, 70]), np.array([80, 255, 255]))]
        }

    def process_frame(self, frame: np.ndarray, mode: str = 'COLOR'):
        """Trích xuất tọa độ vật thể và thuộc tính phân loại"""
        roi = frame[100:400, 150:500] # Vùng quan tâm (ROI) trên băng tải
        detected_objects = []

        if mode == 'COLOR':
            hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
            for color_name, ranges in self.color_ranges.items():
                mask = np.zeros(hsv.shape[:2], dtype=np.uint8)
                for lower, upper in ranges:
                    mask |= cv2.inRange(hsv, lower, upper)
                
                # Khử nhiễu hình thái học (Morphological Operations)
                kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
                mask = cv2.erode(mask, kernel, iterations=1)
                mask = cv2.dilate(mask, kernel, iterations=2)

                contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
                for cnt in contours:
                    if cv2.contourArea(cnt) > 800: # Lọc contour rác
                        M = cv2.moments(cnt)
                        if M["m00"] != 0:
                            cx = int(M["m10"] / M["m00"]) + 150
                            cy = int(M["m01"] / M["m00"]) + 100
                            robot_coords = self.pixel_to_robot(cx, cy)
                            detected_objects.append((color_name, robot_coords))
                            
        elif mode == 'QR':
            decoded_objs = decode(roi)
            for obj in decoded_objs:
                qr_data = obj.data.decode('utf-8')
                (x, y, w, h) = obj.rect
                cx, cy = x + w // 2 + 150, y + h // 2 + 100
                robot_coords = self.pixel_to_robot(cx, cy)
                detected_objects.append((qr_data, robot_coords))

        return detected_objects

    def pixel_to_robot(self, u: int, v: int) -> tuple:
        """Chuyển đổi điểm ảnh (u, v) sang tọa độ Cartesian (Px, Py)"""
        pixel_pt = np.array([u, v, 1.0], dtype=np.float32)
        robot_pt = np.dot(self.H, pixel_pt)
        return (robot_pt[0] / robot_pt[2], robot_pt[1] / robot_pt[2])

Firmware điều khiển nhúng trên Arduino

#include <Arduino.h>

// Định nghĩa chân Step/Dir trên CNC Shield V3
#define X_STEP_PIN 2
#define X_DIR_PIN  5
#define Y_STEP_PIN 3
#define Y_DIR_PIN  6
#define Z_STEP_PIN 4
#define Z_DIR_PIN  7
#define VACUUM_RELAY_PIN 12

// Hệ số bước trên độ (Microstepping 1/16 qua MKS Servo42C)
const float STEPS_PER_DEGREE = (200.0 * 16.0) / 360.0; // ~8.889 steps/deg

void stepMotor(int stepPin, int dirPin, float targetAngle, float &currentAngle) {
    float deltaAngle = targetAngle - currentAngle;
    digitalWrite(dirPin, deltaAngle >= 0 ? HIGH : LOW);
    long steps = abs(deltaAngle) * STEPS_PER_DEGREE;

    for (long i = 0; i < steps; i++) {
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(400); // Tần số phát xung ~2.5 kHz
        digitalWrite(stepPin, LOW);
        delayMicroseconds(400);
    }
    currentAngle = targetAngle;
}

void executeTrajectory(float t1, float t2, float t3, bool suction) {
    static float current_t1 = 0, current_t2 = 90, current_t3 = -90;
    // Điều khiển chuyển động các khớp đồng bộ
    stepMotor(X_STEP_PIN, X_DIR_PIN, t1, current_t1);
    stepMotor(Y_STEP_PIN, Y_DIR_PIN, t2, current_t2);
    stepMotor(Z_STEP_PIN, Z_DIR_PIN, t3, current_t3);
    
    // Điều khiển cơ cấu hút chân không
    digitalWrite(VACUUM_RELAY_PIN, suction ? HIGH : LOW);
}

Kiểm thử và đánh giá hiệu năng

Hệ thống được vận hành thử nghiệm qua 200 lượt phân loại phôi liên tục với các điều kiện khác nhau.

Kịch bản kiểm thử Số mẫu thử Tỷ lệ thành công Thời gian xử lý trung bình Sai số định vị trung bình
Phân loại màu (Độ rọi 400 lux) 50 98.0% (49/50) $32\text{ ms (CV)} + 2.1\text{s (Robot)}$ $\pm 1.2\text{ mm}$
Phân loại màu (Độ rọi yếu 150 lux) 50 88.0% (44/50) $45\text{ ms (CV)} + 2.1\text{s (Robot)}$ $\pm 2.8\text{ mm}$
Phân loại QR Code tĩnh 50 100.0% (50/50) $28\text{ ms (CV)} + 2.0\text{s (Robot)}$ $\pm 0.8\text{ mm}$
Phân loại QR Code trên băng tải ($0.1\text{ m/s}$) 50 96.0% (48/50) $35\text{ ms (CV)} + 2.4\text{s (Robot)}$ $\pm 1.5\text{ mm}$
Tóm tắt hiệu năng tổng thể:
├── FPS Camera trung bình: 28.6 fps (đáp ứng xử lý thời gian thực)
├── Độ chính xác phân loại trung bình: 95.5%
├── Thời gian chu kỳ hoàn tất (Pick -> Place -> Home): 2.45 giây/vật thể
└── Tỷ lệ trượt bước (Step Loss): 0.0% (nhờ encoder từ tính FOC trên MKS Servo42C)

Đổi mới và đóng góp

  1. Ứng dụng công nghệ bước vòng kín FOC giá rẻ (Closed-loop Stepper via MKS Servo42C): Thay vì sử dụng driver A4988/DRV8825 mạch hở truyền thống dễ mất bước khi thay đổi gia tốc đột ngột, việc tích hợp MKS Servo42C với vi điều khiển STM32 và encoder từ tính 14-bit (độ phân giải góc đạt $0.08^\circ$) giúp hệ thống đạt độ chính xác tương đương motor AC Servo công nghiệp nhưng với chi phí chỉ bằng $15%$.
  2. Kỹ thuật hiệu chuẩn hệ tọa độ Affine ma trận trực tiếp: Thuật toán tính toán ma trận chuyển đổi từ không gian điểm ảnh $(u, v)$ sang tọa độ Descartes thực $(P_x, P_y)$ được tối ưu hóa bằng giải thuật bình phương tối thiểu (Least Squares Calibration), loại bỏ méo quang học ngoại vi của ống kính webcam góc rộng.
  3. Kiến trúc điều khiển tách lớp (Decoupled Master-Slave Architecture): Phân chia tải tính toán thông minh: Máy tính đảm nhận các tác vụ nặng (Xử lý ma trận hình ảnh, giải thuật toán nghịch Kinematics, GUI, ghi nhận RDBMS), trong khi vi điều khiển tập trung phát xung chuyển động thời gian thực (Real-time pulse generation), triệt tiêu hoàn toàn hiện tượng trễ khung hình hoặc giật động cơ.
Chỉ số so sánh Robot Magician Basic (Gốc) Hệ thống Scara công nghiệp Giải pháp Đề tài phát triển
Hệ thống điều khiển Động cơ bước vòng hở AC Servo Controller Động cơ bước vòng kín FOC (MKS)
Thị giác tích hợp Module cảm biến màu rời Camera công nghiệp chuyên dụng Logitech C310 + Pipeline OpenCV
Quản lý dữ liệu Không hỗ trợ SCADA / MES chuyên biệt PyQt5 GUI + MySQL RDBMS Server
Chi phí chế tạo $\approx 25 - 35\text{ triệu VNĐ}$ $\ge 150\text{ triệu VNĐ}$ $\approx 4.5 - 6\text{ triệu VNĐ}$

Ứng dụng thực tế và triển khai

Tình huống ứng dụng công nghiệp

  • Dây chuyền đóng gói thương mại điện tử: Đọc mã QR dán trên gói hàng để tự động phân luồng bưu kiện vào các thùng gom tương ứng theo từng mã bưu cục.
  • Chế biến nông sản & thực phẩm: Phân loại trái cây (cà chua, cam, táo) theo màu sắc và độ chín trước khi đưa vào hệ thống bao gói chân không.
  • Lắp ráp vi mạch & linh kiện điện tử: Nhận diện và gắp linh kiện cơ khí theo màu sắc hoặc mã định danh phôi để cấp phôi chính xác cho máy dập CNC.

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI Analysis)

Bảng dự toán chi phí phần cứng (BOM - Bill of Materials):
├── Cấu kiện in 3D & Cơ khí khớp nối:        1.200.000 VNĐ
├── 03x Động cơ bước 127K38200:                 600.000 VNĐ
├── 03x Driver bước vòng kín MKS Servo42C:    1.050.000 VNĐ
├── Arduino UNO R3 + CNC Shield V3:             250.000 VNĐ
├── Bơm chân không Pyp-370 + Khí nén:           350.000 VNĐ
├── Webcam Logitech C310 + Băng tải mini:       950.000 VNĐ
├── Nguồn tổ ong 12V-10A, Relay, Switch:        400.000 VNĐ
└── TỔNG CHI PHÍ PHẦN CỨNG:                   4.800.000 VNĐ
  • Ước tính thời gian hoàn vốn (ROI): Một công nhân phân loại thủ công có mức lương trung bình $7.000.000\text{ VNĐ/tháng}$. Một trạm phân loại bán tự động 2 robot (chi phí $\approx 15.000.000\text{ VNĐ}$ bao gồm khung nhôm định hình chuẩn công nghiệp) có thể hoạt động 2 ca liên tục, giúp hoàn vốn đầu tư chỉ trong vòng 1.5 đến 2.5 tháng vận hành.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Độ phụ thuộc ánh sáng môi trường: Phương pháp phân ngưỡng không gian màu HSV dễ bị biến dạng giá trị khi cường độ sáng thay đổi đột ngột hoặc xuất hiện bóng đổ (shadow casting) từ thân robot.
  • Tốc độ băng chuyền giới hạn: Khi vận tốc băng tải vượt quá $0.15\text{ m/s}$, hiện tượng mờ chuyển động (motion blur) trên webcam Logitech C310 tiêu cự cố định làm giảm tỷ lệ giải mã QR thành công xuống dưới $80%$.
  • Hiện tượng chồng lấn vật thể: Chưa xử lý được bài toán phôi dính liền hoặc xếp chồng lên nhau do chỉ sử dụng camera 2D phẳng.

Hướng phát triển nâng cao

  1. Tích hợp mô hình Học sâu (Deep Learning Object Detection): Triển khai mạng YOLOv8-Nano tối ưu bằng TensorRT để nhận dạng đa đối tượng, không phụ thuộc vào điều kiện chiếu sáng và góc nghiêng của phôi.
  2. Nâng cấp Camera RGB-D / Intel RealSense: Bổ sung cảm biến đo chiều sâu để xác định chính xác cao độ $Z$ và phân loại các vật thể có hình dạng 3D phức tạp.
  3. Nâng cấp cơ cấu chấp hành lên 4-6 bậc tự do: Bổ sung thêm trục xoay khâu cuối (Roll/Pitch/Yaw) để gắp các sản phẩm đặt nghiêng hoặc xoay góc bất kỳ trên băng chuyền.
  4. Chuẩn hóa công nghiệp với PLC & ROS2: Chuyển đổi mã nguồn sang khung điều khiển Robot Operating System 2 (ROS2) chạy trên bo mạch nhúng NVIDIA Jetson Orin Nano, kết nối giao thức mạng công nghiệp Modbus TCP/IP hoặc OPC-UA.

Đối tượng hưởng lợi

  • Sinh viên chuyên ngành Tự động hóa & Cơ điện tử: Cung cấp tài liệu tham khảo chi tiết từ lý thuyết động học D-H, thuật toán nội suy quỹ đạo đến kỹ năng lập trình nhúng C++ và xử lý ảnh Python thực chiến.
  • Kỹ sư tích hợp hệ thống (System Integrators): Nắm bắt mô hình kiến trúc điều khiển hybrid giữa PC và MCU; phương pháp ứng dụng driver vòng kín FOC để giảm giá thành dự án tự động hóa.
  • Các doanh nghiệp sản xuất vừa và nhỏ (SMEs): Tiếp cận mô hình tự động hóa phân loại phôi chi phí thấp, thời gian hoàn vốn nhanh, dễ bảo trì và làm chủ công nghệ không phụ thuộc nhà cung cấp nước ngoài.
  • Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm về độ trễ, sai số hệ thống trong bài toán kết hợp Computer Vision và Robot Manipulator thời gian thực.

Câu hỏi thường gặp

1. Yêu cầu cấu hình tối thiểu của máy tính điều khiển hệ thống là gì?

Máy tính cần trang bị tối thiểu CPU Intel Core i3 thế hệ 8 hoặc tương đương (khuyên dùng Core i5 / AMD Ryzen 5), RAM 8GB, có ít nhất 2 cổng USB 2.0/3.0 (1 cổng cho Camera, 1 cổng cho Arduino UART), chạy hệ điều hành Windows 10/11 hoặc Ubuntu 20.04/22.04 LTS.

2. Khi xảy ra hiện tượng mất bước do kẹt tải cơ khí, hệ thống xử lý như thế nào?

Nhờ tích hợp driver MKS Servo42C với encoder từ tính 14-bit phản hồi về STM32 theo chu kỳ $10\text{ kHz}$, driver sẽ tự động tăng dòng điện bù momen xoắn theo giải thuật PID. Nếu sai lệch vượt ngưỡng cho phép, màn hình OLED trên driver sẽ báo lỗi và gửi tín hiệu cảnh báo ngắt về vi điều khiển để dừng hệ thống an toàn.

3. Có thể thay thế đầu hút chân không bằng kẹp cơ khí (Gripper) được không?

Hoàn toàn được. Hệ thống phần cứng hỗ trợ mở rộng qua các cổng PWM trên CNC Shield V3. Người dùng chỉ cần thay đổi module đầu cuối bằng Servo RC (như MG996R) và điều chỉnh lệnh điều khiển góc mở ngàm kẹp trong firmware Arduino.

4. Chi phí bảo trì định kỳ cho cánh tay robot này ước tính bao nhiêu?

Chi phí bảo trì rất thấp do sử dụng các cấu kiện tiêu chuẩn. Các chi tiết chịu mài mòn như giác hút cao su (suction cup) hoặc dây đai GT2 có chi phí thay thế dưới $50.000\text{ VNĐ/chi tiết}$ với chu kỳ bảo dưỡng định kỳ từ 6 đến 12 tháng.

5. Khả năng mở rộng kết nối với hệ thống nhà máy (MES/SCADA) ra sao?

Cơ sở dữ liệu của hệ thống được xây dựng trên nền tảng MySQL 8.0 tiêu chuẩn. Bất kỳ phần mềm SCADA (như WinCC, Ignition) hoặc hệ thống quản lý điều hành sản xuất (MES/ERP) đều có thể kết nối đọc/ghi dữ liệu thông qua chuẩn giao tiếp ODBC/JDBC hoặc qua RESTful API xây dựng bằng Python Flask/FastAPI.


Kết luận

Đồ án tốt nghiệp "Điều khiển cánh tay robot phân loại sản phẩm ứng dụng thị giác máy tính" đã chứng minh tính khả thi và hiệu quả vượt trội trong việc kết hợp giữa cơ điện tử chính xác và thị giác máy tính hiện đại. Bằng việc giải quyết triệt để bài toán động học 3 bậc tự do, xây dựng pipeline xử lý ảnh thời gian thực đa tiêu chí (màu sắc, mã QR) và ứng dụng điều khiển bước vòng kín FOC tiên tiến, đề tài không chỉ đạt được độ chính xác phân loại $\ge 95.5%$ mà còn tối ưu hóa chi phí chế tạo ở mức tối thiểu.

Mô hình là nền tảng vững chắc để chuyển giao công nghệ cho các trạm đóng gói tự động hóa quy mô vừa và nhỏ, đồng thời là học liệu ứng dụng giá trị cho công tác đào tạo và nghiên cứu kỹ thuật điều khiển tự động trong kỷ nguyên số.