Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã thúc đẩy mạnh mẽ các nghiên cứu ứng dụng trí tuệ nhân tạo (AI), thị giác máy tính (Computer Vision) và robot tự hành (Autonomous Mobile Robots - AMR/AGV). Theo báo cáo từ Emerging Technologies: Autonomous Cars, thị trường phương tiện tự hành toàn cầu được dự báo đạt quy mô hàng triệu phương tiện thương mại trong hai thập kỷ tới, với tốc độ tăng trưởng kép (CAGR) trên 35%. Tại Việt Nam, xu hướng chuyển đổi số trong logistics, kho bãi thông minh và nhà máy sản xuất tự động đặt ra yêu cầu cấp thiết về các hệ thống xe tự hành nhỏ gọn, xử lý thời gian thực với chi phí tối ưu.

+-----------------------------------------------------------------------+
|                    KIẾN TRÚC TỔNG THỂ HỆ THỐNG                        |
|                                                                       |
|  [ Camera 8MP ] ---> [ NVIDIA Jetson Nano (OpenCV Pipeline) ]         |
|                             | (I2C Bus / SDA-SCL)                     |
|                             v                                         |
|  [ Động cơ DC ] <--- [ Mạch PCA9685 PWM ] ---> [ Servo Lái Emax ]     |
|   (Tốc độ 6-7 km/h)                             (Góc lái 50°-130°)    |
+-----------------------------------------------------------------------+

Đồ án "Điều Hướng Xe Tự Hành Tránh Vật Cản Ứng Dụng Thị Giác Máy Tính" được thực hiện bởi nhóm sinh viên Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM (ngành CNKT Điều khiển và Tự động hóa). Đề tài giải quyết bài toán cốt lõi: xây dựng mô hình xe tự hành kích thước nhỏ có khả năng tự định tuyến bám làn, nhận diện biển báo giao thông và né tránh chướng ngại vật theo thời gian thực mà không phụ thuộc vào cảm biến khoảng cách đắt đỏ hay vạch từ cố định.

Mục tiêu dự án

  1. Thiết kế và tích hợp phần cứng xe mô hình tỉ lệ 1/18 trên nền tảng vi xử lý nhúng NVIDIA Jetson Nano Developer Kit và Camera Raspberry Pi V2 8MP.
  2. Xây dựng pipeline xử lý ảnh số thời gian thực bằng thư viện OpenCV: tiền xử lý ảnh, trích xuất đặc trưng làn đường bằng thuật toán Canny và biến đổi xác suất Hough (Probabilistic Hough Transform).
  3. Phát triển module nhận diện biển báo điều hướng (rẽ trái, rẽ phải, dừng lại) dựa trên phân tích không gian màu HSV và nhận dạng hình thái học.
  4. Xây dựng thuật toán phát hiện và điều hướng tránh vật cản động/tĩnh, tự động tái lập quỹ đạo bám làn ban đầu.
  5. Thử nghiệm thực tế trên sa hình thực nghiệm khép kín (vòng tròn, số 8 và sa hình kết hợp), đảm bảo độ ổn định ở dải vận tốc 6–7 km/h.

Giải pháp và phạm vi nghiên cứu

  • Phương pháp tiếp cận: Sử dụng kỹ thuật thị giác máy tính truyền thống tối ưu hóa trên phần cứng nhúng GPU Maxwell 128-core, loại bỏ sự cồng kềnh và độ trễ của các mô hình Deep Learning nặng nề khi chạy trên biên (Edge computing).
  • Phạm vi & Giới hạn: Thử nghiệm trên mô hình RC Car 1/18 ngoài trời và trong nhà có điều kiện ánh sáng kiểm soát; camera thu nhận độ phân giải $600 \times 400$ pixels; góc quay servo điều hướng giới hạn trong khoảng $[50^\circ, 130^\circ]$ với vị trí cân bằng tại $90^\circ$.

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

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

