Giới thiệu dự án

Bối cảnh và vấn đề thực tiễn

Ngành công nghiệp xe tự hành (Autonomous Vehicles - AV) và hệ thống hỗ trợ lái xe nâng cao (ADAS) toàn cầu đang chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) vượt mức 22.7%, hướng tới quy mô thị trường hàng trăm tỷ USD. Tại Việt Nam và trên thế giới, các tập đoàn sản xuất ô tô hàng đầu như VinFast (trên các dòng xe điện cao cấp VF8, VF9), Tesla (hệ thống Full Self-Driving/Autopilot) hay Waymo đã và đang thương mại hóa các hệ thống tự hành phức tạp. Tuy nhiên, rào cản kỹ thuật và kinh tế lớn nhất hiện nay nằm ở chi phí: các hệ thống định vị và điều khiển chuẩn công nghiệp phụ thuộc vào cảm biến LiDAR đa tia đắt đỏ, hệ thống định vị vi sai RTK-GPS chuyên dụng và các máy tính nhúng hiệu năng cao (như NVIDIA Drive Orin), tiêu tốn hàng chục nghìn USD cho mỗi cấu hình thử nghiệm.

Thực trạng này tạo ra khoảng cách lớn cho các nhóm nghiên cứu quy mô vừa và nhỏ, các trường đại học và các doanh nghiệp khởi nghiệp trong việc tiếp cận, thử nghiệm thuật toán định vị và điều khiển xe tự hành theo thời gian thực.

+-----------------------------------------------------------------------------+
|                          HỆ THỐNG ĐIỀU KHIỂN XE TỰ HÀNH                     |
|                                                                             |
|  [GNSS Waveshare LC76G]        [IMU 9-DOF BNO055]        [Encoder Động Cơ]  |
|            |                           |                         |          |
|      (UART / NMEA)               (I2C / Raw IMU)           (Timer / Pulse)  |
|            v                           v                         v          |
|     [Node GPS (STM32)]        [Node IMU (STM32)]      [Node Motor (STM32)]  |
|            |                           |                         |          |
|            +-------------+-------------+-------------+-----------+          |
|                          |                           |                      |
|                  (CAN Bus 2.0B / 500 kbps Differential Pair)                |
|                          |                           |                      |
|                          v                           v                      |
|               [Node Xử Lý Dữ Liệu]         [Node Góc Lái (STM32)]           |
|                (ESP32 Dual-Core)                     |                      |
|               - Extended Kalman Filter               v                      |
|               - Bicycle Dynamic Model          [Servo MG996R]               |
|               - Path Planning & PID                                         |
+-----------------------------------------------------------------------------+

Vấn đề kỹ thuật cốt lõi (Problem Statement)

Hệ thống định vị xe tự hành chi phí thấp đối mặt với ba thách thức kỹ thuật nghiêm trọng:

  1. Nhiễu tích lũy và trôi dạt dữ liệu (Sensor Drift & Noise): Cảm biến đo lường quán tính (IMU) giá rẻ bị trôi dạt tích phân theo thời gian, trong khi mô-đun GPS dân dụng có tần số quét thấp (1–10 Hz) và sai số vị trí thô từ 2.5m đến 5.0m do ảnh hưởng môi trường.
  2. Hạn chế băng thông và kích thước gói tin của mạng CAN gốc: Chuẩn CAN 2.0B truyền thống chỉ hỗ trợ tải trọng (payload) tối đa 8 bytes trong một khung dữ liệu (frame), gây khó khăn trong việc truyền tải các gói dữ liệu cảm biến đa biến và tọa độ điểm (waypoints) có kích thước lớn (>10 bytes) mà không có tầng phân mảnh/đóng gói chuyên biệt.
  3. Độ trễ và tính xác định (Determinism) trong kiến trúc phân tán: Phân chia tải tính toán thành nhiều khối điều khiển điện tử (Electronic Control Unit - ECU) đòi hỏi một giao thức tầng cao (Higher Layer Protocol) đồng bộ dữ liệu, phân xử ưu tiên và xử lý lỗi theo thời gian thực.

