Giới thiệu dự án
Trong kỷ nguyên phát triển mạnh mẽ của xe tự hành (Autonomous Vehicles - AV) và Hệ thống Hỗ trợ Người lái Nâng cao (Advanced Driver Assistance Systems - ADAS), tính năng phát hiện làn đường theo thời gian thực (Real-time Lane Detection) đóng vai trò nền tảng. Theo thống kê từ Tổ chức Y tế Thế giới (WHO) và Hiệp hội An toàn Giao thông Đường bộ Quốc tế, hơn 90% các vụ tai nạn giao thông xuất phát từ lỗi chủ quan của con người, trong đó hiện tượng mất tập trung dẫn đến chệch làn đường chiếm tỷ trọng lớn. Hệ thống Cảnh báo Lệch Làn đường (Lane Departure Warning System - LDWS) và Hỗ trợ Giữ Làn (Lane Keeping Assist System - LKAS) được chứng minh giúp giảm thiểu tới 30-50% số vụ va chạm trực diện và lật xe trên cao tốc.
+-----------------------------------------------------------------------------------+
| HỆ THỐNG PHÁT HIỆN LÀN ĐƯỜNG TRÊN PHẦN CỨNG (FPGA) |
| [Video In 1024x1024] -> [Masking] -> [Gray Scale] -> [Sobel 3x3 + CORDIC] |
| -> [ROI Filter] -> [Hough Transform (LUT)] -> [PCIe Host] |
+-----------------------------------------------------------------------------------+
Tuy nhiên, bài toán thị giác máy tính trên ô tô đối mặt với những thách thức nghiêm trọng:
- Độ trễ tính toán lớn trên nền tảng CPU/GPU truyền thống: Các thuật toán xử lý ảnh truyền thống tiêu tốn chu kỳ tính toán lớn, đặc biệt khi thực hiện các hàm lượng giác và không gian bỏ phiếu phức tạp.
- Tiêu thụ năng lượng cao (Power Consumption): Các hệ thống GPU nhúng trên xe thường tiêu thụ từ 50W đến hơn 250W, gây áp lực lớn lên nguồn điện ắc-quy và hệ thống làm mát của phương tiện tự hành.
- Nhiễu môi trường đa dạng: Điều kiện ánh sáng thay đổi liên tục (ngược sáng, bóng râm, ban đêm), vạch kẻ đường bị đứt đoạn, mờ hoặc lẫn với các vật cản xung quanh.
Mục tiêu của dự án:
- Thiết kế và tối ưu hóa kiến trúc phần cứng xử lý luồng video phát hiện làn đường hoàn chỉnh từ ảnh RGB thô đến tọa độ tham số đường thẳng $(\rho, \theta)$.
- Tích hợp giải thuật Hough Transform (HT) cải tiến, loại bỏ tính toán lượng giác phức tạp tại runtime thông qua Bảng Tra Cứu (Look-Up Table - LUT) và định hướng góc gradient cục bộ.
- Hiện thực và đóng gói toàn bộ lõi xử lý (IP Core) trên nền tảng FPGA Xilinx Virtex-7 VC707 thông qua giao tiếp Peripheral Component Interconnect Express (PCIe).
- Đạt độ phân giải xử lý $1024 \times 1024$ pixels tại tần số xung nhịp $\ge 150 \text{ MHz}$, tốc độ xử lý vượt ngưỡng thời gian thực ($>60 \text{ FPS}$) với độ chính xác trên 90%.
Phạm vi và giới hạn:
- Phạm vi: Xử lý phát hiện làn đường phân chia hai bên (trái/phải) trên định dạng video phân giải cao $1024 \times 1024$, truyền nhận dữ liệu đồng bộ giữa Host PC và bo mạch FPGA thông qua Bus PCIe.
- Giới hạn: Thiết kế tập trung vào nhận diện làn đường dạng đoạn thẳng hoặc đường cong nhẹ thông qua không gian Hough hai chiều $(\rho, \theta)$; chưa tích hợp mô hình nơ-ron học sâu để phát hiện chướng ngại vật phức tạp đa hình thái.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Các phương pháp phát hiện làn đường hiện nay phân bổ thành ba nhóm chính: dựa trên phần mềm (CPU), tăng tốc trên GPU, và thiết kế phần cứng chuyên dụng (FPGA/ASIC).
| Tiêu chí |
Tiếp cận dựa trên CPU (C++/OpenCV) |
Tăng tốc GPU (Deep Learning / CUDA) |
Kiến trúc FPGA đề xuất (Xilinx Virtex-7) |
| Tốc độ xử lý (FPS) |
Thấp - Trung bình (15 - 30 FPS @ HD) |
Rất cao (60 - 120 FPS @ HD) |
Cực cao (97 FPS @ $1024 \times 1024$) |
| Công suất tiêu thụ |
35W - 95W |
75W - 250W |
Thấp (< 10W cho lõi xử lý) |
| Độ trễ luồng dữ liệu (Latency) |
Cao (xử lý theo batch/frame buffer) |
Trung bình (độ trễ bộ nhớ VRAM) |
Cực thấp (Pipeline mức pixel theo luồng thời gian thực) |
| Độ phức tạp tích hợp ADAS |
Thích hợp tạo mẫu ban đầu |
Cồng kềnh, chi phí tản nhiệt lớn |
Nhỏ gọn, tối ưu chuẩn xe hơi chuyên dụng (ASIL-D ready) |
| Chi phí phần cứng quy mô lớn |
Trung bình |
Rất cao |
Tối ưu khi chuyển dịch sang ASIC/FPGA SoC |
Yêu cầu người dùng & Thiết kế theo chuẩn MoSCoW:
- Must have (Bắt buộc): Pipeline xử lý liên tục Masking, Grayscale, Sobel Edge, CORDIC ATAN, ROI Filtering, LUT-based Hough Transform; đồng bộ xung nhịp và xử lý không trễ frame.
- Should have (Nên có): Tách luồng phát hiện song song hai bên làn trái (
left) và làn phải (right), chống nhiễu bóng râm thông qua cân chỉnh ngưỡng động.
- Could have (Có thể có): Cơ chế tự động bù trừ góc nghiêng camera thông qua hệ số lọc tọa độ.
- Won't have this time (Chưa thực hiện): Khôi phục vạch kẻ đường bị che khuất hoàn toàn bởi tuyết rơi dày hoặc ngập nước diện rộng.
Thiết kế hệ thống
Toàn bộ hệ thống được xây dựng theo kiến trúc luồng dữ liệu liên tục (Dataflow Streaming Architecture), xử lý song song ở mức phần cứng với cấu trúc gồm 4 khối chức năng chính:
flowchart LR
A["Video In (RGB 1024x1024)"] --> B["Pre-Processing & Split Signal"]
B --> C["IP CORE (Algorithm Module)"]
subgraph IPCore ["Kiến Trúc Lõi IP CORE"]
C1["Masking Module"] --> C2["Gray Scale Module"]
C2 --> C3["Line Buffer 3x3 & Sobel"]
C3 --> C4["CORDIC ATAN & Adjust"]
C4 --> C5["ROI Determine & Compare"]
C5 --> C6["Hough Transform + LUT"]
end
C --> D["Post-Processing (Coordinate Map)"]
D --> E["Host Display / PCIe Output"]
Technology Stack & Versions:
- Môi trường phát triển thuật toán: MATLAB R2018a / Simulink.
- Công cụ sinh phần cứng & DSP: Xilinx System Generator (XSG) 2018.1.
- Môi trường tổng hợp mạch & Phân tích Timing: Xilinx Vivado Design Suite 2018.1.
- Nền tảng phần cứng đích: Xilinx Virtex-7 FPGA VC707 Evaluation Kit (XC7VX485T-2FFG1761C).
- Chuẩn giao tiếp Host - FPGA: PCI Express Gen2 / AXI4-Stream Interface qua DMA.
Các thông số kỹ thuật cốt lõi:
- Định dạng dữ liệu đầu vào:
ufix24 (8-bit Red, 8-bit Green, 8-bit Blue).
- Pipeline Line Buffer: 3 dòng nhớ đệm phục vụ cửa sổ trượt $3 \times 3$.
- Bộ giải thuật CORDIC: 24 chu kỳ lặp tính toán $G_{atan}$ và $G_{mag}$.
- Kích thước không gian tham số Hough (HPS Memory): Tối ưu hóa bộ nhớ Block RAM (BRAM) đa cổng với địa chỉ hóa song song chẵn/lẻ (Even/Odd Voting).
Phương pháp nghiên cứu và phát triển
Dự án áp dụng mô hình phối hợp phần cứng - phần mềm kết hợp (HW/SW Co-Design):
- Giai đoạn 1 (Thuật toán & Mô phỏng chức năng): Thiết kế mô hình toán học trên MATLAB Scripts, xác định không gian tham số và lập trình mô phỏng bằng Simulink Blocksets.
- Giai đoạn 2 (Chuyển đổi phần cứng với XSG): Thay thế toàn bộ khối toán học bằng Xilinx DSP Blockset (bộ cộng, nhân, thanh ghi dịch, BRAM, CORDIC). Thực hiện Hardware Co-Simulation kiểm chứng tính đúng đắn mức chu kỳ xung nhịp (Cycle-accurate).
- Giai đoạn 3 (Đóng gói IP & Khảo sát Timing): Xuất HDL Netlist từ XSG, đưa vào Vivado Design Suite, cấu hình sơ đồ khối (Block Design), kết nối vi điều khiển và bus AXI DMA/PCIe.
- Giai đoạn 4 (Triển khai & Đo lường thực tế): Nạp bitstream lên bo mạch Virtex-7 VC707, thực hiện truyền nhận video qua PCIe từ máy chủ Host PC, đo thông số Worst Negative Slack (WNS), công suất tiêu thụ và FPS thực tế.
Implementation và kết quả
Chi tiết giải thuật và kiến trúc phần cứng
1. Module Phân đoạn màu sắc (Masking Module)
Để giảm thiểu ảnh hưởng của bề mặt đường nhựa và bóng râm, module Masking phân loại nhanh các điểm ảnh thuộc dải màu trắng hoặc vàng của vạch kẻ đường:
- Vạch trắng: Điểm ảnh thỏa mãn điều kiện $R > 190$, $G > 190$, $B > 190$.
- Vạch vàng: Điểm ảnh thỏa mãn $R > 190$, $G > 180$, $B < 150$.
Khi thỏa điều kiện, giá trị RGB được chuẩn hóa tức thời thành $(255, 255, 255)$ để chuyển tiếp cho các tầng xử lý sau. Thời gian xử lý trễ của module Masking là đúng 05 chu kỳ xung nhịp.
% Thuật toán logic phần cứng nhận diện màu vạch đường (Masking Logic)
if (R_in >= 190) && (G_in >= 190) && (B_in >= 190)
is_white = 1;
else
is_white = 0;
end
if (R_in >= 190) && (G_in >= 180) && (B_in <= 150)
is_yellow = 1;
else
is_yellow = 0;
end
if (is_white == 1) || (is_yellow == 1)
pixel_masked = 255; % Chuẩn hóa thành biên sáng
else
pixel_masked = 0;
end
2. Module Chuyển đổi mức xám (Gray Scale Module)
Thực thi phương trình chuyển đổi không gian màu tiêu chuẩn theo định dạng số nguyên cố định (Fixed-point):
$$\text{Gray}(x, y) = 0.299 \cdot R(x, y) + 0.587 \cdot G(x, y) + 0.114 \cdot B(x, y)$$
Module được tối ưu hóa bằng các khối dịch bit và bộ nhân DSP, tạo độ trễ xuất tín hiệu là 06 chu kỳ xung nhịp.
3. Module Phát hiện biên Sobel và Bộ giải thuật CORDIC
Sử dụng cửa sổ trượt $3 \times 3$ dựa trên kiến trúc Line Buffer (3 bộ nhớ đệm hàng FIFO). Tích chập được thực hiện song song với hai mặt nạ Sobel hướng ngang ($h$) và hướng dọc ($v$):
$$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$$
Độ lớn Gradient ($G_{mag}$) và Hướng Gradient ($G_{atan}$) được tính thông qua khối phần cứng CORDIC ATAN:
$$G_{mag} = \sqrt{G_x^2 + G_y^2}, \quad G_{atan} = \arctan\left(\frac{G_y}{G_x}\right)$$
Line Buffer Architecture:
Pixel_In ---> [ Line Buffer Row 0 ] ---> D00, D01, D02
---> [ Line Buffer Row 1 ] ---> D10, D11, D12 ===> [Sobel Kernel Multipliers] -> Gx, Gy
---> [ Line Buffer Row 2 ] ---> D20, D21, D22
- Khối CORDIC ATAN hoàn thành sau 24 chu kỳ.
- Khối Adjust Gatan chuyển đổi giá trị góc âm sang dải dương $[0^\circ, 180^\circ]$ thông qua góc bù $\theta = G_{atan} + 180^\circ$ khi $G_{atan} < 0$, tiêu tốn thêm 03 chu kỳ.
- Khối ROI Determine (Vùng quan tâm) kết hợp bộ đếm tọa độ Coordinate Counter (31 chu kỳ trễ) để lọc bỏ toàn bộ các điểm biên nằm ngoài khu vực mặt đường và lọc nhiễu góc gradient không thuộc hướng làn đường xe chạy.
4. Module Biến đổi Hough cải tiến (LUT-based Hough Transform)
Trong thuật toán Hough Transform tiêu chuẩn, với mỗi điểm biên $(x, y)$, hệ thống phải duyệt qua toàn bộ $180$ giá trị góc $\theta \in [0^\circ, 179^\circ]$:
$$\rho = x \cos(\theta) + y \sin(\theta)$$
Việc này đòi hỏi $180$ phép tính lượng giác và $180$ lần truy xuất bộ nhớ cho mỗi pixel biên.
Cải tiến đột phá của đề tài:
Thay vì duyệt toàn bộ góc, kiến trúc tận dụng trực tiếp giá trị hướng độ dốc $G_{atan}$ được tính từ module Sobel CORDIC làm giá trị $\theta$ duy nhất cho điểm ảnh đó. Nhờ vậy:
- Ánh xạ từ điểm biên sang không gian tham số giảm từ $1 \to 180$ xuống chính xác $1 \to 1$.
- Giá trị $\cos(\theta)$ và $\sin(\theta)$ với $\theta \in [0^\circ, 179^\circ]$ được tính toán trước và lưu trong bảng tra cứu LUT (Look-Up Table) định dạng số Fixed-point 16-bit.
- Cơ chế bỏ phiếu phân tách thành hai ngân hàng nhớ song song: VOTING PROCESS EVEN và VOTING PROCESS ODD, loại bỏ hoàn toàn xung đột ghi bộ nhớ (Memory Write Hazard).
- Khối trích xuất cực đại cục bộ tìm ra 2 cặp tham số $(\rho_{left}, \theta_{left})$ và $(\rho_{right}, \theta_{right})$ có số phiếu cao nhất đại diện cho làn trái và làn phải.
// Trích đoạn Verilog thể hiện việc tính toán Hough Parameter qua LUT
module hough_calc_rho (
input wire clk,
input wire valid_in,
input wire [10:0] x_coord,
input wire [10:0] y_coord,
input wire [7:0] theta_deg, // 0 to 179 from CORDIC
output reg [11:0] rho_out,
output reg valid_out
);
// Look-Up Tables for Sin and Cos (Scaled by 256 for fixed-point)
wire signed [15:0] cos_val;
wire signed [15:0] sin_val;
lut_trig_table u_lut (
.theta (theta_deg),
.cos_o (cos_val),
.sin_o (sin_val)
);
reg signed [27:0] x_cos;
reg signed [27:0] y_sin;
always @(posedge clk) begin
if (valid_in) begin
x_cos <= x_coord * cos_val;
y_sin <= y_coord * sin_val;
rho_out <= (x_cos + y_sin) >>> 8; // Shift back
valid_out <= 1'b1;
end else begin
valid_out <= 1'b0;
end
end
endmodule
Kết quả đo lường và kiểm thử
Thiết kế đã hoàn thành tổng hợp (Synthesis), thực thi (Implementation) và nạp kiểm thử trực tiếp trên bo mạch phần cứng Xilinx Virtex-7 VC707.
1. Tài nguyên phần cứng tiêu thụ trên FPGA
| Loại tài nguyên (Resource Type) |
Số lượng sử dụng (Used) |
Tổng tài nguyên sẵn có (Available) |
Tỷ lệ sử dụng (%) |
| LUT (Look-Up Table) |
18,420 |
303,600 |
6.07% |
| LUTRAM (Memory LUT) |
2,150 |
130,800 |
1.64% |
| FF (Flip-Flop) |
22,810 |
607,200 |
3.76% |
| BRAM (Block RAM 36Kb) |
48.5 |
1,030 |
4.71% |
| DSP48 Slices |
64 |
2,800 |
2.29% |
Nhận xét: Hệ thống chỉ tiêu tốn chưa đầy 6.1% LUT và 4.8% BRAM, cho phép dễ dàng tích hợp thêm các module ADAS khác (nhận diện biển báo, phát hiện người đi bộ, bám vật thể) trên cùng một chip FPGA.
2. Phân tích Timing và Công suất
- Tần số hoạt động cực đại ($F_{max}$): $170 \text{ MHz}$ (vượt xa mục tiêu thiết kế ban đầu là $150 \text{ MHz}$).
- Worst Negative Slack (WNS): $+0.842 \text{ ns}$ (đảm bảo không vi phạm setup time).
- Worst Hold Slack (WHS): $+0.048 \text{ ns}$ (đảm bảo an toàn hold time).
- Tổng năng lượng tiêu thụ (Total On-Chip Power): $2.34 \text{ W}$ (trong đó công suất động của lõi IP chỉ chiếm $0.86 \text{ W}$).
3. Hiệu năng xử lý Video thực tế
- Thử nghiệm trên tập dữ liệu gồm 10 video giao thông thực tế với điều kiện ánh sáng đa dạng (nắng gắt, bóng râm, vạch kẻ đường ngắt quãng, xe cộ đông đúc).
- Độ phân giải khung hình: $1024 \times 1024$ pixels.
- Tốc độ xử lý thực tế qua cổng PCIe: $97.2 \text{ FPS}$ (thời gian xử lý mỗi frame chỉ $\approx 10.28 \text{ ms}$).
- Độ chính xác nhận diện làn đường (Accuracy): Đạt $94.18%$ so với nhãn gán chuẩn (Ground Truth).
Đổi mới và đóng góp
Bảng so sánh với các công trình nghiên cứu công bố quốc tế
| Chỉ số kỹ thuật |
Nghiên cứu [2] (Parallel HT) |
Nghiên cứu [3] (Local Max HT) |
Nghiên cứu [4] (HPS Optimization) |
Nghiên cứu [5] (HW/SW Partition) |
Kiến trúc đề xuất trong khóa luận |
| Nền tảng thực thi |
FPGA Virtex-4 |
FPGA Cyclone IV |
FPGA Spartan-6 |
FPGA Zynq-7000 |
FPGA Virtex-7 VC707 |
| Độ phân giải ảnh |
$1024 \times 768$ |
$640 \times 480$ |
$640 \times 480$ |
$1024 \times 1024$ |
$1024 \times 1024$ |
| Tần số xung nhịp |
$200 \text{ MHz}$ |
$50 \text{ MHz}$ |
$200 \text{ MHz}$ |
$145 \text{ MHz}$ |
$170 \text{ MHz}$ |
| Tốc độ xử lý (FPS) |
$58 \text{ FPS}$ |
$30 \text{ FPS}$ |
$60 \text{ FPS}$ |
$72 \text{ FPS}$ |
$97.2 \text{ FPS}$ |
| Thời gian/Frame (ms) |
$17.2 \text{ ms}$ |
$33.3 \text{ ms}$ |
$16.6 \text{ ms}$ |
$13.8 \text{ ms}$ |
$10.28 \text{ ms}$ |
| Tối ưu lượng giác |
LUT cơ bản |
LUT + Bầu chọn |
Giảm không gian HPS |
Phân tách HW/SW |
LUT + Sobel CORDIC $\theta$ Mapping ($1 \to 1$) |
Tốc độ xử lý (FPS) so sánh trực tiếp:
Kiến trúc đề xuất : [========================================] 97.2 FPS
Nghiên cứu [5] : [=============================] 72.0 FPS
Nghiên cứu [4] : [========================] 60.0 FPS
Nghiên cứu [2] : [======================] 58.0 FPS
Nghiên cứu [3] : [============] 30.0 FPS
Các đóng góp kỹ thuật cốt lõi
- Triệt tiêu gánh nặng tính toán lượng giác: Bằng cách kết hợp góc hướng độ dốc $G_{atan}$ từ bộ Sobel CORDIC với bảng tra LUT lượng giác 16-bit, thuật toán loại bỏ hoàn toàn việc quét 180 góc lượng giác cho mỗi điểm ảnh, giảm độ phức tạp tính toán từ $O(N \cdot M \cdot K)$ xuống còn $O(N \cdot M)$ với pipeline cấp độ pixel.
- Cơ chế bỏ phiếu song song Even/Odd BRAM: Giải quyết triệt để xung đột truy cập ô nhớ trong không gian Hough, cho phép cập nhật đồng thời nhiều giá trị tích lũy mà không làm dừng pipeline dữ liệu.
- Hiệu suất năng lượng vượt trội (Energy Efficiency): Đạt tốc độ 97.2 FPS với mức tiêu thụ điện năng chỉ 2.34W trên chip, mang lại hiệu suất năng lượng cao gấp hàng chục lần so với GPU nhúng chuyên dụng (như NVIDIA Jetson Xavier hay RTX series).
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng trong thực tế (Use Cases)
- Hệ thống ADAS tích hợp trên ô tô thương mại: Đóng vai trò cảm biến thị giác xử lý trước (Front-end Camera Sensor Processor), cung cấp thông tin góc lệch và khoảng cách làn đường trực tiếp cho Bộ điều khiển trung tâm (ECU) qua giao thức CAN/Ethernet trên xe.
- Xe bus nhanh (BRT) và Xe tự hành trong khu công nghệ/sân bay: Vận hành liên tục trong điều kiện đường nội bộ với độ chính xác cao và độ trễ phản hồi tức thì dưới 11ms.
- Hệ thống giám sát giao thông thông minh (ITS): Lắp đặt tại các cột đèn tín hiệu hoặc camera cao tốc để phân tích hành vi lấn làn, ghi nhận lỗi vi phạm giao thông tự động theo thời gian thực.
Hướng dẫn triển khai và kết nối phần cứng
+------------------+ PCIe Gen2 x4 Bus +-----------------------+
| Host PC / IPC | <===============================> | FPGA Virtex-7 VC707 |
| (Ubuntu/Windows) | DMA Frame Streaming In | - AXI DMA Controller |
| | Lane Parameters Out | - Core IP Lane Detect|
+------------------+ +-----------------------+
- Yêu cầu phần cứng:
- Bo mạch chủ hỗ trợ khe cắm PCIe Gen2 x4 hoặc Gen3 x8.
- Bo mạch Xilinx Virtex-7 VC707 Evaluation Kit (cấp nguồn phụ 12V-5A).
- Cáp lập trình JTAG Platform Cable USB II phục vụ cấu hình/nạp Flash.
- Yêu cầu phần mềm & Driver:
- Hệ điều hành Linux (Ubuntu 18.04/20.04 LTS kernel 5.4+) hoặc Windows 10 x64.
- Driver Xilinx XDMA (PCIe Direct Memory Access) cho đường truyền Direct Buffer.
- Thư viện OpenCV/C++ Host Application nhận tọa độ $(\rho, \theta)$ và overlay lên video gốc.
- Quy trình triển khai:
- Bước 1: Nạp file bitstream
.bit thông qua Vivado Hardware Manager hoặc ghi trực tiếp vào BPI Flash trên bo mạch VC707.
- Bước 2: Khởi động máy chủ Host PC để hệ thống BIOS nhận diện thiết bị PCIe Endpoint (
lspci | grep Xilinx).
- Bước 3: Chạy ứng dụng tầng Host đọc luồng camera, ghi liên tục vào bộ đệm DMA của FPGA, nhận dữ liệu tham số làn đường trả về và gửi lệnh điều hướng xe.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Phụ thuộc vào chất lượng vạch kẻ đường: Trong điều kiện đường không có vạch phân làn (đường đất, công trường) hoặc vạch kẻ bị mòn hoàn toàn trên 80% chiều dài khung hình, độ chính xác thuật toán giảm xuống còn $\sim 82%$.
- Mô hình đường thẳng: Thuật toán Hough Transform chuẩn áp dụng tìm đoạn thẳng tuyến tính; đối với các góc cua rất gắt (khúc cua gấp $\ge 60^\circ$), mô hình cần được phân đoạn thành các cửa sổ nhỏ để bám theo đường cong bậc hai (Parabolic model).
Hướng nghiên cứu mở rộng
- Bổ sung Kalman Filter: Tích hợp bộ lọc Kalman trên phần cứng để theo dõi (tracking) vị trí làn đường giữa các khung hình liên tiếp, giúp duy trì đường biên mượt mà ngay cả khi mất dấu tạm thời trong 3-5 frames do chướng ngại vật che khuất.
- Tích hợp mạng nơ-ron trọng lượng nhẹ (Lightweight CNN): Thiết kế khối CNN nhỏ (chẳng hạn cấu trúc phân loại dạng MobileNet/Tiny-YOLO) tích hợp trên phần tài nguyên logic còn trống (94% LUTs) nhằm phát hiện đồng thời phương tiện và người đi bộ.
- Chuyển giao công nghệ sang SoC (System-on-Chip): Đóng gói toàn bộ kiến trúc lên nền tảng Xilinx Zynq UltraScale+ MPSoC (kết hợp lõi ARM Cortex-A53 và Logic FPGA), tạo ra thiết bị nhúng All-in-One kích thước nhỏ gọn.
Đối tượng hưởng lợi
+--------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
| |
| [Sinh viên / Nghiên cứu sinh] --> Nguồn tài liệu mẫu chuẩn HW/SW Co-Design |
| [Kỹ sư FPGA / Embedded RTL] --> Phương pháp tối ưu pipeline & LUT CORDIC |
| [Doanh nghiệp Ô tô / ADAS] --> Giải pháp IP Core tốc độ cao, tiêu thụ <3W |
| [Cộng đồng ITS / Smart City] --> Thiết bị giám sát biên đường độ trễ thấp |
+--------------------------------------------------------------------------------+
- Sinh viên & Nghiên cứu sinh ngành Kỹ thuật Máy tính / Điện tử: Nhận được một tài liệu tham khảo hoàn chỉnh, chi tiết từ mô hình hóa toán học trên MATLAB/Simulink đến hiện thực phần cứng thực tế trên FPGA Vivado; hiểu rõ phương pháp Hardware Co-Simulation.
- Kỹ sư phát triển phần cứng (RTL/FPGA Engineers): Nắm bắt kỹ thuật tối ưu hóa thuật toán phức tạp (như CORDIC, Line Buffer, LUT Hough Transform) sang kiến trúc đường ống không bế tắc (Stall-free Pipeline), áp dụng trực tiếp cho các bài toán xử lý ảnh khác.
- Doanh nghiệp sản xuất thiết bị phụ trợ ô tô & ADAS: Sở hữu giải pháp lõi IP Core sẵn sàng thương mại hóa với chi phí phần cứng thấp, tiêu thụ điện năng tối thiểu ($<3\text{W}$) và đạt chuẩn thời gian thực khắt khe.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu bo mạch FPGA có tối thiểu $20,000 \text{ LUTs}$, $50 \text{ khối BRAM 36Kb}$ và $64 \text{ lát cắt DSP48}$ (chẳng hạn các dòng tầm trung như Xilinx Artix-7 XC7A200T, Kintex-7 hoặc Zynq-7020 trở lên). Máy chủ Host chỉ cần cấu hình cơ bản (Core i3, 4GB RAM) có khe cắm PCIe Gen2 x4.
2. Làm thế nào để giải quyết vấn đề trễ dòng khi truyền video 1024x1024 qua PCIe?
Dự án sử dụng cơ chế Direct Memory Access (DMA) theo chuẩn AXI-Stream. Thay vì truyền từng pixel, dữ liệu được truyền theo từng khối bộ đệm liên tục (Burst Memory Transfer), giảm thiểu overhead của CPU và đảm bảo băng thông đạt trên $1.2 \text{ GB/s}$, đáp ứng tốc độ 97 FPS mà không gây tràn hàng đợi (FIFO Overflow).
3. Hệ thống xử lý thế nào khi gặp điều kiện vạch kẻ đường bị đứt đoạn?
Nhờ bản chất tích lũy phiếu bầu của không gian Hough Transform, các đoạn nét đứt của vạch kẻ đường khi qua phép phát hiện biên vẫn có cùng tham số góc hướng $\theta$ và khoảng cách $\rho$. Do đó, số phiếu bầu tại ô nhớ cực đại vẫn tích lũy vượt ngưỡng threshold, giúp hệ thống phát hiện chính xác đường thẳng kéo dài mà không bị ngắt quãng.
4. Chi phí bảo trì và độ tin cậy của phần cứng FPGA so với giải pháp chạy phần mềm trên máy tính nhúng?
FPGA có độ tin cậy phần cứng vượt trội (MTBF - Mean Time Between Failures cao), không phụ thuộc vào hệ điều hành (OS Crash), khởi động tức thì dưới 1 giây và đáp ứng các tiêu chuẩn an toàn công nghiệp khắt khe (ISO 26262 cho ô tô). Việc nâng cấp tính năng được thực hiện linh hoạt qua việc cập nhật firmware từ xa (Remote Bitstream Update).
5. Khả năng mở rộng sang các bài toán phát hiện vật cản khác như thế nào?
Do thiết kế hiện tại mới chỉ sử dụng $6.07% \text{ LUT}$ và $2.29% \text{ DSP}$ của chip Virtex-7 XC7VX485T, hơn $90%$ tài nguyên phần cứng còn lại hoàn toàn đủ khả năng tích hợp thêm các khối IP chuyên dụng như: Nhận diện biển báo giao thông (TSR), Cảnh báo va chạm phía trước (FCW) hoặc Bộ đệm hiển thị đa camera 360 độ (Surround View System).
Kết luận
Đề tài khóa luận tốt nghiệp "Thiết kế hệ thống phát hiện làn đường cho xe tự hành dựa trên phần cứng" đã giải quyết trọn vẹn bài toán cân bằng giữa độ chính xác, tốc độ xử lý thời gian thực và hiệu quả năng lượng. Bằng việc đề xuất kiến trúc cải tiến kết hợp bảng tra cứu LUT với góc định hướng Gradient từ CORDIC Sobel, nhóm tác giả đã loại bỏ triệt để các phép toán lượng giác phức tạp trong thuật toán Hough Transform tiêu chuẩn.
Hệ thống chứng minh tính khả thi và hiệu năng vượt trội qua việc triển khai thực tế trên bo mạch FPGA Xilinx Virtex-7 VC707, đạt tần số hoạt động $170 \text{ MHz}$, tốc độ xử lý $97.2 \text{ FPS}$ ở độ phân giải cao $1024 \times 1024$ và độ chính xác $94.18%$ với công suất tiêu thụ chỉ $2.34\text{W}$. Đây là bước đệm công nghệ vững chắc, mở ra tiềm năng ứng dụng to lớn trong việc nội địa hóa và làm chủ công nghệ sản xuất các vi mạch tích hợp cho hệ sinh thái xe tự hành và giao thông thông minh tại Việt Nam.