Tiêu chí so sánh Hệ thống AGV Dò Line Từ / Quang Hệ thống Tự Hành Dựa Trên LiDAR + SLAM Giải pháp Thị Giác Máy Tính (Đề tài)
Chi phí phần cứng Thấp ($100 - $300) Rất cao ($1,500 - $5,000+) Tối ưu ($250 - $450)
Độ linh hoạt sa hình Kém (phải dán lại đường line) Rất cao (bản đồ số hóa 2D/3D) Cao (thay đổi theo vạch kẻ đường)
Nhận diện biển báo Không hỗ trợ Phức tạp, cần camera phụ trợ Tích hợp trực tiếp trên cùng luồng ảnh
Tài nguyên tính toán Vi điều khiển 8/32-bit cơ bản Máy tính công nghiệp, GPU rời Bo mạch nhúng GPU (Jetson Nano)
Khả năng né vật cản Dừng khẩn cấp (Emergency Stop) Tính toán quỹ đạo động (RRT*/A*) Tính toán né tức thời theo ROI

Yêu cầu hệ thống theo ma trận MoSCoW

  • Must have (Bắt buộc): Giữ làn đường liên tục, điều khiển góc lái servo qua giao tiếp $I^2C$, dừng xe khi phát hiện biển Stop hoặc vật cản chắn toàn bộ làn.
  • Should have (Nên có): Nhận diện chính xác biển báo rẽ trái/phải để chuyển hướng ở giao lộ, né vật cản cục bộ và quay lại làn bám.
  • Could have (Có thể mở rộng): Tự động điều chỉnh tốc độ động cơ DC theo bán kính cong của cua quẹo.
  • Won't have (Chưa thực hiện): Tích hợp định vị toàn cầu GPS vi sai (RTK) và bản đồ số 3D độ phân giải cao.

Thiết kế hệ thống

+-----------------------------------------------------------------------+
|                 SƠ ĐỒ KHỐI PHẦN CỨNG VÀ KẾT NỐI                       |
|                                                                       |
|  [ Pin LiPo 3S 11.1V ]                                                |
|         |                                                             |
|         +---> [ Buck XL4016E1 ] ---> 5V/4A ---> [ Jetson Nano ]       |
|         |                                              |              |
|         |                                        (I2C: SDA/SCL)       |
|         |                                              |              |
|         +---> [ Driver DC ] <--- [ PCA9685 PWM ] <-----+              |
|                     |                  |                              |
|                     v                  v                              |
|             [ Động cơ JGA-25 ]    [ Servo Emax ]                      |
+-----------------------------------------------------------------------+
  • Bộ xử lý trung tâm: NVIDIA Jetson Nano (Quad-core ARM Cortex-A57 @ 1.43 GHz, 128-core Maxwell GPU, 4GB LPDDR4 64-bit).
  • Cảm biến thị giác: Camera Module Raspberry Pi V2 (Cảm biến Sony IMX219 8-megapixel, giao tiếp MIPI-CSI-2 qua Video4Linux2 - V4L2).
  • Mạch chấp hành & Điều khiển xung: Module PCA9685 16-channel 12-bit PWM giao tiếp $I^2C$ (địa chỉ mặc định 0x40), cấp xung điều khiển motor servo Emax kim loại và động cơ DC giảm tốc JGA-25.
  • Hệ thống phân phối nguồn: Pin LiPo Tiger 3S 11.1V – 12.6V, mạch hạ áp xung DC-DC Buck công suất cao XH-M404 (IC XL4016E1, dòng tải tối đa 8A).
  • Nguyên lý giao tiếp $I^2C$: Sử dụng 2 đường tín hiệu chuẩn gồm SDA (Serial Data) và SCL (Serial Clock). Khung truyền master-slave chuẩn 8-bit dữ liệu kèm 1-bit ACK/NACK, tần số xung clock $100\text{ kHz}$ (Standard Mode) đảm bảo tín hiệu PWM không bị nhiễu và suy hao.
+---------------+---------------+---------------+---------------+
| START (1-bit) | ADDR (7-bit)  | R/W (1-bit=0) | ACK (1-bit)   |
+---------------+---------------+---------------+---------------+
| DATA (8-bit)  | ACK (1-bit)   | STOP (1-bit)  |               |
+---------------+---------------+---------------+---------------+

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

Dự án áp dụng mô hình phân kỳ kỹ thuật 4 giai đoạn với phương pháp kiểm thử liên tục (Hardware-in-the-Loop):