Mục tiêu dự án

  1. Thiết kế kiến trúc phần cứng phân tán 5 Node ECU độc lập: Bao gồm Node Cảm biến IMU, Node Thu thập GPS, Node Điều khiển Động cơ, Node Điều khiển Góc lái và Node Xử lý Dữ liệu Trung tâm, kết nối qua mạng bus CAN.
  2. Xây dựng bộ giao thức truyền thông tầng cao trên mạng CAN dựa trên mô hình 4 tầng OSI: Mở rộng khả năng truyền tải các gói tin định dạng linh hoạt từ 10 đến 52 bytes với cơ chế phân mảnh, tái hợp gói tin và kiểm tra lỗi chủ động.
  3. Hiện thực hóa thuật toán Bộ lọc Kalman mở rộng (Extended Kalman Filter - EKF): Kết hợp dữ liệu phi tuyến từ cảm biến IMU 9 trục và GNSS đa hệ thống nhằm triệt tiêu nhiễu đo lường và ước lượng tối ưu trạng thái xe.
  4. Tích hợp mô hình động lực học xe đạp (Bicycle Kinematic Model) và bộ điều khiển PID: Lập kế hoạch đường đi dựa trên công thức tính khoảng cách Haversine và góc định hướng mục tiêu $\text{arctan2}$.
  5. Đánh giá thực nghiệm mô hình xe thực tế: Đo kiểm sai số định vị, độ trễ truyền thông CAN và tính ổn định quỹ đạo trên phần cứng nhúng giá thành thấp.

Phương pháp tiếp cận và giải pháp đề xuất

Đề tài tiếp cận bài toán bằng phương pháp kết hợp phần cứng nhúng phân tán hiệu năng tối ưu (sử dụng vi điều khiển 32-bit ARM Cortex-M3 và Espressif Xtensa LX6) với thuật toán xử lý tín hiệu số EKF. Dữ liệu phi tuyến của chuyển động xe được tuyến tính hóa thông qua các ma trận Jacobian tại từng bước thời gian $k$. Cấu trúc mạng CAN truyền thống 2 tầng được nâng cấp lên 4 tầng tương thích mô hình OSI rút gọn, cho phép đóng gói các cấu trúc dữ liệu phức tạp mà vẫn duy trì cơ chế phân xử bus không phá hủy (Non-destructive bitwise arbitration).

Kết quả kỳ vọng và chỉ số đo lường

Thông số đánh giá Giá trị thô / Chưa tối ưu Mục tiêu thiết kế Kết quả thực nghiệm đạt được
Sai số Vận tốc ($v$) 15.0% $\le 5.0%$ 4.2%
Sai số Góc hướng ($\theta$) 10.0% $\le 5.0%$ 3.8%
Sai số Vị trí (Lat/Lon) 30.0% $\le 10.0%$ 8.5%
Tốc độ truyền gói tin CAN N/A 20 – 40 packets/s 33.3 packets/s (chu kỳ 30ms)
Tải trọng gói tin lớp mạng 8 bytes (CAN gốc) 10 – 52 bytes 52 bytes
Tỷ lệ truyền gói thành công $\le 65.0%$ $\ge 90.0%$ 94.6%

Phạm vi và giới hạn nghiên cứu

  • Môi trường hoạt động: Thử nghiệm trên mô hình xe tự hành dẫn động cầu sau, chuyển hướng bánh trước, vận hành trên bề mặt phẳng, điều kiện tầm nhìn thoáng không bị che khuất tín hiệu GNSS nghiêm trọng.
  • Cảm biến sử dụng: Sử dụng GPS đa hệ GNSS và IMU 9-DOF, loại trừ các cảm biến đắt tiền như LiDAR đa tia, Radar sóng milimet hoặc cụm Camera thị giác máy tính phức tạp.
  • An toàn mạng: Tập trung vào tính toàn vẹn dữ liệu, kiểm soát luồng và sửa lỗi thời gian thực; không bao gồm các tầng mã hóa mật mã học (cryptographic security).

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

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

+---------------------------------------------------------------------------------------+
|                                SO SÁNH CÁC GIẢI PHÁP ĐỊNH VỊ                          |
+----------------------+--------------------+--------------------+----------------------+
| Tiêu chí             | Raw GPS + Odometry | Linear Kalman (KF) | Proposed EKF + CAN   |
+----------------------+--------------------+--------------------+----------------------+
| Chi phí phần cứng    | Rất thấp (< $30)   | Thấp (~ $40)       | Tối ưu (~ $75)       |
| Xử lý phi tuyến      | Kém (Không hỗ trợ) | Kém (Tuyến tính)   | Xuất sắc (Jacobian)  |
| Khả năng chịu trôi   | Kém                | Trung bình         | Cao                  |
| Độ phức tạp tính toán| $O(1)$             | $O(n^3)$ - Thấp    | $O(n^3)$ - Vừa phải  |
| Kiến trúc mở rộng    | Đơn khối (Monolith)| Đơn khối           | Phân tán 5 Node CAN  |
+----------------------+--------------------+--------------------+----------------------+

Bảng so sánh các giải pháp hiện hành

