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 công nghệ then chốt như Trí tuệ nhân tạo (AI), Thị giác máy tính (Computer Vision), Internet vạn vật (IoT) và đặc biệt là Xe tự hành (Autonomous Vehicles). Theo thống kê từ Hiệp hội Kỹ sư Ô tô Quốc tế (SAE International - tiêu chuẩn SAE J3016), xe tự hành được phân định thành 6 cấp độ (từ Level 0 đến Level 5). Trong khi các tập đoàn công nghệ hàng đầu như Tesla, Waymo (Alphabet) hay Cruise (General Motors) đang thương mại hóa các hệ thống tự hành Level 2+ đến Level 4, việc tiếp cận phần cứng nghiên cứu tiêu chuẩn công nghiệp (LiDAR đa tia, cụm camera RTK-GPS chuyên dụng, GPU nhúng công suất lớn) vẫn là rào cản tài chính rất lớn đối với các phòng thí nghiệm và cơ sở đào tạo kỹ thuật.
+-----------------------------------------------------------------------------------+
| MÔ HÌNH HỆ THỐNG XE TỰ HÀNH PHÂN TÁN |
+-----------------------------------------------------------------------------------+
| [ Poco C40 Phone ] --(Wi-Fi / RTSP)--> [ Laptop Core i5 (OpenCV / Python 3.10) ] |
| | |
| (Bluetooth SPP / RFCOMM) |
| v |
| [ Motor DC 540 ] <--- [ BTS7960 Driver ] <--- [ ESP32 WeMos D1 R32 ] |
| [ Servo MG996R ] <-----------------------------------| |
+-----------------------------------------------------------------------------------+
Vấn đề thực tiễn (Problem Statement)
Các hệ thống xe tự hành mô hình truyền thống thường gặp phải hai vấn đề cục bộ:
- Hạn chế cảm biến quang học thô sơ: Sử dụng dàn cảm biến hồng ngoại (IR Array) chỉ nhận biết được vạch kẻ ở cự ly cực gần (< 5cm), hoàn toàn mất khả năng dự đoán góc cua từ xa và không có tính linh hoạt khi môi trường thay đổi.
- Chi phí phần cứng nhúng cao: Việc trang bị trực tiếp máy tính nhúng chuyên sâu (NVIDIA Jetson AGX/Orin, Raspberry Pi 4 8GB) đẩy chi phí phát triển lên cao, đồng thời tiêu hao năng lượng lớn từ pin của mô hình xe tỷ lệ nhỏ (1:10).
Mục tiêu đề tài
- Thiết kế và chế tạo phần cứng: Xây dựng hoàn chỉnh mô hình xe tự hành tỷ lệ 1:10 trên nền tảng khung gầm HSP 94170, tích hợp động cơ DC 540, cơ cấu lái Servo MG996R, mạch cầu H BTS7960 43A và vi điều khiển ESP32 UNO D1 R32.
- Phát triển thuật toán thị giác máy tính: Xây dựng pipeline xử lý ảnh bằng Python và OpenCV để tách làn đường theo thời gian thực (Real-time Lane Detection) bằng phương pháp chuyển đổi phối cảnh (Perspective Transform) kết hợp phân tích lược đồ phân bố điểm ảnh (Histogram Peak Analysis).
- Hiện thực hóa kiến trúc điều khiển phân tán (Distributed Control): Truyền nhận dữ liệu hình ảnh không dây qua giao thức Wi-Fi IP Camera (DroidCam) từ smartphone Poco C40 về laptop xử lý trung tâm, sau đó truyền lệnh điều hướng đến ESP32 thông qua giao thức Bluetooth Serial (SPP).
- Đánh giá thực nghiệm: Kiểm chứng độ chính xác bám làn, độ ổn định góc lái và độ trễ phản hồi (latency) trên sa bàn thực nghiệm với nhiều kịch bản đường thẳng, cua cong tiêu chuẩn và khúc cua gắt.
Phạm vi và chỉ số kỳ vọng
- Độ trễ toàn chu trình (End-to-end latency): $\le 50\text{ ms}$.
- Tốc độ xử lý khung hình (Frame Rate): $25 - 30\text{ FPS}$ ở độ phân giải tiêu chuẩn $640 \times 480\text{ pixels}$.
- Phạm vi kiểm soát: Đường mô phỏng có vạch kẻ làn rõ nét, độ sai lệch tâm đường (Center Offset Error) duy trì trong ngưỡng $\pm 2.5\text{ cm}$.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và giải pháp cạnh tranh
| Tiêu chí |
Cảm biến dò line (IR TCRT5000) |
Deep Learning End-to-End (CNN) |
Thị giác máy tính OpenCV (Đề tài) |
| Khả năng nhìn xa |
Cực thấp (< 5 cm, sát mặt đường) |
Rất tốt (Toàn cảnh) |
Tốt (Vùng nhìn ROI điều chỉnh linh hoạt) |
| Tài nguyên tính toán |
Cực thấp (Vi điều khiển 8-bit) |
Cực cao (Yêu cầu GPU nhúng đắt tiền) |
Trung bình (Tối ưu hóa CPU laptop/PC phổ thông) |
| Độ phức tạp thuật toán |
$O(N)$ đơn giản |
Hộp đen (Black-box), khó debug trực quan |
Rõ ràng, dễ can thiệp các tham số hình học |
| Chi phí phần cứng |
Thấp (~500.000 VNĐ) |
Rất cao (> 5.000.000 - 15.000.000 VNĐ) |
Tối ưu (~1.500.000 VNĐ nhờ tận dụng thiết bị sẵn có) |
| Độ mượt điều khiển |
Giật cục, dễ văng khỏi làn ở cua gắt |
Tốt nếu huấn luyện đủ dữ liệu |
Rất mượt nhờ tính toán độ lệch tâm liên tục |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc): Chuyển đổi Bird’s Eye View (Phối cảnh mắt chim), nhị phân hóa ảnh, trích xuất tọa độ 2 vạch biên, tính toán tâm làn đường, giao tiếp Bluetooth hai chiều ổn định giữa Laptop và ESP32, điều khiển góc quay Servo lái chính xác theo độ lệch.
- Should have (Nên có): Cơ chế lọc nhiễu Gaussian, thuật toán thích ứng khi bị mất 1 làn đường (Single-lane tracking fallback), điều chỉnh tốc độ động cơ DC tự động khi vào cua.
- Could have (Có thể mở rộng): Nhận diện biển báo giao thông cơ bản, dừng khẩn cấp khi gặp chướng ngại vật bằng cảm biến siêu âm SR04.
- Won't have (Chưa thực hiện): Tích hợp bản đồ định vị toàn cầu GPS/SLAM, điều hướng tránh vật cản động phức tạp.
Thiết kế kiến trúc hệ thống
+-----------------------------------------------------------------------------------------------+
| KIẾN TRÚC PHẦN MỀM PIPELINE |
+-----------------------------------------------------------------------------------------------+
| +---------------------+ +----------------------+ +--------------------------------+ |
| | Android Poco C40 | | Laptop (Core i5/i7) | | ESP32 WeMos D1 R32 | |
| | - Camera Sensor | ---> | - DroidCam Client | ---> | - BluetoothSerial (SPP) | |
| | - DroidCam Server | | - OpenCV Pipeline | | - PID / Angle Translation | |
| | - Wi-Fi RTSP Stream | | - Offset Calculation | | - LEDC PWM (Motor DC & Servo) | |
| +---------------------+ +----------------------+ +--------------------------------+ |
+-----------------------------------------------------------------------------------------------+
Bảng thông số linh kiện phần cứng
| Tên linh kiện |
Thông số kỹ thuật |
Vai trò trong hệ thống |
| Kit HSP 94170 (1:10) |
Dài 460mm, Rộng 250mm, Truyền động 4WD |
Khung gầm chịu lực và giá đỡ cơ cấu |
| ESP32 WeMos D1 R32 |
Tensilica Xtensa Dual-Core 32-bit LX6, 240MHz, 4MB Flash |
Vi điều khiển trung tâm, nhận dữ liệu Bluetooth & xuất PWM |
| BTS7960 43A Driver |
H-Bridge, $6 - 27\text{V}$, dòng định mức 43A, tần số PWM 25kHz |
Điều khiển công suất và đảo chiều Motor DC 540 |
| Servo MG996R |
Bánh răng kim loại, lực kéo $11\text{ kg}\cdot\text{cm}$ ở 6V, góc quay $180^\circ$ |
Điều khiển góc bẻ lái trục trước |
| Pin NCR18650B |
3 cell ghép nối tiếp/song song, $3.7\text{V} - 3400\text{mAh}$ (Panasonic) |
Cung cấp nguồn độc lập cho mạch động lực và điều khiển |
| Poco C40 (Camera) |
Camera 13MP, truyền luồng qua Wi-Fi 2.4/5GHz |
Thu nhận hình ảnh mặt đường thời gian thực |
Sơ đồ kết nối chân vi điều khiển (Pinout Mapping)
| Thiết bị ngoại vi |
Chân thiết bị |
Chân GPIO ESP32 |
Chức năng kỹ thuật |
| BTS7960 43A |
R_PWM |
GPIO 12 |
Xung PWM điều khiển tốc độ quay thuận |
| BTS7960 43A |
L_PWM |
GPIO 13 |
Xung PWM điều khiển tốc độ quay nghịch (Phanh/Lùi) |
| BTS7960 43A |
R_EN / L_EN |
GPIO 26 / GPIO 25 |
Chân Enable kích hoạt cầu H hoạt động |
| Servo MG996R |
SIGNAL |
GPIO 14 |
Xung PWM 50Hz điều khiển vị trí góc quay servo |
| Nguồn hệ thống |
VCC / GND |
5V / GND |
Nguồn cấp mức logic vi điều khiển |
Implementation và kết quả
Development Process & Pipeline xử lý ảnh
Quy trình thị giác máy tính được tối ưu hóa theo 6 bước toán học tuần tự nhằm đảm bảo độ trễ nhỏ nhất:
$$\text{Input Frame } I(x,y) \xrightarrow{\text{Warp}} I_{\text{pers}} \xrightarrow{\text{Gray}} I_{\text{gray}} \xrightarrow{\text{Filter}} I_{\text{blur}} \xrightarrow{\text{Binary+Edge}} I_{\text{lane}} \xrightarrow{\text{Histogram}} \text{Offset } \Delta x$$
-
Thu nhận khung hình: Tiếp nhận luồng video RTSP/HTTP từ DroidCam ở kích thước $640 \times 480\text{ pixels}$.
-
Chuyển đổi phối cảnh (Perspective Transformation - Bird's Eye View): Sử dụng ma trận biến đổi Homography $3 \times 3$ thông qua hàm cv2.getPerspectiveTransform() và cv2.warpPerspective(). Bước này loại bỏ biến dạng hội tụ của ống kính, chuyển mặt phẳng nghiêng thành góc nhìn vuông góc từ trên cao xuống.
-
Tiền xử lý và phân ngưỡng: Chuyển đổi sang ảnh xám (COLOR_BGR2GRAY), triệt tiêu nhiễu tần số cao bằng bộ lọc Gaussian Blur kích thước kernel $5 \times 5$:
$$G(x, y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2 + y^2}{2\sigma^2}}$$
-
Phát hiện cạnh Canny & Nhị phân hóa: Áp dụng ngưỡng nhị phân phân tách vạch kẻ màu sáng, kết hợp thuật toán Canny Edge Detection với hai ngưỡng gradient cố định $T_1 = 250$ và $T_2 = 300$.
-
Xác định vị trí vạch làn bằng Histogram: Tính tổng cường độ điểm ảnh trắng theo từng cột (Column-wise summation):
$$H(x) = \sum_{y=y_1}^{y_2} I_{\text{binary}}(x, y)$$
Hai điểm cực đại (peaks) của $H(x)$ ở nửa trái và nửa phải khung hình tương ứng với tọa độ $x_{\text{left}}$ và $x_{\text{right}}$.
-
Tính toán độ lệch tâm (Center Offset):
$$x_{\text{center_lane}} = \frac{x_{\text{left}} + x_{\text{right}}}{2}$$
$$\text{Offset} = x_{\text{center_lane}} - x_{\text{center_frame}} = x_{\text{center_lane}} - 320$$
# lane_detection_core.py
import cv2
import numpy as np
def perspective_transform(frame):
height, width = frame.shape[:2]
# Định nghĩa 4 điểm ROI góc nhìn thực tế
src = np.float32([[120, 300], [520, 300], [0, 450], [640, 450]])
# Ánh xạ thành hình chữ nhật góc nhìn từ trên cao
dst = np.float32([[0, 0], [width, 0], [0, height], [width, height]])
matrix = cv2.getPerspectiveTransform(src, dst)
warped = cv2.warpPerspective(frame, matrix, (width, height))
return warped, matrix
def extract_lane_center(binary_warped):
# Tính toán histogram cho nửa dưới của ảnh
histogram = np.sum(binary_warped[binary_warped.shape[0]//2:, :], axis=0)
midpoint = int(histogram.shape[0] // 2)
# Tìm đỉnh cực đại bên trái và bên phải
left_peak = np.argmax(histogram[:midpoint])
right_peak = np.argmax(histogram[midpoint:]) + midpoint
# Tính tâm đường và độ lệch so với tâm ảnh (320)
lane_center = (left_peak + right_peak) // 2
frame_center = binary_warped.shape[1] // 2
offset = lane_center - frame_center
return left_peak, right_peak, lane_center, offset
// esp32_steering_control.ino
#include "BluetoothSerial.h"
#include <ESP32Servo.h>
BluetoothSerial SerialBT;
Servo steeringServo;
const int SERVO_PIN = 14;
const int RPWM_PIN = 12;
const int LPWM_PIN = 13;
const int REN_PIN = 26;
const int LEN_PIN = 25;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_AutoCar"); // Khởi tạo Bluetooth SPP
steeringServo.attach(SERVO_PIN);
pinMode(RPWM_PIN, OUTPUT);
pinMode(LPWM_PIN, OUTPUT);
pinMode(REN_PIN, OUTPUT);
pinMode(LEN_PIN, OUTPUT);
digitalWrite(REN_PIN, HIGH);
digitalWrite(LEN_PIN, HIGH);
}
void loop() {
if (SerialBT.available()) {
char cmd = SerialBT.read();
int base_speed = 65; // Duty cycle PWM động cơ DC
switch (cmd) {
case 'F': // Đi thẳng (Center)
steeringServo.write(90);
analogWrite(RPWM_PIN, base_speed);
break;
case 'L': // Rẽ trái nhẹ
steeringServo.write(70);
analogWrite(RPWM_PIN, base_speed - 10);
break;
case 'R': // Rẽ phải nhẹ
steeringServo.write(110);
analogWrite(RPWM_PIN, base_speed - 10);
break;
case 'S': // Dừng xe
analogWrite(RPWM_PIN, 0);
break;
}
}
}
Kiểm thử và kết quả thực nghiệm
Mô hình xe tự hành đã trải qua 50 lượt chạy thử nghiệm liên tục trên sa bàn kiểm thử dài 15m với điều kiện ánh sáng trong nhà ổn định (450 - 550 Lux).
+-----------------------------------------------------------------------------------+
| ĐỘ TRỄ TOÀN HỆ THỐNG (TỔNG: 44 ms - 22.7 FPS) |
+-----------------------------------------------------------------------------------+
| Camera Streaming (Wi-Fi) : [======== 18ms ========] |
| OpenCV Processing (Laptop) : [====== 12ms ======] |
| Bluetooth Transmission (SPP) : [==== 6ms ====] |
| ESP32 & Actuator Response : [==== 8ms ====] |
+-----------------------------------------------------------------------------------+
Bảng kết quả thực nghiệm theo kịch bản đường chạy
| Kịch bản thử nghiệm |
Số lượt chạy |
Tỷ lệ thành công (%) |
Độ lệch tâm tối đa ($\text{cm}$) |
Vận tốc trung bình ($\text{m/s}$) |
| Đoạn đường thẳng (Straight) |
20 |
100% |
$\pm 0.8\text{ cm}$ |
$0.85\text{ m/s}$ |
| Đoạn cua thoả ($R > 1.2\text{m}$) |
15 |
93.3% |
$\pm 1.8\text{ cm}$ |
$0.65\text{ m/s}$ |
| Đoạn cua gắt ($R < 0.6\text{m}$) |
10 |
80.0% |
$\pm 2.9\text{ cm}$ |
$0.40\text{ m/s}$ |
| Mất 1 vạch làn (Single Line) |
5 |
80.0% |
$\pm 2.4\text{ cm}$ |
$0.50\text{ m/s}$ |
Đổi mới và đóng góp
- Kiến trúc điện toán phân tán (Decoupled Compute Architecture): Tách rời hoàn toàn khối thu nhận ảnh (Smartphone), khối tính toán nặng (Laptop) và khối cơ điện tử chấp hành (ESP32). Giải pháp này loại bỏ nhu cầu mang vác laptop nặng hoặc bo mạch GPU đắt đỏ trên khung gầm mô hình 1:10.
- Tiết kiệm chi phí đầu tư đến 68%: Tận dụng camera độ nét cao và kết nối không dây của smartphone thông dụng kết hợp kit ESP32 giá rẻ (< 150.000 VNĐ), giúp tổng chi phí phần cứng của đồ án duy trì dưới 2 triệu VNĐ nhưng vẫn đảm bảo tính trực quan và khả năng mở rộng thuật toán.
- Pipeline xử lý ảnh xác định có độ tin cậy cao: Không sử dụng mô hình học sâu dạng hộp đen đòi hỏi dữ liệu huấn luyện lớn, phương pháp hình học Perspective Transform + Canny + Histogram cho phép điều chỉnh trực tiếp các tham số hình học theo thực tế, hạn chế tình trạng overfitting khi thay đổi môi trường thử nghiệm.
Ứng dụng thực tế và triển khai
+-----------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VÀ THỰC THI |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1: Chuẩn bị phần cứng (Khung xe HSP 94170, Mạch BTS7960, ESP32) |
| | |
| Giai đoạn 2: Cài đặt DroidCam, PyCharm, nạp Firmware ESP32 Bluetooth |
| | |
| Giai đoạn 3: Cân chỉnh ma trận Homography (Perspective) & Ngưỡng nhị phân |
| | |
| Giai đoạn 4: Chạy thử nghiệm bám làn trên sa bàn thực tế, tối ưu hóa PID lái |
+-----------------------------------------------------------------------------------+
Các trường hợp ứng dụng thực tế (Real-World Use Cases)
- Hệ thống cảnh báo chệch làn đường (LDWS / LKAS): Ứng dụng trực tiếp nguyên lý Perspective Transform và đo đạc sai số $\Delta x$ cho các hệ thống hỗ trợ lái xe nâng cao (ADAS) trên ô tô thương mại.
- Robot tự hành trong nhà xưởng (AGV - Automated Guided Vehicle): Dẫn đường linh hoạt cho xe chở hàng tự động di chuyển theo line kẻ sẵn trong các nhà kho thông minh (Smart Warehouse) mà không cần chôn dây từ dưới sàn.
- Mô hình thí nghiệm giáo dục: Nền tảng học cụ trực quan cho sinh viên ngành Kỹ thuật Ô tô, Cơ điện tử và Tự động hóa tiếp cận chuyên sâu các môn học Lý thuyết điều khiển tự động, Thị giác máy tính và Hệ thống nhúng ô tô.
Bảng dự toán chi phí triển khai hệ thống
| Hạng mục thiết bị |
Đơn giá ước tính (VNĐ) |
Ghi chú kỹ thuật |
| Kit khung xe HSP 94170 (Secondhand) |
650.000 |
Bao gồm motor 540 và hệ thống treo, vi sai |
| ESP32 WeMos D1 R32 + Mạch BTS7960 |
220.000 |
Bo vi điều khiển và mạch công suất H-Bridge |
| Servo MG996R Metal Gear |
85.000 |
Lực kéo khỏe, độ rơ thấp |
| Cụm Pin 18650 Panasonic (3 cell) + Đế |
180.000 |
Dung lượng thực 3400mAh, xả 10A |
| Khung mica, bu lông, dây nối, sạc pin |
150.000 |
Vật tư cơ khí phụ trợ |
| Điện thoại Android + Laptop |
Sẵn có |
Tận dụng thiết bị cá nhân của người học |
| TỔNG CỘNG |
1.285.000 VNĐ |
Tiết kiệm vượt bậc so với hệ thống Raspberry/Jetson |
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Độ phụ thuộc vào nguồn sáng: Thuật toán phân ngưỡng cố định (Static Thresholding) dễ bị mất vạch làn khi gặp vùng bóng râm đột ngột hoặc ánh sáng phản xạ gây lóa trên bề mặt sàn.
- Độ trễ truyền dẫn không dây: Mạng Wi-Fi nội bộ nếu bị suy hao hoặc có nhiều thiết bị phát sóng trùng kênh (2.4GHz) có thể làm giảm tốc độ truyền nhận khung hình, gây hiện tượng trễ cục bộ (~80ms).
- Vấn đề góc cua chữ U ($R < 0.4\text{m}$): Khung hình quan sát phía trước có thể không còn chứa đủ 2 vạch kẻ làn, dẫn đến sai số nhận diện nếu không có thuật toán ước lượng bộ nhớ (Memory Tracking/Kalman Filter).
Hướng nâng cấp đề xuất
- Tích hợp bộ lọc thích ứng: Ứng dụng chuyển đổi không gian màu HSV/HLS kết hợp bộ lọc Otsu hoặc Phân ngưỡng thích nghi (Adaptive Thresholding) để loại bỏ ảnh hưởng quang sai.
- Nâng cấp phần cứng xử lý nhúng tại biên: Tích hợp trực tiếp bo mạch Edge-AI (như Jetson Orin Nano hoặc vi điều khiển tích hợp NPU ESP32-S3 Eye) để thực hiện toàn bộ quá trình tính toán trên xe, xóa bỏ hoàn toàn độ trễ truyền dữ liệu không dây.
- Hợp nhất cảm biến (Sensor Fusion): Bổ sung cảm biến đo góc nghiêng/gia tốc IMU (MPU6050) và thuật toán lọc Kalman mở rộng (EKF) để tăng cường độ mượt của góc bẻ lái Servo.
Đối tượng hưởng lợi
+---------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+---------------------------------------------------------------------------------+
| Sinh viên / Nghiên cứu sinh : Học hỏi giải thuật Computer Vision & Nhúng ESP32 |
| Lập trình viên Embedded / AI: Nắm bắt mô hình giao tiếp Bluetooth SPP & OpenCV |
| Giảng viên / Cơ sở đào tạo : Giáo cụ giảng dạy chi phí thấp, tính thực chứng cao|
| Doanh nghiệp SME / Kho vận : Giải pháp tham khảo triển khai xe kéo hàng AGV |
+---------------------------------------------------------------------------------+
- Sinh viên ngành Ô tô, Cơ điện tử: Cung cấp tài liệu tham khảo hoàn chỉnh từ mô hình vật lý, sơ đồ mạch nguyên lý đến mã nguồn điều khiển thực nghiệm.
- Kỹ sư phát triển hệ thống nhúng: Tài liệu hóa chi tiết phương pháp truyền thông dữ liệu ổn định giữa Python (máy tính) và ESP32 (vi điều khiển) qua kênh không dây Bluetooth SPP.
- Các phòng Lab trường đại học: Tối ưu hóa ngân sách đầu tư trang thiết bị thực hành cho sinh viên với chi phí chỉ bằng 1/5 so với các bộ kit thương mại nhập khẩu.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu của Laptop để chạy chương trình xử lý ảnh là gì?
Hệ thống yêu cầu máy tính trang bị CPU từ Intel Core i3 thế hệ 8 hoặc AMD Ryzen 3 trở lên, RAM tối thiểu 4GB, hệ điều hành Windows 10/11 hoặc Ubuntu Linux 20.04+, cài đặt sẵn môi trường Python 3.8 - 3.11 cùng các thư viện OpenCV-Python, NumPy và PyBluez.
2. Tại sao lại chọn phương pháp Histogram thay vì thuật toán Hough Transform?
Hough Transform (cv2.HoughLinesP) đòi hỏi nhiều phép toán lượng giác phức tạp và dễ bị nhiễu bởi các đường thẳng ngẫu nhiên trong môi trường. Phương pháp Histogram phân bổ theo cột trực tiếp trên ảnh phối cảnh mắt chim (Bird's Eye View) cho tốc độ tính toán nhanh hơn 2.5 lần ($O(W)$ so với $O(N \times \rho \times \theta)$), đồng thời tính toán được tọa độ tâm làn đường với độ chính xác cao.
3. Làm thế nào để khắc phục độ trễ khi truyền hình ảnh từ Smartphone về Laptop?
Cần cấu hình ứng dụng DroidCam chạy trên dải tần Wi-Fi 5GHz hoặc kết nối qua chế độ USB Debugging (ADB Port Forwarding). Thiết lập độ phân giải khung hình ở mức tối ưu $640 \times 480\text{ pixels}$ với FPS giới hạn ở mức 30fps để giảm dung lượng băng thông truyền tải.
4. Hệ thống có thể hoạt động khi bị mất một bên vạch kẻ đường không?
Có. Khi một bên vạch làn bị đứt đoạn hoặc nằm ngoài tầm quan sát của camera, giá trị Peak của Histogram bên đó sẽ rơi xuống dưới ngưỡng kích hoạt. Thuật toán sẽ chuyển sang chế độ dự đoán đơn làn (Single-lane Fallback), tự động bù trừ một khoảng cách bằng độ rộng làn đường chuẩn ($W_{\text{lane}} \approx 300\text{ pixels}$) để suy ra tâm làn đường giả lập.
5. Bộ pin 18650 có thể duy trì hoạt động cho mô hình trong bao lâu?
Với cụm 3 cell pin Panasonic NCR18650B mắc nối tiếp ($11.1\text{V} - 3400\text{mAh}$), dòng tiêu thụ trung bình khi xe chạy ổn định là khoảng $1.2\text{A} - 1.8\text{A}$ (bao gồm motor 540, servo lái và ESP32). Thời lượng hoạt động liên tục đạt từ 90 đến 120 phút cho một lần sạc đầy.
Kết luận
Đồ án tốt nghiệp "Nghiên cứu, thiết kế ô tô tự hành ứng dụng phương pháp xử lý ảnh" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết trọn vẹn bài toán tự động hóa điều khiển phương tiện bám làn đường bằng phương pháp thị giác máy tính cổ điển. Bằng cách kết hợp linh hoạt giữa xử lý ảnh trên máy tính thông qua OpenCV và cơ cấu chấp hành nhúng trên nền tảng vi điều khiển ESP32, đề tài đã chứng minh tính khả thi vượt trội về mặt kỹ thuật lẫn hiệu quả kinh tế.
Kết quả thực nghiệm với độ trễ phản hồi $\le 44\text{ ms}$ cùng tỷ lệ giữ làn trên 93% ở các khúc cua tiêu chuẩn là minh chứng vững chắc cho độ tin cậy của thuật toán. Đây là tiền đề học thuật và kỹ thuật thực tiễn quan trọng, mở ra hướng phát triển mở rộng sang các hệ thống tự hành thông minh tích hợp trí tuệ nhân tạo biên (Edge-AI) và điều hướng tự động đa cảm biến trong tương lai.