+-------------------+      +-------------------+      +-------------------+
|  1. Thiết kế HW   | ---> |  2. Vision Core   | ---> |  3. Test Sa hình  |
|  (Tuần 1 - 3)     |      |  (Tuần 4 - 8)     |      |  (Tuần 9 - 12)    |
+-------------------+      +-------------------+      +-------------------+
                                                                |
                                                                v
                                                      +-------------------+
                                                      |  4. Tối ưu & Báo  |
                                                      |  (Tuần 13 - 15)   |
                                                      +-------------------+
  1. Giai đoạn 1 (Hardware Integration): Thiết kế kết cấu cơ khí mô hình RC Car, tích hợp mạch nguồn buck, đấu nối module giao tiếp $I^2C$ và hiệu chuẩn xung PWM cho servo.
  2. Giai đoạn 2 (Vision Core Development): Xây dựng module tiền xử lý ảnh, bộ lọc Canny, biến đổi Hough xác định tâm làn đường và thuật toán phân loại biển báo trên OpenCV 4.x.
  3. Giai đoạn 3 (Control & Navigation Logic): Thiết kế bộ điều khiển điều hướng góc lái servo kết hợp thuật toán né vật cản theo vùng quan tâm (ROI).
  4. Giai đoạn 4 (Field Testing & Optimization): Đánh giá thực nghiệm trên sa hình vòng tròn, số 8 và sa hình hỗn hợp ngoài trời, tinh chỉnh tham số threshold theo biến thiên ánh sáng.

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

1. Pipeline xử lý và nhận diện vạch kẻ làn đường

Quá trình xử lý ảnh từ Camera Raspberry Pi V2 được tối ưu qua chuỗi biến đổi hình thái học và toán tử ma trận tích chập (Convolution):

+---------------+     +---------------+     +---------------+     +---------------+
| Frame Đầu Vào | --> | Chuyển Grayscale| --> | Gaussian Blur | --> | Canny Edge    |
| (600x400 BGR) |     | (cv2.cvtColor)|     | (Kernel 5x5)  |     | (Sobel Gx, Gy)|
+---------------+     +---------------+     +---------------+     +---------------+
                                                                          |
                                                                          v
+---------------+     +---------------+     +---------------+     +---------------+
| Tính Góc Lái  | <-- | HoughLinesP   | <-- | Dilation      | <-- | Cắt ROI Vùng  |
| (50° - 130°)  |     | (ρ=2, θ=π/180)|     | (Phép giãn nở)|     | Quan Tâm      |
+---------------+     +---------------+     +---------------+     +---------------+
  • Bước 1: Giảm nhiễu bằng bộ lọc Gaussian 2D kích thước $5 \times 5$:

$$g(i, j) = \sum_{k=-2}^{2} \sum_{l=-2}^{2} f(i+k, j+l) \cdot h(k, l)$$

  • Bước 2: Tính Gradient và hướng biên bằng bộ lọc Sobel $3 \times 3$:

$$G_x = \begin{bmatrix} -1 & 0 & 1 \ -2 & 0 & 2 \ -1 & 0 & 1 \end{bmatrix} * I, \quad G_y = \begin{bmatrix} -1 & -2 & -1 \ 0 & 0 & 0 \ 1 & 2 & 1 \end{bmatrix} * I$$

$$|G| = \sqrt{G_x^2 + G_y^2}, \quad \theta = \arctan\left(\frac{G_y}{G_x}\right)$$

  • Bước 3: Loại bỏ không cực đại (Non-Maximum Suppression) & Phân ngưỡng kép (Hysteresis Thresholding) với hai ngưỡng $T_{low} = 50, T_{high} = 150$.
  • Bước 4: Biến đổi xác suất Hough (Probabilistic Hough Transform) trích xuất đoạn thẳng: Phương trình đường thẳng trong tọa độ cực:

$$\rho = x \cdot \cos(\theta) + y \cdot \sin(\theta)$$

import cv2
import numpy as np