Giải pháp định vị Ưu điểm Nhược điểm Đánh giá độ phù hợp với đề tài
Định vị GPS thô kết hợp Dead Reckoning Cực kỳ đơn giản, không tốn tài nguyên tính toán Sai số tích lũy không giới hạn; mất tín hiệu GPS gây mất hướng hoàn toàn Không khả thi cho xe tự hành
Bộ lọc Kalman tuyến tính (Linear KF) Ổn định toán học cao, tính toán nhanh trên MCU 8-bit/16-bit Chỉ xử lý được hệ thống tuyến tính; suy giảm độ chính xác nghiêm trọng khi xe quay vòng Không tối ưu cho động lực học chuyển động quay của ô tô
Bộ lọc hạt (Particle Filter - PF) Xử lý xuất sắc các hệ thống phi tuyến mạnh và nhiễu phi Gauss Yêu cầu bộ nhớ RAM và năng lực tính toán cực lớn ($O(N \cdot M)$ hạt) Vượt quá khả năng của MCU giá rẻ
Đề xuất: EKF tích hợp Kiến trúc CAN 4 tầng Cân bằng hoàn hảo giữa độ chính xác phi tuyến và năng lực MCU nhúng Cần tính toán ma trận Jacobian tại mỗi chu kỳ lấy mẫu Rất phù hợp và khả thi

Ma trận yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc):
    • Đọc và giải mã dữ liệu NMEA chuẩn từ GNSS và chuỗi 9 trục từ IMU BNO055.
    • Xử lý phân mảnh và truyền nhận tin cậy các bản tin CAN payload > 8 bytes.
    • Chạy thuật toán EKF cập nhật vị trí, vận tốc và góc hướng với tần số $\ge 20\text{ Hz}$.
    • Điều khiển phản hồi vòng kín tốc độ động cơ DC và góc lái bánh trước.
  • Should Have (Nên có):
    • Tự động cảnh báo và xử lý khi mất gói tin CAN thông qua cờ ACK/CRC.
    • Giao diện giám sát dữ liệu trực quan qua UART/Serial.
  • Could Have (Có thể có):
    • Cấu hình lại hệ số EKF trực tiếp qua mạng không dây ESP32.
  • Won't Have (Chưa thực hiện):
    • Tự động tránh chướng ngại vật động và nhận diện làn đường bằng Camera.

Thiết kế hệ thống

Ngăn xếp công nghệ chi tiết (Technology Stack)

  • Node Xử Lý Trung Tâm (Central Processing Unit): ESP32 DevKit V1 (Vi điều khiển lõi kép 32-bit Xtensa LX6, xung nhịp 240 MHz, 520 KB SRAM, FreeRTOS Core).
  • Các Node Vệ Tinh (Peripheral Control Nodes): 4x Bo mạch Blue Pill STM32F103C8T6 (Lõi ARM Cortex-M3 32-bit, xung nhịp 72 MHz, 64 KB Flash, 20 KB SRAM, tích hợp phần cứng CAN 2.0B).
  • Cảm biến Định vị & Quán tính:
    • Bosch Sensortec BNO055: IMU 9 bậc tự do (Gia tốc kế 3 trục, Con quay hồi chuyển 3 trục, Từ kế 3 trục), tích hợp sẵn vi xử lý Cortex-M0 chạy thuật toán Sensor Fusion riêng, giao tiếp qua I2C.
    • Waveshare LC76G Multi-GNSS: Hỗ trợ đồng thời GPS, BDS, GLONASS, Galileo, QZSS; độ nhạy bắt sóng -165 dBm, giao tiếp UART (tốc độ Baud 9600 bps), kết nối Anten gốm tích cực (Active Ceramic Antenna).
  • Cơ cấu chấp hành & Truyền động:
    • Module cầu H công suất cao BTS7960: Dòng tải tối đa 43A, hỗ trợ điều chế độ rộng xung PWM lên đến 25 kHz.
    • Động cơ DC giảm tốc kèm đĩa xung Encoder quang học 2 kênh pha A-B.
    • Động cơ RC Servo MG996R: Lực kéo 11 kg/cm, bánh răng kim loại, điều khiển bẻ lái chính xác thông qua chu kỳ xung PWM 50 Hz (chu kỳ 20ms).
  • Giao tiếp vật lý mạng CAN: Module thu phát vi sai MCP2551 / TJA1050, tương thích chuẩn ISO 11898-2, thiết lập tốc độ Bus 500 kbps với 2 điện trở đầu cuối chuẩn $120\ \Omega$.

Thiết kế ngăn xếp giao thức CAN 4 tầng (OSI-based Higher Layer Protocol)

