Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và Trí tuệ Nhân tạo (Artificial Intelligence - AI) đang tái định hình toàn bộ ngành công nghiệp ô tô toàn cầu. Theo phân loại của Hiệp hội Kỹ sư Ô tô (SAE International J3016), xe tự hành được phân chia từ Cấp độ 0 (không tự động hóa) đến Cấp độ 5 (tự hành hoàn toàn trong mọi điều kiện). Các tập đoàn công nghệ và sản xuất xe hàng đầu như Tesla, Waymo, BMW, Audi đang đầu tư hàng tỷ USD nhằm thương mại hóa các hệ thống hỗ trợ lái xe nâng cao (ADAS - Advanced Driver Assistance Systems) và công nghệ xe tự lái cấp độ cao. Tại Việt Nam, xu hướng nghiên cứu và phát triển xe tự hành đang được thúc đẩy mạnh mẽ thông qua các sân chơi công nghệ như "Cuộc Đua Số" do FPT tổ chức, đặt ra yêu cầu cấp thiết về việc làm chủ công nghệ xử lý ảnh và điều khiển tự động trên nền tảng phần cứng nhúng.
Tuy nhiên, việc triển khai xe tự hành trong môi trường thực tế tại Việt Nam đối mặt với nhiều thách thức lớn (pain points):
- Điều kiện hạ tầng giao thông chưa đồng bộ, vạch kẻ làn đường (lane markings) thường xuyên bị mờ, đứt đoạn hoặc bị che khuất bởi bóng râm, cây cỏ và lá rơi.
- Độ biến thiên ánh sáng môi trường lớn gây hiện tượng lóa sáng, nhiễu quang học khi xử lý ảnh qua camera thông thường.
- Rào cản về chi phí phần cứng xử lý AI hiệu năng cao (high-performance compute nodes) đối với các mô hình nghiên cứu và ứng dụng thực tế quy mô nhỏ.
Dự án "Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành" được thực hiện tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) nhằm giải quyết bài toán trên thông qua mô hình xe tự hành thu nhỏ tích hợp kiến trúc tính toán biên (Edge Computing).
graph TD
A[Camera Logitech C270] -->|USB 2.0 / Video Stream| B(NVIDIA Jetson Nano)
B -->|Deep Learning / OpenCV Inference| C{Xử lý & Ra quyết định}
C -->|UART / TTL Serial Command| D(Arduino Uno R3)
D -->|PWM / Direction Signal| E[Driver BTS7960 -> 2x Motor RS550]
D -->|Step & Dir Pulses| F[Driver TB6600 -> Stepper Motor 57]
Mục tiêu dự án
- Nghiên cứu và xây dựng hoàn chỉnh mô hình phần cứng xe tự hành cơ điện tử với cơ cấu lái vi bước và động cơ dẫn động công suất cao.
- Thiết kế và tối ưu hóa giải pháp xử lý ảnh kết hợp mạng nơ-ron tích chập (Convolutional Neural Network - CNN) và mô hình học sâu hướng đối tượng (Object Detection API) để nhận diện đường đi và biển báo dừng (Stop Sign).
- Triển khai kiến trúc điều khiển thời gian thực (real-time control) phân tầng: xử lý AI trên máy tính nhúng NVIDIA Jetson Nano và điều khiển cơ cấu chấp hành qua vi điều khiển Arduino Uno R3.
- Thực nghiệm, đánh giá sai số, độ trễ và độ chính xác của xe trong điều kiện vận hành thực tế.
Phương pháp tiếp cận và Phạm vi
- Phương pháp tiếp cận: Sử dụng kỹ thuật học sâu (Deep Learning) với mô hình phân lớp tuần tự Keras/TensorFlow và mạng dò tìm đối tượng SSD MobileNet V2 / Faster R-CNN. Dữ liệu hình ảnh thu thập trực tiếp từ webcam được huấn luyện trên GPU máy trạm (Workstation với CUDA/cuDNN), sau đó tối ưu hóa và triển khai suy luận (inference) trực tiếp trên kit nhúng NVIDIA Jetson Nano.
- Chỉ số kỳ vọng: Tốc độ suy luận đạt từ 15–30 FPS trên bo mạch nhúng, độ chính xác nhận diện làn đường và biển báo đạt $\ge 90%$, độ trễ truyền thông nối tiếp $< 20\text{ ms}$.
- Phạm vi & Giới hạn: Thử nghiệm giới hạn trong sa hình môi trường khuôn viên xác định; hệ thống tập trung vào tính năng bám làn (Lane Tracking) và nhận diện biển báo Stop để phanh dừng tự động; chưa tích hợp cảm biến đo cự ly đa chiều (LiDAR, Radar).
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 mô hình Deep Learning, các phương pháp xử lý ảnh truyền thống đã được phân tích và đánh giá so sánh:
| Phương pháp |
Ưu điểm |
Nhược điểm |
Độ chính xác |
Độ phức tạp tính toán |
| Xử lý ảnh truyền thống (Canny + Hough Transform) |
Không cần tập dữ liệu huấn luyện, mã nguồn nhẹ, chạy tốt trên CPU yếu. |
Cực kỳ nhạy cảm với ánh sáng, nhiễu môi trường (bóng râm, lá cây), thất bại khi mất vạch kẻ chuẩn. |
60% – 70% |
Thấp ($\mathcal{O}(N)$) |
| HOG + SVM (Histogram of Oriented Gradients) |
Trích xuất đặc trưng hình học tốt, phát hiện đối tượng ổn định trong điều kiện tĩnh. |
Tốc độ xử lý khung hình thấp (~10 FPS), khả năng tổng quát hóa kém khi góc nhìn bị nghiêng. |
80% – 85% |
Trung bình |
| Deep Learning (SSD MobileNet / CNN Edge) |
Tự trích xuất đặc trưng phức tạp, chống nhiễu quang học cao, xử lý đa đối tượng đồng thời. |
Đòi hỏi phần cứng có nhân tăng tốc Tensor/GPU, cần quy trình gán nhãn dữ liệu chuẩn bị kỹ lưỡng. |
92% – 96% |
Cao (yêu cầu GPU Edge) |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc có): Xe tự động bám theo làn đường cong/thẳng; nhận diện biển báo Stop và dừng tự động trước vạch; giao tiếp Serial UART ổn định giữa Jetson Nano và Arduino Uno.
- Should have (Nên có): Cơ cấu bẻ lái sử dụng động cơ bước vi bước (Microstepping) để triệt tiêu hiện tượng giật góc lái; mô hình AI có khả năng chống nhiễu bóng râm.
- Could have (Có thể có): Giao diện giám sát từ xa qua mạng không dây (VNC Viewer/Web Streaming); nhận diện thêm người đi bộ và chướng ngại vật.
- Won't have (Chưa thực hiện ở giai đoạn này): Tự động lập bản đồ thời gian thực SLAM; tích hợp hệ thống định vị vệ tinh vi sai RTK-GPS.
Thiết kế hệ thống
Kiến trúc hệ thống được chia thành 5 khối chức năng chính hoạt động độc lập nhưng liên kết chặt chẽ qua các giao thức công nghiệp:
+-------------------------------------------------------------------------------+
| HỆ THỐNG ĐIỆN TOÁN BIÊN |
| +---------------------------+ +-------------------------------+ |
| | 2x Logitech C270 HD | --(USB)--> | NVIDIA Jetson Nano | |
| | (Lane + Sign Data Stream) | | (TensorFlow / OpenCV Engine) | |
| +---------------------------+ +-------------------------------+ |
+------------------------------------------------------------|------------------+
| (TTL Serial / UART)
+------------------------------------------------------------v------------------+
| HỆ THỐNG ĐIỀU KHIỂN CHẤP HÀNH |
| +-------------------------------------------------------------------------+ |
| | Arduino Uno R3 (ATmega328P) | |
| +-------------------------------------------------------------------------+ |
| | (PWM: D5, D6 / DIR: D2, D3) | (PUL/DIR Pulses: D8, D9)|
| v v |
| +-------------------+ +-------------------+ |
| | Module BTS7960 | | Driver TB6600 | |
| | (Dual H-Bridge) | | (Microstep Ctrl) | |
| +-------------------+ +-------------------+ |
| | (12V DC High Current) | (Bipolar Step Pulses) |
| v v |
| +-------------------+ +-------------------+ |
| | 2x Động cơ RS550 | | Step Motor Sz 57 | |
| | (Hệ thống truyền động) | (Cơ cấu bẻ lái) | |
| +-------------------+ +-------------------+ |
+-------------------------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Embedded Computing Platform: NVIDIA Jetson Nano Developer Kit (4-core ARM Cortex-A57 @ 1.43 GHz, GPU NVIDIA Maxwell 128 nhân kiến trúc CUDA, RAM 4GB 64-bit LPDDR4 25.6 GB/s).
- AI & Software Frameworks: Ubuntu 18.04 LTS (JetPack 4.4 L4T), Python 3.6.9, TensorFlow 1.15.2 / Keras 2.3.1, OpenCV 4.1.1 với hỗ trợ tăng tốc phần cứng GStreamer, CUDA Toolkit 10.0, cuDNN 7.6.3.
- Microcontroller: Arduino Uno R3 (Vi điều khiển ATmega328P 8-bit, Clock 16 MHz, Flash 32KB, SRAM 2KB).
- Actuator Hardware:
- Dẫn động: 02 Động cơ DC RS550 (Điện áp 12V, Công suất $35\text{ W} \times 2 = 70\text{ W}$, tốc độ không tải 15000 RPM) điều khiển qua cầu H kép BTS7960 43A MOSFET.
- Cơ cấu lái: 01 Động cơ bước Size 57 (NEMA 23, 2 pha 4 dây, góc bước cơ bản $1.8^\circ$, mô-men xoắn giữ $3.8\text{ Nm}$, dòng định mức 3.0A) điều khiển qua Driver TB6600 cài đặt chế độ Microstepping.
- Nguồn động lực: Bình ắc quy chì-axit Đồng Nai 12V – 90Ah.
Tính toán cân bằng năng lượng và thời gian hoạt động
Tổng công suất tiêu thụ danh định của toàn hệ thống ($P_{\text{total}}$):
$$P_{\text{total}} = P_{\text{Jetson}} + P_{\text{Arduino}} + P_{\text{DC_Motors}} + P_{\text{Stepper}} = 20\text{ W} + 0.15\text{ W} + 70\text{ W} + 36\text{ W} = 126.15\text{ W}$$
Thời gian vận hành liên tục lý thuyết của hệ thống với ắc quy $12\text{V} - 90\text{Ah}$ (áp dụng hệ số xả an toàn $\eta = 0.7$):
$$T = \frac{A \times V \times \eta}{P_{\text{total}}} = \frac{90\text{ Ah} \times 12\text{ V} \times 0.7}{126.15\text{ W}} \approx 5.99\text{ giờ}$$
Phương pháp nghiên cứu và phát triển (Methodology)
Dự án áp dụng mô hình phát triển lặp kết hợp kiểm thử thực nghiệm (Iterative Prototyping):
- Giai đoạn 1 (Tuần 1–6): Thiết kế 3D khung vỏ xe trên Autodesk Inventor; gia công cơ khí chính xác khung gầm chịu tải; lắp ráp động lực RS550 và cơ cấu lái trục vít - thanh răng với động cơ bước 57.
- Giai đoạn 2 (Tuần 7–14): Xây dựng hệ thống điện - điện tử; thiết kế mạch cách ly quang Optocoupler chống nhiễu ngược từ động cơ về Jetson Nano; lập trình firmware Arduino điều khiển PWM và phát xung vi bước.
- Giai đoạn 3 (Tuần 15–20): Thu thập dữ liệu hình ảnh (Dataset Generation) với hơn 1.200 ảnh chụp trong các điều kiện thực tế; gán nhãn bounding box bằng LabelImg; huấn luyện mô hình Object Detection và CNN Classification.
- Giai đoạn 4 (Tuần 21–24): Nạp mô hình vào Jetson Nano; tối ưu hóa tốc độ khung hình; căn chỉnh PID cho góc bẻ lái; chạy thử nghiệm thực địa và hiệu chỉnh ngưỡng nhận diện quang học.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
Quy trình xử lý ảnh trên máy tính nhúng Jetson Nano bao gồm các bước: Thu nhận luồng video (720p @ 30 FPS) $\rightarrow$ Tiền xử lý (Resize về $300 \times 300$ hoặc $224 \times 224$, chuẩn hóa ma trận điểm ảnh) $\rightarrow$ Đưa qua mạng nơ-ron tích chập trích xuất đặc trưng $\rightarrow$ Phân lớp hành vi di chuyển / Định vị Bounding Box biển báo $\rightarrow$ Đóng gói khung truyền UART gửi xuống Arduino.
import cv2
import numpy as np
import serial
import time
# Khởi tạo kết nối UART với Arduino Uno qua cổng USB Serial
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=0.1)
time.sleep(2) # Chờ kết nối ổn định
def send_control_command(state_code):
"""
Truyền mã điều khiển xuống Arduino:
'S': Stop, 'F': Forward, 'R': Turn Right, 'L': Turn Left
"""
ser.write(state_code.encode())
def preprocess_frame(frame, target_size=(224, 224)):
# Cắt vùng quan tâm (ROI - Region of Interest) ở nửa dưới khung hình
height, width, _ = frame.shape
roi = frame[int(height * 0.4):height, 0:width]
# Chuyển đổi không gian màu và chuẩn hóa dữ liệu
resized = cv2.resize(roi, target_size)
normalized = resized.astype(np.float32) / 255.0
return np.expand_dims(normalized, axis=0)
# Trích đoạn vòng lặp xử lý chính
def process_autonomous_pipeline(model, cap):
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
input_tensor = preprocess_frame(frame)
predictions = model.predict(input_tensor)
predicted_class = np.argmax(predictions[0])
# Ánh xạ kết quả suy luận thành hành vi điều khiển
if predicted_class == 0: # Làn đường thẳng đoạn 1
send_control_command('F')
elif predicted_class == 1: # Khúc cua / Rẽ phải
send_control_command('R')
elif predicted_class == 2: # Làn đường thẳng đoạn 2
send_control_command('F')
elif predicted_class == 3: # Phát hiện biển báo STOP
send_control_command('S')
break
Firmware trên Arduino Uno nhận lệnh nối tiếp và trực tiếp điều khiển các chân I/O công suất:
// Điều khiển vi bước động cơ bẻ lái và tốc độ xe
const int pinRPWM = 5; // PWM băm xung tốc độ cầu H BTS7960
const int pinLPWM = 6;
const int pinR_EN = 7;
const int pinL_EN = 7;
const int stepPin = 8; // Chân cấp xung Driver TB6600
const int dirPin = 9; // Chân hướng quay Driver TB6600
void setup() {
Serial.begin(115200);
pinMode(pinRPWM, OUTPUT);
pinMode(pinLPWM, OUTPUT);
pinMode(pinR_EN, OUTPUT);
digitalWrite(pinR_EN, HIGH);
pinMode(stepPin, OUTPUT);
pinMode(pinDIR, OUTPUT);
}
void steerTurn(int steps, int direction) {
digitalWrite(dirPin, direction);
for(int i = 0; i < steps; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(800); // Điều khiển tần số xung vi bước
digitalWrite(stepPin, LOW);
delayMicroseconds(800);
}
}
void loop() {
if (Serial.available() > 0) {
char cmd = Serial.read();
switch(cmd) {
case 'F': // Chạy thẳng
analogWrite(pinRPWM, 180);
analogWrite(pinLPWM, 0);
break;
case 'R': // Bẻ lái phải 200 vi bước
steerTurn(200, HIGH);
analogWrite(pinRPWM, 140);
break;
case 'S': // Phanh khẩn cấp
analogWrite(pinRPWM, 0);
analogWrite(pinLPWM, 0);
break;
}
}
}
Kiểm thử và Đánh giá hiệu năng
Hệ thống được thử nghiệm qua 2 kiến trúc mạng: Mô hình Deep Learning tuần tự trên Keras và Mô hình SSD MobileNet V2 sử dụng TensorFlow Object Detection API.
| Tiêu chí kỹ thuật |
Mô hình Keras/TensorFlow CNN |
Mô hình TensorFlow SSD MobileNet |
| Kích thước đầu vào |
$224 \times 224 \times 3$ |
$300 \times 300 \times 3$ |
| Dung lượng mô hình (.pb / .h5) |
14.2 MB |
68.5 MB |
| Thời gian huấn luyện (GPU GTX 1060) |
25 phút (100 Epochs) |
6.5 giờ (20.000 Steps) |
| Độ trễ suy luận trên Jetson Nano |
31.2 ms (~32 FPS) |
68.5 ms (~14.6 FPS) |
| Độ chính xác nhận diện làn thẳng |
94.8% |
97.2% |
| Độ chính xác nhận diện làn cong |
89.5% |
94.1% |
| Độ chính xác nhận diện biển báo Stop |
91.0% |
96.5% |
KẾT QUẢ ĐO KIỂM THỜI GIAN ĐÁP ỨNG THỰC TẾ (LATENCY BUDGET):
+-------------------------------------------------------------------------+
| Thu nhận ảnh (Camera Capture): 12.5 ms |
| Tiền xử lý (Preprocessing): 3.2 ms |
| Suy luận mạng AI (Inference): 31.2 ms (Model Keras CNN) |
| Truyền thông UART (115200 bps): 1.1 ms |
| Cơ cấu chấp hành (Actuation): 15.0 ms (TB6600 Driver Stepper Pulse)|
+-------------------------------------------------------------------------+
| TỔNG THỜI GIAN VÒNG ĐIỀU KHIỂN: 63.0 ms (Đảm bảo Real-time < 100ms) |
+-------------------------------------------------------------------------+
Đổi mới và đóng góp
Điểm đột phá kỹ thuật
- Kiến trúc tính toán phân cấp tối ưu phần cứng (Heterogeneous Compute Distribution): Phân chia triệt để tác vụ nặng (xử lý ma trận hình ảnh, tính toán tích chập trên 128 nhân CUDA của Jetson Nano) và tác vụ điều khiển động cơ thời gian thực chính xác cấp micro-giây (Arduino Uno R3 phát xung điều khiển động cơ bước qua driver TB6600 mà không gây nghẽn CPU chính).
- Kỹ thuật phân vùng dữ liệu thích nghi (Adaptive ROI & Hand-crafted Partitioning): Thay vì gán nhãn chung một lớp đường thẳng, nhóm nghiên cứu chia tách dữ liệu thành
thang 1 (trước cua) và thang 2 (sau cua), kết hợp phân vùng đối tượng địa vật cục bộ (td - bồn cây, t1t, t1p - biên vỉa hè). Kỹ thuật này giúp mạng Deep Learning giải quyết triệt để bài toán môi trường không có vạch kẻ sơn tiêu chuẩn, tăng độ chính xác phân lớp lên thêm 14.3% so với việc huấn luyện gộp.
- Cơ cấu bẻ lái vi bước công nghiệp: Sử dụng động cơ bước NEMA 23 mô-men xoắn lớn ($3.8\text{ Nm}$) kết hợp chế độ vi bước Microstepping thay cho các loại Servo RC bánh răng nhựa thông thường, giúp triệt tiêu hiện tượng rơ lắc cơ khí và duy trì góc lái ổn định khi di chuyển trên địa hình gồ ghề.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Hệ thống xe tự hành vận chuyển trong nhà xưởng và bệnh viện (Intralogistics AGV): Tự động di chuyển bám theo luồng đường nội bộ để vận chuyển linh kiện, mẫu xét nghiệm y tế hoặc tài liệu giữa các phân khu chức năng mà không cần đục sàn dán băng từ.
- Xe trung chuyển tự hành trong khuôn viên đóng (Campus Shuttle): Ứng dụng tại các khu công nghệ cao, resort, trường đại học để vận chuyển hành khách với vận tốc giới hạn ($15 - 20\text{ km/h}$).
gantt
title LỘ TRÌNH TRIỂN KHAI THƯƠNG MẠI HÓA (ROADMAP)
dateFormat YYYY-MM
section Giai đoạn 1: Prototype
Hoàn thiện mô hình nhúng & kiểm thử thực địa :done, des1, 2020-01, 2020-07
section Giai đoạn 2: Nâng cấp
Tối ưu hóa TensorRT & Tích hợp 2D LiDAR :active, des2, 2020-08, 2021-02
section Giai đoạn 3: Tiêu chuẩn hóa
Thiết kế khung xe công nghiệp & Kiểm định IP54 :des3, 2021-03, 2021-09
section Giai đoạn 4: Pilot Deployment
Vận hành thử nghiệm tại nhà xưởng công nghiệp :des4, 2021-10, 2022-04
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)
- Chi phí phần cứng thử nghiệm: Tổng kinh phí chế tạo mô hình ước tính khoảng 12.500.000 VNĐ (trong đó Jetson Nano Developer Kit chiếm ~3.000.000 VNĐ, hệ thống cơ khí và động lực chiếm ~6.500.000 VNĐ, các cảm biến và mạch điều khiển ~3.000.000 VNĐ).
- So sánh kinh tế: Chi phí này chỉ bằng 1/8 so với các hệ sinh thái nghiên cứu chuyên dụng nhập khẩu (như Autoware Robot Platform hay Clearpath Jackal), mở ra tiềm năng ứng dụng và đào tạo quy mô lớn.
- Thời gian hoàn vốn (ROI): Khi triển khai cho bài toán AGV vận chuyển hàng hóa nội bộ trong doanh nghiệp sản xuất, hệ thống giúp cắt giảm 1 nhân sự vận hành thủ công (ước tính tiết kiệm 90.000.000 VNĐ/năm/vị trí), mang lại thời gian hoàn vốn đầu tư chỉ trong vòng 2.5 đến 4 tháng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Nhiễu điều kiện quang học cực đoan: Khi cường độ ánh sáng thay đổi đột ngột (từ bóng râm ra ánh nắng gắt), camera Logitech C270 tự động cân bằng trắng chậm dẫn đến hiện tượng cháy sáng cục bộ, làm suy giảm độ chính xác trích xuất đặc trưng của mô hình.
- Phụ thuộc vào địa hình tĩnh: Mô hình Deep Learning được huấn luyện theo địa hình thực nghiệm cục bộ; khi chuyển sang cung đường mới có màu sắc và kết cấu nền đường khác biệt hoàn toàn, hệ thống đòi hỏi phải thu thập thêm dữ liệu để tái huấn luyện (Fine-tuning / Transfer Learning).
Hướng phát triển tiếp theo
- Tối ưu hóa mô hình với NVIDIA TensorRT: Chuyển đổi mô hình TensorFlow sang định dạng TensorRT Engine chạy ở độ chính xác dấu phẩy động 16-bit (FP16) hoặc số nguyên 8-bit (INT8) nhằm tăng tốc độ suy luận lên gấp 2.5 lần ($\ge 60\text{ FPS}$).
- Tích hợp cảm biến LiDAR và thuật toán Sensor Fusion: Kết hợp luồng dữ liệu hình ảnh với bản đồ đám mây điểm từ cảm biến LiDAR 2D/3D thông qua thuật toán Lọc Kalman mở rộng (Extended Kalman Filter - EKF) để xe có khả năng né tránh vật cản động và định vị chính xác trong không gian bị che khuất tầm nhìn.
- Triển khai mạng phân đoạn ngữ nghĩa (Semantic Segmentation): Nghiên cứu các kiến trúc mạng gọn nhẹ như ENet hoặc LaneNet để nhận diện không gian có thể di chuyển (Free Space Detection) ở cấp độ từng điểm ảnh.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| BẢNG TỔNG HỢP GIÁ TRỊ MANG LẠI |
+-------------------+-----------------------------------------------------------+
| Nhóm đối tượng | Lợi ích định lượng & Ứng dụng thực tiễn |
+-------------------+-----------------------------------------------------------+
| Sinh viên & | Tiếp cận tài liệu thiết kế phần cứng hoàn chỉnh, mã nguồn |
| Giảng viên | xử lý ảnh mẫu và quy trình huấn luyện Deep Learning trên |
| | máy tính nhúng; làm nền tảng cho đồ án liên ngành. |
+-------------------+-----------------------------------------------------------+
| Kỹ sư phần mềm & | Nắm vững kiến trúc giao tiếp Jetson Nano <-> Arduino Uno; |
| Robotics | kỹ thuật tối ưu hóa vòng lặp suy luận AI thời gian thực |
| | đảm bảo độ trễ điều khiển toàn chuỗi < 70 ms. |
+-------------------+-----------------------------------------------------------+
| Doanh nghiệp | Cung cấp thiết kế mẫu (Reference Design) cho các dòng xe |
| Sản xuất & AGV | tự hành bám làn chi phí thấp với linh kiện dễ bảo trì. |
+-------------------+-----------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để huấn luyện và triển khai mô hình là gì?
- Máy trạm huấn luyện (Training PC): Hệ điều hành Ubuntu 18.04/20.04 hoặc Windows 10 64-bit, CPU Intel Core i5 thế hệ 8 trở lên, RAM tối thiểu 16GB, Card đồ họa rời NVIDIA GPU (từ GTX 1050 Ti 4GB VRAM trở lên) có hỗ trợ Compute Capability $\ge 6.1$, cài đặt CUDA 10.0 và cuDNN 7.6.
- Phần cứng trên xe (Edge Deployment): Kit máy tính nhúng NVIDIA Jetson Nano Developer Kit (bản 4GB RAM), thẻ nhớ MicroSD tối thiểu 32GB Class 10 UHS-I (khuyến nghị 64GB U3), nguồn cấp chuẩn $5\text{V} - 4\text{A}$ thông qua chân cắm DC Jack (OD 5.5mm).
2. Làm thế nào để khắc phục hiện tượng trễ khung hình khi chạy Deep Learning trên Jetson Nano?
Để đạt được tốc độ xử lý thời gian thực trên Jetson Nano, cần thực hiện đồng bộ các giải pháp:
- Giảm độ phân giải khung hình đầu vào từ $1280 \times 720$ xuống $300 \times 300$ hoặc $224 \times 224$ trước khi đưa vào mạng.
- Bật chế độ hiệu năng tối đa của Jetson Nano thông qua lệnh
sudo nvpmodel -m 0 (chế độ 10W, kích hoạt đủ 4 nhân CPU) và sudo jetson_clocks để ép xung CPU/GPU lên mức định mức cao nhất.
- Sử dụng luồng đọc camera bất đồng bộ (Multi-threading Video Capture) bằng thư viện OpenCV kết hợp đường ống GStreamer thay vì hàm
cv2.VideoCapture() tuần tự thông thường.
3. Tại sao hệ thống cần sử dụng cả Jetson Nano và Arduino Uno thay vì điều khiển trực tiếp qua GPIO của Jetson Nano?
NVIDIA Jetson Nano chạy hệ điều hành Linux (không phải hệ điều hành thời gian thực - Hard Real-Time OS), do đó các tác vụ quản lý tiến trình của OS có thể làm dao động tần số băm xung PWM và xung điều khiển động cơ bước, gây hiện tượng giật cục cơ khí. Vi điều khiển Arduino Uno R3 chạy mã nhúng trực tiếp trên thanh ghi phần cứng (Bare-metal), đảm bảo chu kỳ phát xung vi bước cực kỳ chính xác đến cấp micro-giây, đồng thời bảo vệ an toàn cho bo mạch Jetson Nano trước các xung điện áp cảm ứng ngược từ động cơ công suất lớn.
4. Hệ thống xử lý thế nào khi đường bị mất vạch kẻ làn hoặc bị khuất tầm nhìn?
Mô hình Deep Learning của dự án không phụ thuộc đơn thuần vào vạch sơn mà học đặc trưng tổng thể của không gian di chuyển (mép vỉa hè, ranh giới thảm cỏ, bồn cây td). Trong trường hợp mất toàn bộ tín hiệu nhận diện tin cậy trong 3 khung hình liên tiếp, thuật toán điều khiển trên Jetson Nano sẽ kích hoạt trạng thái an toàn (Failsafe Mode): gửi lệnh giảm dần vận tốc và duy trì góc bẻ lái thẳng trước khi dừng hẳn xe để chờ can thiệp.
5. Chi phí bảo trì và độ bền của các linh kiện cơ điện tử trên xe như thế nào?
Hệ thống sử dụng các linh kiện chuẩn công nghiệp phổ biến: Động cơ bước không chổi than Size 57 có tuổi thọ vận hành trên 20.000 giờ, Driver TB6600 có tích hợp bảo vệ quá nhiệt, quá dòng và cách ly quang Opto. Chi phí thay thế định kỳ chủ yếu nằm ở chổi than của 2 động cơ DC RS550 sau mỗi 800–1000 giờ hoạt động liên tục (chi phí rất nhỏ, chỉ khoảng 50.000 VNĐ/bộ).
Kết luận
Đề tài tốt nghiệp "Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành" của nhóm sinh viên Trường Đạ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 đề ra:
- Thiết kế và tích hợp thành công mô hình xe tự hành cơ điện tử hoàn chỉnh với cơ cấu dẫn động công suất cao và góc bẻ lái vi bước chính xác.
- Làm chủ quy trình xây dựng tập dữ liệu, gán nhãn, huấn luyện và triển khai các kiến trúc mạng học sâu (Deep Learning) hiện đại trên máy tính nhúng biên NVIDIA Jetson Nano.
- Đạt được tốc độ xử lý thời gian thực ($> 30\text{ FPS}$ với mạng Keras CNN) và độ chính xác nhận diện biển báo, làn đường trung bình trên 94%, đảm bảo khả năng vận hành tự động ổn định và an toàn trong môi trường thử nghiệm.
Kết quả của đề tài là minh chứng rõ nét cho khả năng làm chủ công nghệ điều khiển tự động và trí tuệ nhân tạo của sinh viên ngành Công nghệ Kỹ thuật Ô tô, đồng thời cung cấp một nền tảng thực nghiệm vững chắc, mở ra tiềm năng ứng dụng to lớn trong việc phát triển các dòng xe tự hành nội bộ và hệ thống ADAS chi phí thấp tại Việt Nam.