def detect_lane_and_calculate_steering(frame):
    # 1. Chuyển đổi không gian màu và làm mờ
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    
    # 2. Phát hiện cạnh bằng Canny
    edges = cv2.Canny(blurred, threshold1=50, threshold2=150)
    
    # 3. Giới hạn vùng quan tâm (Region of Interest - ROI)
    height, width = edges.shape
    roi_mask = np.zeros_like(edges)
    polygon = np.array([[
        (0, height),
        (0, int(height * 0.5)),
        (width, int(height * 0.5)),
        (width, height)
    ]], np.int32)
    cv2.fillPoly(roi_mask, polygon, 255)
    masked_edges = cv2.bitwise_and(edges, roi_mask)
    
    # 4. Biến đổi xác suất Hough
    lines = cv2.HoughLinesP(
        masked_edges,
        rho=2,
        theta=np.pi / 180,
        threshold=40,
        minLineLength=30,
        maxLineGap=10
    )
    
    # 5. Phân loại đoạn thẳng trái/phải và tính toán góc lái
    center_x = width // 2
    lane_center = center_x
    if lines is not None:
        left_points, right_points = [], []
        for line in lines:
            x1, y1, x2, y2 = line[0]
            slope = (y2 - y1) / (x2 - x1 + 1e-6)
            if slope < -0.3:
                left_points.extend([(x1, y1), (x2, y2)])
            elif slope > 0.3:
                right_points.extend([(x1, y1), (x2, y2)])
        
        # Tính toán điểm trung tâm làn đường
        if left_points and right_points:
            left_x = np.mean([p[0] for p in left_points])
            right_x = np.mean([p[0] for p in right_points])
            lane_center = (left_x + right_x) / 2.0
            
    # Tính toán góc lệch và ánh xạ về góc lái servo (50 - 130 độ)
    error = lane_center - center_x
    steering_angle = int(np.clip(90 + (error * 0.15), 50, 130))
    return steering_angle, masked_edges

2. Xử lý nhận dạng biển báo giao thông trong không gian màu HSV

Sử dụng không gian màu HSV để phân tách độc lập kênh màu (Hue) khỏi cường độ sáng (Value), triệt tiêu hiện tượng bóng râm và chói sáng ngoài trời:

def classify_traffic_sign(sign_roi):
    hsv = cv2.cvtColor(sign_roi, cv2.COLOR_BGR2HSV)
    # Ngưỡng màu xanh dương (Biển báo chỉ dẫn rẽ)
    lower_blue = np.array([100, 150, 50])
    upper_blue = np.array([140, 255, 255])
    mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
    
    # Trích xuất contour lớn nhất
    contours, _ = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    if contours:
        c = max(contours, key=cv2.contourArea)
        if cv2.contourArea(c) > 500:
            x, y, w, h = cv2.boundingRect(c)
            # Tách nửa trái và nửa phải để kiểm tra hướng mũi tên
            half_w = w // 2
            left_half = mask_blue[y:y+h, x:x+half_w]
            right_half = mask_blue[y:y+h, x+half_w:x+w]
            if cv2.countNonZero(left_half) > cv2.countNonZero(right_half):
                return "TURN_LEFT"
            else:
                return "TURN_RIGHT"
    return "UNKNOWN"

Thử nghiệm và đánh giá chất lượng

Hệ thống được kiểm thử qua 4 kịch bản sa hình với hơn 200 lượt chạy đánh giá độc lập:

+-------------------------------------------------------------------------+
|                  CÁC KỊCH BẢN KIỂM THỬ TRÊN SA HÌNH                     |
|                                                                         |
|  [ Sa hình 1: Vòng tròn ]  [ Sa hình 2: Hình số 8 ]  [ Sa hình 3: Vật cản]
|   - Bán kính cong: 1.2m     - Giao lộ cắt chéo        - Vật cản tĩnh 15cm
|   - Test giữ làn liên tục   - Test rẽ trái / phải     - Test né & hoàn làn
+-------------------------------------------------------------------------+
Kịch bản kiểm thử Số lần thử Số lần thành công Tỉ lệ chính xác (%) Tốc độ trung bình Độ trễ xử lý (Latency)
Bám làn sa hình vòng tròn 60 58 96.67% 6.5 km/h $32.4\text{ ms}$ (30.8 FPS)
Bám làn sa hình số 8 50 47 94.00% 6.2 km/h $33.1\text{ ms}$ (30.2 FPS)
Nhận diện biển báo (Trái/Phải/Dừng) 50 46 92.00% 5.8 km/h $36.8\text{ ms}$ (27.1 FPS)
Phát hiện và né tránh vật cản 40 37 92.50% 5.5 km/h $38.2\text{ ms}$ (26.1 FPS)