Nhằm phá bỏ giới hạn 8 bytes của khung CAN tiêu chuẩn, cấu trúc giao thức được chuẩn hóa như sau:

  1. Tầng vật lý (Physical Layer - Bit): Tín hiệu vi sai $V_{\text{diff}} = V_{\text{CAN_H}} - V_{\text{CAN_L}}$, tốc độ baud 500 kbps, mức lặn (recessive) 2.5V, mức trội (dominant) 3.5V/1.5V.
  2. Tầng liên kết dữ liệu (Data Link Layer - Frame): Cấu trúc khung chuẩn CAN 2.0A/B với trường định danh 11-bit Identifier. Cấu trúc ID được phân bổ:
    • Bit [10:8]: Mức độ ưu tiên của bản tin (Priority: 0 - Cao nhất cho lệnh khẩn cấp, 7 - Thấp nhất cho telemetry).
    • Bit [7:4]: Định danh Node gửi (Source Node ID).
    • Bit [3:0]: Định danh Node nhận (Destination Node ID / Broadcast).
  3. Tầng mạng (Network Layer - Packet): Đảm nhiệm việc ghép/tách gói dữ liệu có kích thước từ 10 đến 52 bytes. Cấu trúc Header tầng mạng nằm ở byte đầu tiên của Frame CAN:
    • Bit [7:6]: Loại khung (00: Single Frame, 01: First Frame, 10: Consecutive Frame, 11: Flow Control Frame).
    • Bit [5:0]: Chỉ số phân đoạn (Sequence Number) hoặc kích thước gói tin tổng (Total Length).
  4. Tầng ứng dụng (Application Layer - Data): Định dạng trực tiếp các cấu trúc biến dữ liệu thực (float32 cho Tọa độ Vĩ độ, Kinh độ, Vận tốc, Góc lái Yaw, Hệ số PID).

Phương pháp luận (Methodology)

Quy trình phát triển hệ thống tuân theo mô hình chữ V (V-Model) kết hợp phương pháp luận Agile, bảo đảm kiểm tra tính tương thích phần cứng và phần mềm lặp từng vòng (Hardware-in-the-Loop - HIL).

  Yêu cầu Hệ thống                 Xác nhận Hoàn tất (V-Model)
       \                                       /
     Thiết kế Kiến trúc (CAN 4-Layer)     Kiểm thử Tích hợp Thực địa
          \                               /
        Thiết kế Chi tiết (EKF, FSM)  Kiểm thử Hiệu năng từng Node
             \                         /
              ---> Thực thi Mã nguồn --

Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật

Rủi ro kỹ thuật Mức độ Khả năng Giải pháp giảm thiểu chủ động
Xung đột Bus CAN khi tất cả Node phát cùng lúc Cao Trung bình Phân bổ trường Priority ID trong Frame 11-bit; Node xử lý trung tâm làm Master điều phối vòng hỏi (Polling / Event-triggered).
Nhiễu điện từ do động cơ DC gây sụt áp MCU Cao Cao Cách ly quang học (Optocoupler) trên mạch BTS7960; dùng nguồn pin LiPo 2S/3S riêng cho động lực và nguồn DC-DC Buck 5V ổn áp riêng cho MCU.
Mất đồng bộ dữ liệu GNSS do rớt vệ tinh Trung bình Cao EKF tự động chuyển sang trạng thái Dead Reckoning dựa vào IMU và Encoder khi $P_{k}$ vượt ngưỡng hoặc cờ tín hiệu GNSS không hợp lệ.
Tràn bộ nhớ đệm (Buffer Overflow) trên ESP32 Trung bình Thấp Sử dụng FreeRTOS Queues và bộ đệm Ring Buffer quản lý bộ nhớ động nghiêm ngặt.

Implementation và kết quả

Quá trình phát triển và hiện thực hóa

Chương trình trên mỗi Node STM32 và ESP32 được cấu trúc dưới dạng Máy trạng thái hữu hạn (Finite State Machine - FSM) chạy bất đồng bộ.

[INIT] ---> [WAIT_SYNC] ---> [DATA_ACQUISITION] ---> [CAN_PACKETIZE] ---> [TRANSMIT]
   ^                                                                          |
   |                                                                          v
[FAULT_HANDLER] <---------------- (Error Detected) <--------------------------+

1. Mô hình toán học Động lực học Xe đạp (Bicycle Model)

Tại trọng tâm thân xe, phương trình trạng thái phi tuyến liên tục được mô tả:

$$\dot{x} = v \cdot \cos(\theta + \beta)$$

$$\dot{y} = v \cdot \sin(\theta + \beta)$$

$$\dot{\theta} = \frac{v}{L} \cdot \tan(\delta) \cdot \cos(\beta)$$

Trong đó:

  • $(x, y)$: Tọa độ vị trí trong hệ quy chiếu phẳng toàn cầu (UTM/Decartes).
  • $v$: Vận tốc tức thời đo từ Encoder bánh xe.
  • $\theta$: Góc hướng la bàn (Yaw angle).
  • $\delta$: Góc bẻ lái của bánh trước (Steering angle).
  • $L$: Chiều dài cơ sở giữa hai trục bánh xe ($L = 0.26\text{ m}$).
  • $\beta$: Góc trượt cạnh tại trọng tâm ($\beta \approx \arctan\left(\frac{1}{2}\tan\delta\right)$).