Kết quả đạt được so với mục tiêu ban đầu

  • Tốc độ xử lý khung hình đạt mức ổn định 26–31 FPS trực tiếp trên Jetson Nano ở độ phân giải $600 \times 400$.
  • Tỉ lệ điều hướng bám làn chính xác tổng thể đạt 95.3%, sai số lệch tâm quỹ đạo $< 2.5\text{ cm}$.
  • Hệ thống thực hiện chuyển hướng mượt mà với dải góc lái $50^\circ - 130^\circ$, loại bỏ hoàn toàn hiện tượng rung lắc cơ cấu lái nhờ bộ lọc thông thấp số trên tín hiệu PWM.

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

Điểm đột phá kỹ thuật

  1. Pipeline xử lý lai (Hybrid Image Processing Pipeline): Kết hợp phép toán hình thái học Dilation $\oplus$ và Erosion $\ominus$ trước khi thực thi Canny, giúp kết nối các đoạn vạch sơn bị đứt quãng hoặc mờ do phản xạ ánh sáng ngoài trời, tăng độ nhạy phát hiện đường biên lên 28.4% so với Canny thuần túy.
  2. Kỹ thuật tối ưu hóa bộ nhớ đệm ma trận tích chập: Chuyển đổi các ma trận kernel lọc về dạng số nguyên và mảng 1D liên tục trong bộ nhớ RAM, giảm thiểu chu kỳ nạp truy xuất bộ nhớ của CPU ARM, cải thiện tốc độ xử lý thêm 22.5%.
  3. Thuật toán điều hướng né vật cản theo vùng ROI phân lớp: Chia khung hình thành 3 dải ROI ngang (xa, trung, gần). Khi phát hiện vật cản ở dải trung, hệ thống tính toán vector bù góc lái tức thời và kích hoạt chế độ "bám biên ngược chiều vật cản" cho tới khi vùng ROI gần hoàn toàn sạch bóng vật thể.
+-----------------------------------------------------------+
|               PHÂN LỚP VÙNG QUAN TÂM (ROI)                |
|                                                           |
|  [ ROI Xa   ] -> Dự đoán hướng cong làn đường             |
|  [ ROI Trung] -> Phát hiện vật cản từ cự ly 1.0m - 1.5m    |
|  [ ROI Gần  ] -> Tính góc lái servo tức thời (0.3m - 0.8m) |
+-----------------------------------------------------------+

Đóng góp khoa học và ứng dụng thực tiễn

  • Đóng góp một kiến trúc tham chiếu hoàn chỉnh về việc triển khai hệ thống thị giác máy tính thời gian thực trên bo mạch nhúng biên giá rẻ, phục vụ đào tạo và nghiên cứu chuyên sâu về Autonomous Vehicles trong các trường đại học kỹ thuật.
  • Xây dựng giải pháp thay thế hiệu quả cho các hệ thống AGV công nghiệp truyền thống vốn đòi hỏi chi phí bảo trì đường ray từ tính tốn kém.

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

Tình huống ứng dụng thực tế (Real-world Use Cases)

  • Xe tự hành AGV vận chuyển hàng trong kho xưởng thông minh: Thay thế băng chuyền cố định, xe di chuyển linh hoạt theo các vạch kẻ phân làn nhà xưởng, tự nhận diện trạm dừng qua biển báo mã màu và né tránh công nhân hoặc pallet hàng cản đường.
  • Robot dẫn đường trong bệnh viện, sân bay, trung tâm thương mại: Vận hành độc lập để hướng dẫn lộ trình di chuyển, nhận biết các khu vực hạn chế thông qua biển cảnh báo thị giác.
  • Thiết bị hỗ trợ di chuyển thông minh: Ứng dụng thuật toán phát hiện vật cản và nhận dạng đường đi để phát triển xe lăn điện thông minh hoặc gậy điều hướng cho người khiếm thị.
+-------------------------------------------------------------------------+
|                  LỘ TRÌNH TRIỂN KHAI THỰC TẾ (12 THÁNG)                 |
|                                                                         |
|  Tháng 1-3          Tháng 4-6          Tháng 7-9          Tháng 10-12   |
|  [ Proof of Concept] [ Thử nghiệm kho ] [ Tối ưu chuẩn IP] [ Đóng gói SP]
|  - Khung xe 1/18     - Khung tải 100kg  - Vỏ bảo vệ        - Chứng nhận |
|  - Sa hình lab       - Nhà máy thật     - Pin 24V công nghiệp - Thương mại|
+-------------------------------------------------------------------------+

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí chế tạo mô hình thử nghiệm: Xấp xỉ $350 USD (NVIDIA Jetson Nano: $100, Camera V2: $30, Chassis & Động cơ/Servo: $120, Pin & Mạch nguồn PWM: $100).
  • Chi phí sản xuất công nghiệp hóa (Ước tính tải trọng 100kg): Khoảng $1,200 - $1,800 USD/xe (rẻ hơn 60–70% so với AGV nhập khẩu nguyên chiếc dùng cảm biến quét laser 2D đắt tiền).
  • Thời gian hoàn vốn (ROI): Ước tính từ 8 – 11 tháng khi thay thế 2 vị trí nhân công vận chuyển thủ công trong các phân xưởng may mặc hoặc lắp ráp linh kiện điện tử.

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

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

  • Phụ thuộc vào điều kiện chiếu sáng cực đoan: Hiện tượng lóa sáng mặt trời gay gắt hoặc môi trường bóng tối hoàn toàn làm giảm độ tương phản của vạch kẻ đường, dẫn đến sai số phân ngưỡng Canny.
  • Tích lũy trễ cơ khí: Động cơ servo RC giá rẻ có độ rơ cơ khí sau thời gian dài vận hành liên tục, gây sai lệch nhỏ trong việc duy trì tâm làn ở tốc độ cao ($> 10\text{ km/h}$).

Kế hoạch nâng cấp và hướng nghiên cứu mở rộng

  • Tích hợp mạng nơ-ron tích chập nhẹ (Lightweight CNN như MobileNetV3-SSD hoặc YOLOv5-Nano) được tối ưu qua NVIDIA TensorRT để nâng cao độ chính xác nhận dạng biển báo trong mọi điều kiện thời tiết.
  • Kết hợp thuật toán lọc Kalman mở rộng (Extended Kalman Filter - EKF) dung hợp dữ liệu giữa Camera và cảm biến quán tính IMU 9 trục nhằm ước lượng quỹ đạo di chuyển chính xác khi vạch kẻ đường bị mất dấu cục bộ.

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

+-----------------------------------------------------------------------+
|                         ĐỐI TƯỢNG HƯỞNG LỢI                           |
|                                                                       |
|  [ Sinh viên Kỹ thuật ] ---> Giáo trình thực hành Computer Vision & AI|
|  [ Kỹ sư Embedded/IoT ] ---> Mẫu thiết kế phần cứng & Driver I2C/PWM  |
|  [ Doanh nghiệp SX/Kho] ---> Giải pháp AGV bám làn chi phí thấp       |
|  [ Nhà nghiên cứu ]     ---> Benchmark thị giác máy tính trên Edge GPU|
+-----------------------------------------------------------------------+
  • Sinh viên & Học viên ngành Tự động hóa, Điện tử, CNTT: Tiếp cận tài liệu thực chiến về lập trình OpenCV C++/Python trên Linux nhúng, nắm vững quy trình điều khiển xung PWM và truyền thông công nghiệp $I^2C$.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Engineers): Nắm bắt kiến trúc tích hợp hệ thống giữa phần mềm xử lý ảnh cấp cao (High-level Image Processing) và mạch điều khiển cơ điện tử cấp thấp (Low-level Actuators).
  • Doanh nghiệp vừa và nhỏ (SMEs): Cơ sở nền tảng để tự chủ thiết kế các dòng xe tự hành kéo hàng nội bộ trong nhà xưởng với chi phí đầu tư ban đầu thấp, dễ dàng bảo trì.

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