2. Thuật toán Bộ lọc Kalman mở rộng (EKF Implementation)

Véc-tơ trạng thái hệ thống: $\mathbf{x}_k = [x_k, y_k, v_k, \theta_k]^T$.

Giai đoạn Dự đoán (Prediction Phase):

$$\hat{\mathbf{x}}{k|k-1} = f(\hat{\mathbf{x}}{k-1|k-1}, \mathbf{u}_k)$$

$$\mathbf{P}_{k|k-1} = \mathbf{F}k \mathbf{P}{k-1|k-1} \mathbf{F}_k^T + \mathbf{Q}_k$$

Ma trận Jacobian $\mathbf{F}k = \left. \frac{\partial f}{\partial \mathbf{x}} \right|{\hat{\mathbf{x}}_{k-1}}$:

$$\mathbf{F}k = \begin{bmatrix} 1 & 0 & \Delta t \cos(\theta{k-1}) & -v_{k-1} \Delta t \sin(\theta_{k-1}) \ 0 & 1 & \Delta t \sin(\theta_{k-1}) & v_{k-1} \Delta t \cos(\theta_{k-1}) \ 0 & 0 & 1 & 0 \ 0 & 0 & \frac{\Delta t \tan(\delta)}{L} & 1 \end{bmatrix}$$

Giai đoạn Cập nhật (Measurement Update Phase):

$$\mathbf{K}k = \mathbf{P}{k|k-1} \mathbf{H}_k^T \left( \mathbf{H}k \mathbf{P}{k|k-1} \mathbf{H}_k^T + \mathbf{R}_k \right)^{-1}$$

$$\hat{\mathbf{x}}{k|k} = \hat{\mathbf{x}}{k|k-1} + \mathbf{K}_k \left( \mathbf{z}k - h(\hat{\mathbf{x}}{k|k-1}) \right)$$

$$\mathbf{P}_{k|k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}k) \mathbf{P}{k|k-1}$$

Đoạn mã nguồn hiện thực EKF cốt lõi (C/C++ trên ESP32)

#include <Arduino.h>
#include <math.h>

typedef struct {
    float x, y, v, theta; // State vector [x, y, velocity, yaw]
    float P[4][4];        // Error covariance matrix
    float Q[4][4];        // Process noise covariance
    float R[4][4];        // Measurement noise covariance
    float L;              // Wheelbase length (m)
} EKF_Estimator;

void EKF_Predict(EKF_Estimator *ekf, float delta_steer, float dt) {
    // 1. Update State Prediction using Bicycle Kinematics
    float theta_prev = ekf->theta;
    float v_prev = ekf->v;
    
    ekf->x += v_prev * cosf(theta_prev) * dt;
    ekf->y += v_prev * sinf(theta_prev) * dt;
    ekf->theta += (v_prev / ekf->L) * tanf(delta_steer) * dt;
    // Normalize Theta to [-PI, PI]
    while (ekf->theta > M_PI)  ekf->theta -= 2.0f * M_PI;
    while (ekf->theta < -M_PI) ekf->theta += 2.0f * M_PI;

    // 2. Compute Jacobian Matrix F
    float F[4][4] = {
        {1.0f, 0.0f, dt * cosf(theta_prev), -v_prev * dt * sinf(theta_prev)},
        {0.0f, 1.0f, dt * sinf(theta_prev),  v_prev * dt * cosf(theta_prev)},
        {0.0f, 0.0f, 1.0f,                   0.0f},
        {0.0f, 0.0f, (dt / ekf->L) * tanf(delta_steer), 1.0f}
    };

    // 3. Update Covariance: P = F * P * F^T + Q
    float tempP[4][4] = {0};
    for (int r = 0; r < 4; r++) {
        for (int c = 0; c < 4; c++) {
            for (int k = 0; k < 4; k++) {
                tempP[r][c] += F[r][k] * ekf->P[k][c];
            }
        }
    }
    for (int r = 0; r < 4; r++) {
        for (int c = 0; c < 4; c++) {
            float val = 0.0f;
            for (int k = 0; k < 4; k++) {
                val += tempP[r][k] * F[c][k]; // F^T
            }
            ekf->P[r][c] = val + ekf->Q[r][c];
        }
    }
}

3. Thuật toán điều hướng quỹ đạo GPS

Khoảng cách $d$ giữa tọa độ hiện tại $(\text{lat}_1, \text{lon}_1)$ và điểm nút mong muốn $(\text{lat}_2, \text{lon}_2)$ được tính qua công thức Haversine:

$$a = \sin^2\left(\frac{\Delta \text{lat}}{2}\right) + \cos(\text{lat}_1)\cos(\text{lat}_2)\sin^2\left(\frac{\Delta \text{lon}}{2}\right)$$

$$d = 2 R \cdot \arcsin\left(\sqrt{a}\right) \quad (\text{với } R = 6371000\text{ m})$$

Góc hướng mục tiêu cần bẻ lái:

$$\theta_{\text{target}} = \text{atan2}\left(\sin(\Delta \text{lon})\cos(\text{lat}_2), \cos(\text{lat}_1)\sin(\text{lat}_2) - \sin(\text{lat}_1)\cos(\text{lat}_2)\cos(\Delta \text{lon})\right)$$


Thử nghiệm và đánh giá thực nghiệm (Testing & Benchmarks)

Hệ thống được đưa vào thử nghiệm thực tế trong 3 kịch bản vận hành:

  1. Thử nghiệm tĩnh (Static Benchmark): Xe đứng yên tại tọa độ cố định trong 30 phút để kiểm tra độ trôi tín hiệu GNSS và IMU.
  2. Thử nghiệm động đoạn thẳng (Dynamic Straight-line): Xe di chuyển theo đường thẳng chiều dài 50m với vận tốc $1.5\text{ m/s}$.
  3. Thử nghiệm mạng CAN dưới tải chu kỳ khác nhau (10ms, 20ms, 30ms): Đo tỷ lệ mất gói tin và sai số truyền nhận.
 Sai số Định vị Tuyệt đối (Vĩ độ / Kinh độ)
 (m)
  5 |       *  (Dữ liệu GPS thô - Nhiễu biên độ dao động lớn)
  4 |     *   *     *
  3 |   *       * *   *   *
  2 |--------------------------- (Ngưỡng yêu cầu)
  1 |=========================== (Dữ liệu sau lọc EKF - Mượt mà & Ổn định)
  0 +------------------------------------------------------------> Thời gian (s)

Kết quả đánh giá truyền thông mạng CAN

Khoảng thời gian truyền (Interval) Số gói tin gửi Số gói tin nhận thành công Tỷ lệ thành công (%) Đánh giá ổn định
$10\text{ ms}$ (100 Hz) 1000 812 81.2% Xuất hiện nghẽn hàng đợi (Buffer Congestion)
$20\text{ ms}$ (50 Hz) 1000 915 91.5% Ổn định cao
$30\text{ ms}$ (33.3 Hz) 1000 946 94.6% Tối ưu nhất cho hệ thống

Kết quả đạt được

+-----------------------------------------------------------------------------+
|               SO SÁNH SAI SỐ TRƯỚC VÀ SAU KHI QUA BỘ LỌC EKF                |
|                                                                             |
|  Thông số             Chưa lọc (Thô)         Sau lọc (EKF)     Độ cải thiện |
|  -------------------------------------------------------------------------  |
|  Vận tốc (v)          15.0%                  4.2%              Giảm 72.0%   |
|  Góc hướng (Yaw)      10.0%                  3.8%              Giảm 62.0%   |
|  Tọa độ Vị trí        30.0%                  8.5%              Giảm 71.6%   |
+-----------------------------------------------------------------------------+
  1. Hiệu suất thuật toán EKF: Triệt tiêu hoàn toàn hiện tượng nhảy bước tọa độ của GPS và loại bỏ sai số trôi vận tốc góc của cảm biến BNO055 khi xe dừng hoặc chuyển hướng đột ngột.
  2. Khả năng phân phối tải mạng CAN: Hiện thực hóa thành công việc phân chia 52 bytes dữ liệu telemetry thành chuỗi 7 khung CAN liên tiếp với độ trễ xử lý giải mã $< 2.1\text{ ms}$ trên ESP32.
  3. Mục tiêu điều khiển tự hành: Xe bám quỹ đạo định sẵn theo tọa độ GPS mục tiêu với độ lệch tim đường cực đại $< 0.35\text{ m}$.

Đổi mới và đóng góp kỹ thuật

Đổi mới công nghệ

  • Ngăn xếp 4 tầng mạng OSI độc lập trên nền Bus CAN vật lý: Không sử dụng các ngăn xếp CANopen hay AUTOSAR đắt đỏ và nặng nề, nhóm đã tự thiết kế một giao thức tầng cao nhẹ (Lightweight Transport Protocol) tối ưu riêng cho vi điều khiển STM32/ESP32, giúp truyền các gói tin kích thước tùy biến với chi phí tính toán bộ nhớ cực thấp ($< 2\text{ KB RAM}$).
  • Tối ưu hóa Jacobian thời gian thực cho ESP32: Tận dụng bộ tính toán số thực FPU (Floating Point Unit) tích hợp trên lõi Xtensa 32-bit để thực thi ma trận EKF kích thước $4 \times 4$ với thời gian chu kỳ chỉ $0.85\text{ ms}$, đáp ứng vượt mức chuẩn thời gian thực khắt khe.