1. Cấu hình phần cứng tối thiểu để triển khai giải pháp này là gì?

Hệ thống yêu cầu tối thiểu một bo mạch nhúng có khả năng tăng tốc phần cứng OpenCV như NVIDIA Jetson Nano (hoặc Raspberry Pi 4 Model B 4GB/8GB), Camera 5MP trở lên hỗ trợ giao tiếp MIPI-CSI hoặc USB UVC, Module điều khiển PWM 16 kênh PCA9685, 1 Động cơ Servo lái góc kéo kim loại và nguồn cấp tối thiểu 5V/4A độc lập cho bo xử lý.

2. Hệ thống xử lý thế nào khi đường kẻ làn bị đứt đoạn hoặc mờ?

Thuật toán sử dụng kỹ thuật giãn nở hình thái học (Morphological Dilation) để liên kết các điểm biên đứt quãng, kết hợp thuật toán biến đổi xác suất Hough (cv2.HoughLinesP) cho phép tham số hóa các đoạn thẳng gián đoạn với ngưỡng maxLineGap. Nếu cả hai làn đều mất dấu trong khoảng thời gian $< 500\text{ ms}$, bộ nhớ đệm góc lái sẽ giữ nguyên vector điều hướng gần nhất để xe tiếp tục di chuyển ổn định.

3. Tại sao chọn giao tiếp $I^2C$ kết hợp module PCA9685 thay vì xuất PWM trực tiếp từ GPIO của Jetson Nano?

Việc tạo xung PWM trực tiếp từ hệ điều hành Linux (không phải Real-time OS) trên Jetson Nano dễ bị hiện tượng trôi xung (jitter) do xung đột tài nguyên CPU khi xử lý ảnh nặng. Module PCA9685 tích hợp chip tạo dao động nội 25MHz độc lập, nhận lệnh qua bus $I^2C$ và duy trì tần số quét $50\text{ Hz}$ cực kỳ chính xác cho servo mà không tốn tài nguyên xử lý của vi điều khiển trung tâm.

4. Chi phí bảo trì và độ bền linh kiện trong môi trường công nghiệp ra sao?

Giải pháp không sử dụng cảm biến cơ học tiếp xúc trên mặt đường nên độ bền phần cứng quang học rất cao. Chi phí bảo trì chủ yếu tập trung vào việc vệ sinh ống kính camera định kỳ (1-2 tháng/lần) và thay thế chổi than động cơ DC sau mỗi $3,000$ giờ vận hành liên tục.

5. Khả năng mở rộng nâng cấp sang mô hình xe thật (Full-scale Vehicle) như thế nào?

Kiến trúc phần mềm hoàn toàn tương thích để chuyển đổi sang hệ thống điều khiển Drive-by-Wire trên ô tô thực tế. Tín hiệu góc lái và vận tốc từ Jetson Nano có thể chuyển đổi sang chuẩn giao tiếp mạng truyền thông CAN bus (Controller Area Network) thông qua module mở rộng CAN SPI để điều khiển trực tiếp trợ lực lái điện (EPS) và bướm ga điện tử của ô tô.


Kết luận

Đồ án tốt nghiệp "Điều Hướng Xe Tự Hành Tránh Vật Cản Ứng Dụng Thị Giác Máy Tính" của sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã chứng minh tính khả thi vượt trội của việc ứng dụng thị giác máy tính truyền thống kết hợp phần cứng nhúng biên GPU giá rẻ trong bài toán tự hành hóa. Với việc đạt tốc độ xử lý thời gian thực 30 FPS, vận tốc ổn định 6–7 km/h, cùng độ chính xác điều hướng trên 95%, hệ thống mở ra hướng tiếp cận thực dụng, hiệu quả cao cho các ứng dụng AGV trong công nghiệp và robot dịch vụ thông minh.

Các nhà phát triển, sinh viên và kỹ sư quan tâm có thể ứng dụng trực tiếp mã nguồn và thiết kế phần cứng này để phát triển các dự án xe tự hành chuyên sâu hơn, góp phần thúc đẩy hệ sinh thái tự động hóa thông minh tại Việt Nam.