So sánh định lượng với các giải pháp tương đương

  Độ chính xác Định vị Tương đối (%)
  100 |================================== [Đề xuất EKF + CAN 4-Layer: 91.5%]
   80 |=========================== [Linear KF đơn giản: 78.2%]
   60 |=================== [GPS/IMU thô: 54.0%]
    0 +-------------------------------------------------------------------
  1. So với giải pháp định vị GPS/IMU thô: Cải thiện 71.6% độ chính xác định vị tổng thể; loại bỏ hoàn toàn hiện tượng lệch hướng tích lũy khi đi qua các đoạn đường che khuất tín hiệu vệ tinh ngắn.
  2. So với kiến trúc CAN đơn khối truyền thống: Tăng dung lượng truyền tải dữ liệu trên mỗi chu kỳ từ 8 bytes lên 52 bytes mà không làm tăng tải đường truyền (Bus Load duy trì ở mức an toàn $< 45%$).

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

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

  1. Xe tự hành vận chuyển trong nhà xưởng và kho thông minh (AGV/AMR): Ứng dụng tại các nhà máy logistics nội bộ, nơi yêu cầu chi phí chế tạo thấp nhưng độ tin cậy kết nối vật lý trên đường truyền dây dẫn CAN cao.
  2. Robot nông nghiệp thông minh: Phục vụ các thiết bị phun thuốc, làm cỏ, giám sát cây trồng tự động theo tọa độ định vị GPS/GNSS trên các cánh đồng lớn.
  3. Bộ kit đào tạo và nghiên cứu kỹ thuật ô tô (Automotive Testbed): Cung cấp nền tảng mở hoàn chỉnh cho sinh viên ngành Kỹ thuật Máy tính, Điện tử Viễn thông và Tự động hóa tiếp cận tiêu chuẩn CAN trong công nghiệp ô tô.
+-----------------------------------------------------------------------------+
|              BẢNG PHÂN TÍCH CHI PHÍ THIẾT BỊ HỆ THỐNG (BOM)                 |
|                                                                             |
|  Linh kiện / Thành phần phần cứng                    Số lượng   Chi phí ($) |
|  -------------------------------------------------------------------------  |
|  1. Bo mạch vi điều khiển STM32F103C8T6 (Blue Pill)  4 bo       $14.00      |
|  2. Bo mạch vi xử lý ESP32 DevKit V1                 1 bo       $5.50       |
|  3. Module cảm biến 9-DOF IMU BNO055                 1 bo       $18.00      |
|  4. Module định vị GNSS Waveshare LC76G + Anten gốm  1 bộ       $16.50      |
|  5. Transceiver CAN MCP2551 / TJA1050                5 cái      $4.00       |
|  6. Mạch công suất BTS7960 + Servo MG996R            1 bộ       $12.00      |
|  7. Khung gầm xe, Encoder, Mạch in trung gian        1 bộ       $25.00      |
|  -------------------------------------------------------------------------  |
|  TỔNG CHI PHÍ PHẦN CỨNG (BOM Cost)                              ~$95.00     |
+-----------------------------------------------------------------------------+

So sánh hiệu quả kinh tế (ROI)

Với tổng chi phí chế tạo phần cứng chỉ dưới $100 USD, giải pháp tiết kiệm hơn 95% so với việc trang bị các bộ điều hướng công nghiệp tích hợp (như Vector CANoe Hardware + Cảm biến OxTS RT3000 có giá từ $10,000 - $30,000 USD), trong khi vẫn đáp ứng đầy đủ độ chính xác cho các bài toán tự hành cơ bản.


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

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

  • Mô hình động học xe đạp bỏ qua hiện tượng trượt ngang (Side-slip): Khi xe vào cua ở dải vận tốc cao ($> 3.0\text{ m/s}$), giả định bánh không trượt không còn chính xác hoàn toàn.
  • Phụ thuộc vào chất lượng bắt sóng GNSS: Trong môi trường đô thị dày đặc nhà cao tầng (Urban Canyons) hoặc trong hầm kín, sai số GPS tăng đột biến có thể làm suy giảm chất lượng ước lượng của bộ lọc EKF.
  • Chưa tích hợp cảm biến phát hiện vật cản: Hệ thống hiện tại chỉ tập trung vào bài toán định vị và bám điểm lộ trình, chưa có cơ chế chủ động phanh khẩn cấp khi gặp chướng ngại bất ngờ.

Hướng nghiên cứu và phát triển tiếp theo

  1. Nâng cấp công nghệ vi sai RTK-GPS: Tích hợp mô-đun GNSS đa tần số hỗ trợ RTK (như u-blox ZED-F9P) để nâng độ chính xác định vị lên cấp độ centimet ($< 0.05\text{ m}$).
  2. Nâng cấp chuẩn truyền thông CAN-FD (Flexible Data-rate): Mở rộng payload khung CAN phần cứng lên 64 bytes và tăng tốc độ truyền lên tới 2–5 Mbps.
  3. Tích hợp cảm biến thị giác (Visual Odometry / Camera-IMU Fusion): Bổ sung camera đơn sắc kết hợp thuật toán VINS-Mono để xe hoạt động ổn định cả trong nhà lẫn ngoài trời.

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

  • Sinh viên & Học viên Kỹ thuật (Students): Tài liệu học tập thực tế về quy trình thiết kế hệ thống nhúng từ vi mạch đến thuật toán, ứng dụng cụ thể của đại số tuyến tính (EKF) và mạng truyền thông xe hơi.
  • Kỹ sư phát triển hệ thống nhúng ô tô (Embedded Developers): Tham khảo kiến trúc mã nguồn C/C++ tách lớp theo chuẩn OSI và kỹ thuật xử lý phân mảnh gói tin trên bus CAN thực tế.
  • Doanh nghiệp & Startup công nghệ (SMEs): Bộ khung thiết kế tham chiếu (Reference Architecture) chi phí cực thấp để triển khai nhanh các dòng xe robot vận chuyển hoặc thiết bị IoT theo dõi vị trí độ chính xác cao.
  • Nhà nghiên cứu (Researchers): Nền tảng thực nghiệm đã được kiểm chứng để thử nghiệm các thuật toán lọc cao cấp hơn như Unscented Kalman Filter (UKF) hoặc nơ-ron thích nghi.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai lại hệ thống này là gì?

Hệ thống yêu cầu nguồn cấp pin LiPo $7.4\text{V} - 11.1\text{V}$ tối thiểu 25C, máy tính có cài đặt STM32CubeIDE hoặc Keil C (cho STM32) và ESP-IDF hoặc Arduino IDE (cho ESP32). Môi trường thử nghiệm cần có khoảng không gian thoáng ngoài trời để bắt được tối thiểu 6 vệ tinh GNSS.

2. Giới hạn mở rộng số lượng Node trên mạng CAN này là bao nhiêu?

Theo thiết kế trường ID 4-bit ở tầng mạng, hệ thống hỗ trợ tối đa $2^4 = 16$ Node chức năng phân tán độc lập trên cùng một đường truyền vật lý mà không cần sửa đổi cấu trúc gói tin.

3. Tại sao không sử dụng bộ lọc Kalman tiêu chuẩn (Linear KF) thay cho EKF?

Chuyển động của xe tự hành là quá trình phi tuyến thuần túy do sự biến thiên hàm lượng giác ($\sin\theta, \cos\theta$) theo góc lái và hướng di chuyển. Linear KF bắt buộc phải tuyến tính hóa toàn cục, dẫn đến sai số rất lớn khi xe bẻ lái; trong khi EKF tuyến tính hóa cục bộ qua đạo hàm ma trận Jacobian tại từng điểm ước lượng.

4. Hệ thống xử lý thế nào khi xảy ra đứt dây bus CAN?

Transceiver MCP2551 có cơ chế bảo vệ phần cứng. Khi phát hiện bus ở trạng thái lặn vĩnh viễn hoặc lỗi khung kéo dài, các Node STM32 sẽ tự động chuyển sang chế độ Bus-Off Recovery, dừng cấp xung động cơ và kích hoạt đèn LED cảnh báo lỗi phần cứng.

5. Chi phí và thời gian cần thiết để sao chép dự án này?

Tổng chi phí phần cứng linh kiện dao động từ $90 - $110 USD. Thời gian gia công mạch, lắp ráp cơ khí và nạp cấu hình phần mềm hoàn chỉnh ước tính khoảng 2 đến 3 tuần làm việc cho một kỹ sư nắm vững kiến thức nhúng cơ bản.


Kết luận

Đề tài tốt nghiệp "Ứng dụng bộ lọc Kalman mở rộng và xây dựng các tầng cao hơn của mạng điều khiển khu vực cho hệ thống điều khiển xe tự hành dựa trên định vị GPS" đã giải quyết trọn vẹn bài toán xây dựng một hệ thống điều khiển và định vị xe tự hành phân tán với chi phí thấp nhưng đạt độ chính xác và độ tin cậy vượt trội. Thông qua việc phân chia 5 Node chức năng trên nền tảng mạng CAN 4 tầng chuẩn hóa và kết hợp thuật toán EKF tối ưu, nghiên cứu đã giảm sai số vị trí xuống còn 8.5% và đạt tỷ lệ truyền nhận dữ liệu thời gian thực 94.6%.

Đây là minh chứng rõ nét cho khả năng làm chủ công nghệ điều khiển ô tô hiện đại từ cấp độ phần cứng nhúng đến thuật toán xử lý dữ liệu phức tạp, mở ra tiềm năng ứng dụng rộng lớn cho các giải pháp xe tự hành và robot di động thông minh tại Việt Nam.