Giới thiệu dự án

Trong bối cảnh bùng nổ của cuộc Cách mạng Công nghiệp 4.0, các hệ thống tự động hóa và phương tiện tự hành (Autonomous Mobile Robot – AMR, Automated Guided Vehicle – AGV) đang đóng vai trò then chốt trong chuỗi cung ứng thông minh, nhà máy sản xuất, và y tế. Theo các báo cáo nghiên cứu thị trường logistics toàn cầu, việc triển khai robot tự hành giúp tăng năng suất vận chuyển nội khu lên hơn 30% và giảm thiểu 45% rủi ro tai nạn lao động do con người gây ra. Tuy nhiên, các giải pháp AGV truyền thống phụ thuộc lớn vào việc gắn đường ray từ tính hoặc mã QR cố định trên sàn, dẫn đến chi phí tái cấu trúc mặt bằng cao và độ linh hoạt kém khi môi trường thay đổi.

Đồ án tốt nghiệp chuyên ngành Công nghệ Kỹ thuật Cơ Điện tử (Trường Đại học Sư phạm Kỹ thuật TP.HCM) với đề tài "Thiết kế giải thuật điều khiển robot tự hành trong môi trường tĩnh có vật cản" tập trung giải quyết bài toán cốt lõi: Làm thế nào để một robot di động vi sai giá thành tối ưu có thể tự định hướng, tự động phát hiện, né tránh chướng ngại vật trong không gian 2D chưa biết trước và tái tạo trực quan bản đồ môi trường thời gian thực lên giao diện máy tính.

+-------------------------------------------------------------------------+
|                  HỆ THỐNG ROBOT TỰ HÀNH VI SAI (2WD)                     |
|                                                                         |
|  [Khối Cảm Biến]         [Khối Xử Lý Trung Tâm]        [Cơ Cấu Chấp Hành]|
|  - 3x SRF05 (Siêu âm) --> [ Arduino Mega 2560  ] ----> [ L298 Driver   ] |
|  - 1x HMC5883L (La bàn)   [ - Thuật toán Né Cản]       [ - 2x DC Servo ] |
|  - 2x Optical Encoder     [ - Bộ điều khiển PID]       [   Giảm tốc    ] |
|                           [ - Dead-Reckoning   ]                         |
|                                  | (UART)                               |
|                                  v                                      |
|                           [ Module HC-05 ]                              |
|                                  | (Bluetooth 2.4GHz)                   |
|                                  v                                      |
|                     [ PC: Visual Studio C# GUI ]                        |
|                     - Giám sát tọa độ (x, y, theta)                     |
|                     - Vẽ biên dạng vật cản 2D                           |
+-------------------------------------------------------------------------+

Mục tiêu đề tài

  1. Thiết kế và chế tạo phần cứng: Xây dựng khung robot di động vi sai (Differential Drive) bằng vật liệu mica, tích hợp 2 động cơ DC Servo kèm đĩa quang Encoder, mạch công suất L298 và vi điều khiển ATmega2560.
  2. Xây dựng giải thuật điều khiển động cơ: Ứng dụng bộ điều khiển PID (Proportional-Integral-Derivative) để ổn định vận tốc hai bánh chủ động, đảm bảo đáp ứng vận tốc đặt với độ vọt lố dưới 5%.
  3. Phát triển giải thuật phát hiện và né tránh vật cản: Tích hợp mảng 3 cảm biến siêu âm SRF05 kết hợp cảm biến từ trường/la bàn số HMC5883L để quét không gian, tính toán vector hướng di chuyển an toàn trong môi trường tĩnh.
  4. Xây dựng hệ thống truyền thông và hiển thị 2D: Thiết kế giao thức truyền nhận dữ liệu không dây qua Bluetooth HC-05 lên phần mềm máy tính (Microsoft Visual Studio C#), vẽ lại quỹ đạo di chuyển và biên dạng chướng ngại vật.
  5. Thực nghiệm và đánh giá: Đo kiểm sai số định vị tương đối (Dead-reckoning) và độ chính xác của bản đồ tái tạo trong các kịch bản phòng kín.

Phạm vi và giới hạn đề tài

  • Môi trường hoạt động: Không gian tĩnh trong nhà (indoor), mặt sàn phẳng, chướng ngại vật có hình dạng hình học xác định, đứng yên trong suốt chu trình di chuyển.
  • Ràng buộc phần cứng: Robot sử dụng cơ chế vi sai 2 bánh chủ động và bánh dẫn hướng tự do (Caster), chịu ràng buộc không holonomic (Nonholonomic constraint).

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

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

Quá trình điều hướng robot tự hành (Autonomous Navigation) trong môi trường có vật cản đã được tiếp cận qua nhiều giải thuật kinh điển. Bảng so sánh dưới đây phân tích ưu và nhược điểm của các phương pháp phổ biến:

Phương pháp điều hướng Ưu điểm Nhược điểm Đánh giá độ phù hợp với đề tài
Bám tường (Wall-Following / Fuzzy Logic) Tính toán nhẹ, phản ứng nhanh theo thời gian thực, không cần bản đồ toàn cục trước. Dễ rơi vào bẫy vòng lặp tại các góc cụt; quỹ đạo dài, không tối ưu đường đi. Phù hợp để làm tầng phản xạ cục bộ khi tiếp cận sát mép vật cản.
Trường thế nhân tạo (Potential Field Method - PFM) Mô hình toán học rõ ràng, robot chuyển động mượt mà dưới tác động của lực hút mục tiêu $F_t$ và lực đẩy vật cản $F_r$. Dễ rơi vào điểm cực tiểu địa phương (Local Minima); dao động mạnh trong hành lang hẹp; không qua được khe giữa hai vật cản gần nhau. Khối lượng tính toán trung bình, cần thuật toán phụ trợ để thoát bẫy cực tiểu.
Lưới xác suất (Certainty Grid / Histogram Grid) Xử lý tốt dữ liệu nhiễu từ cảm biến siêu âm thông qua mô hình xác suất của từng cell. Yêu cầu bộ nhớ RAM lớn để lưu mảng 2D; độ trễ cập nhật tăng khi kích thước phòng mở rộng. Khó triển khai trực tiếp toàn bộ trên vi điều khiển 8-bit/16MHz (ATmega2560).
Dòng quang học (Optical Flow) Cung cấp thông tin thị giác phong phú, nhận diện vật thể chi tiết bằng thuật toán Shi-Tomasi và Lucas-Kanade. Yêu cầu camera và chip xử lý đồ họa mạnh (GPU/ARM SoC); nhạy cảm với điều kiện ánh sáng. Vượt quá giới hạn chi phí và năng lực tính toán của vi điều khiển nhúng giá rẻ.

Yêu cầu kỹ thuật theo mô hình MoSCoW:

  • Must have: Bộ điều khiển PID vận tốc động cơ; giải thuật đọc khoảng cách TOF từ 3 cảm biến SRF05; cơ chế tránh va chạm khi khoảng cách $< 30\text{ cm}$; truyền telemetry qua Bluetooth UART.
  • Should have: Giải thuật vẽ biên dạng vật cản theo pixel trên giao diện C# GUI; tự động bù góc xoay bằng la bàn số HMC5883L.
  • Could have: Thuật toán dẫn hướng thích nghi (Adaptive Navigation) tối ưu hóa hàm thế $E(t) = \frac{1}{2}[\theta(t) - \theta^*(t)]^2$.
  • Won't have (in this phase): Tránh vật cản động di chuyển với vận tốc cao; cảm biến LiDAR 3D; thuật toán SLAM phức tạp.

Thiết kế hệ thống

Kiến trúc công nghệ (Technology Stack)

  • Bộ vi điều khiển trung tâm: Arduino Mega 2560 R3 (Vi xử lý ATmega2560 @ 16MHz, 256KB Flash, 8KB SRAM, 54 chân Digital I/O, 4 bộ UART phần cứng).
  • Cảm biến khoảng cách: 3x Cảm biến siêu âm SRF05 (Tần số phát 40kHz, dải đo $2\text{cm} - 400\text{cm}$, độ phân giải $0.3\text{cm}$, góc mở hiệu dụng $15^\circ - 30^\circ$).
  • Cảm biến định hướng: Cảm biến từ trường 3 trục HMC5883L (Giao tiếp $I^2C$, độ chính xác góc hướng $1^\circ - 2^\circ$).
  • Mạch điều khiển công suất: Driver cầu H kép L298N (Điện áp hoạt động $5\text{V} - 35\text{V}$, dòng đỉnh $2\text{A}$ mỗi kênh).
  • Cơ cấu chấp hành: 2 Động cơ DC Servo kèm hộp giảm tốc và đĩa quang Encoder 2 kênh pha A-B (Quadrature Encoder) độ phân giải cao.
  • Phần mềm máy tính (Host Application): Microsoft Visual Studio 2015 Community, ngôn ngữ C# (.NET Framework 4.5), thư viện System.IO.PortsSystem.Drawing.
           +-------------------------------------------------------------+
           |                SƠ ĐỒ KHỐI PHẦN CỨNG ROBOT                   |
           +-------------------------------------------------------------+
                                          |
    +-----------------------+             |             +-----------------------+
    | Cảm biến SRF05 (Trái) |             |             | Cảm biến SRF05 (Phải) |
    +-----------------------+             |             +-----------------------+
                |                         |                         |
                +-----------> [ ARDUINO MEGA 2560 ] <---------------+
                                     ^         ^
    +-----------------------+        |         |        +-----------------------+
    | Cảm biến SRF05 (Giữa) |--------+         +--------| La bàn số HMC5883L    |
    +-----------------------+                           +-----------------------+
                                     |         |
                                     v         v
    +---------------------------------------------------------------------------+
    |                             MẠCH CẦU H L298                               |
    +---------------------------------------------------------------------------+
                     |                                           |
                     v                                           v
    +----------------------------------+       +----------------------------------+
    |  Động cơ DC Trái + Encoder A/B   |       |  Động cơ DC Phải + Encoder A/B   |
    +----------------------------------+       +----------------------------------+

Phương pháp nghiên cứu và phát triển

Dự án áp dụng mô hình phát triển hệ thống nhúng lặp (Iterative Embedded System Development) với các giai đoạn:

  1. Giai đoạn 1 (Tuần 1 - 4): Xây dựng mô hình động học vi sai trên SolidWorks 2015, tính toán mô-men xoắn chọn động cơ, thi công khung gầm cơ khí mica.
  2. Giai đoạn 2 (Tuần 5 - 8): Thiết kế mạch nguồn, đấu nối dây tín hiệu, lập trình tầng HAL (Hardware Abstraction Layer) trên Arduino: Đọc Encoder qua ngắt ngoài (External Interrupts), giao tiếp I2C la bàn HMC5883L và đo xung echo SRF05.
  3. Giai đoạn 3 (Tuần 9 - 12): Thiết kế bộ điều khiển PID vận tốc động cơ và thuật toán định vị tương đối Dead-reckoning; lập trình giải thuật tránh vật cản.
  4. Giai đoạn 4 (Tuần 13 - 16): Xây dựng giao diện Visual Studio C#, cấu hình buffer truyền nhận Bluetooth UART, thực nghiệm hiệu chỉnh giải thuật trong môi trường phòng thực tế.

Triển khai kỹ thuật và kết quả thực nghiệm

Mô hình động học robot vi sai

Robot chuyển động trên mặt phẳng $Oxy$, vị trí của robot tại điểm giữa của trục hai bánh xe sau được xác định bởi vector trạng thái: $$q = [x_c, y_c, \theta]^T$$

Do bánh xe lăn không trượt, robot chịu ràng buộc Nonholonomic: $$\dot{x}\sin\theta - \dot{y}\cos\theta = 0$$

Phương trình động học chuyển động thẳng và quay: $$\begin{cases} \dot{x} = v \cos\theta \ \dot{y} = v \sin\theta \ \dot{\theta} = \omega \end{cases}$$

Trong đó, $v$ và $\omega$ lần lượt là vận tốc tuyến tính và vận tốc góc của robot. Mối liên hệ giữa vận tốc của bánh trái ($v_L$) và bánh phải ($v_R$) với khoảng cách giữa hai bánh xe $2b$: $$v = \frac{v_R + v_L}{2}, \quad \omega = \frac{v_R - v_L}{2b}$$

                          Y ^
                            |           / Phương di chuyển robot
                            |          / 
                            |   (xc,yc)-------> v (Vận tốc dài)
                            |       / \
                            |      /   \ góc theta
                            |     /     \
                            +----+-------+-----> X
                            |    |   2b  |    |
                           [Bánh L]     [Bánh R]

Để đơn giản hóa điều khiển chấp hành, phương pháp "Quay trước – Tịnh tiến sau" (Turn-then-Advance) được áp dụng: Robot đứng tại chỗ quay một góc $\Delta\theta$ bằng cách cho hai bánh quay ngược chiều cùng tốc độ ($S_L = -b\Delta\theta, S_R = b\Delta\theta$), sau đó tịnh tiến thẳng một đoạn $d$ ($S_L = S_R = d$). Tọa độ mới trong hệ quy chiếu toàn cục được cập nhật qua ma trận chuyển đổi:

$$\begin{bmatrix} x_{i+1} \ y_{i+1} \end{bmatrix} = \begin{bmatrix} \cos\theta_i & -\sin\theta_i \ \sin\theta_i & \cos\theta_i \end{bmatrix} \begin{bmatrix} \Delta x_i \ \Delta y_i \end{bmatrix} + \begin{bmatrix} x_i \ y_i \end{bmatrix}$$

Thuật toán điều khiển PID vận tốc động cơ

Bộ điều khiển PID liên tục tính toán sai số $e(t) = v_{setpoint}(t) - v_{feedback}(t)$ từ số xung Encoder đọc về qua ngắt ngoài timer để điều chỉnh độ rộng xung PWM cấp cho mạch L298:

$$u(t) = K_p e(t) + K_i \int_0^t e(\tau)d\tau + K_d \frac{de(t)}{dt}$$

// Trích xuất cấu trúc thuật toán PID điều khiển vận tốc bánh xe trên Arduino
volatile long leftEncoderTicks = 0;
double setpoint_speed = 30.0; // cm/s
double current_speed = 0.0;
double error = 0, last_error = 0, integral = 0, derivative = 0;
double Kp = 2.45, Ki = 0.15, Kd = 0.05;
unsigned long lastTime;

void setup() {
  attachInterrupt(digitalPinToInterrupt(2), countLeftEncoder, RISING);
  lastTime = millis();
}

void loop() {
  unsigned long now = millis();
  double timeChange = (double)(now - lastTime);
  if (timeChange >= 50) { // Chu kỳ lấy mẫu 50ms (20Hz)
    // Tính vận tốc thực tế dựa trên số xung encoder đọc được
    current_speed = (leftEncoderTicks * WHEEL_CIRCUMFERENCE) / (TICKS_PER_REV * (timeChange / 1000.0));
    leftEncoderTicks = 0;
    
    error = setpoint_speed - current_speed;
    integral += (error * (timeChange / 1000.0));
    derivative = (error - last_error) / (timeChange / 1000.0);
    
    double output = Kp * error + Ki * integral + Kd * derivative;
    output = constrain(output, 0, 255);
    
    analogWrite(PWM_PIN_LEFT, (int)output);
    last_error = error;
    lastTime = now;
  }
}

void countLeftEncoder() {
  leftEncoderTicks++;
}

Giải thuật né tránh vật cản và tái tạo biên dạng 2D

Robot bố trí 3 cảm biến siêu âm: $S_{center}$ (quét hướng thẳng), $S_{left}$ (hướng lệch trái $45^\circ$), $S_{right}$ (hướng lệch phải $45^\circ$).

         \ S_left (45 deg)     | S_center (0 deg)     / S_right (45 deg)
          \                    |                    /
           \                   |                   /
            \                  |                  /
             +-----------------+-----------------+
             |             ROBOT CHASSIS         |
  1. Giai đoạn dò tìm: Robot tịnh tiến theo hướng thẳng. $S_{center}$ liên tục đo khoảng cách $d_{center}$.
  2. Giai đoạn kích hoạt né cản: Khi $d_{center} \le d_{safe}$ ($30\text{ cm}$):
    • Robot dừng tịnh tiến.
    • So sánh khoảng cách bên trái ($d_{left}$) và bên phải ($d_{right}$).
    • Nếu $d_{left} > d_{right}$, robot thực hiện quay trái góc $90^\circ$ tại chỗ; ngược lại quay phải $90^\circ$.
  3. Giai đoạn bám biên dạng (Contouring) và vẽ bản đồ:
    • Khi di chuyển dọc theo mặt phẳng trước của vật cản, cảm biến bên hông (ví dụ $S_{right}$) liên tục đo khoảng cách vuông góc $d_{wall}$ đến mép vật thể.
    • Dữ liệu tọa độ điểm biên vật cản được tính toán: $$x_{obs} = x_{robot} + d_{wall} \cdot \cos\left(\theta_{robot} \pm \frac{\pi}{2}\right)$$ $$y_{obs} = y_{robot} + d_{wall} \cdot \sin\left(\theta_{robot} \pm \frac{\pi}{2}\right)$$
    • Gói tin nhị phân định dạng $OBS,x_obs,y_obs,theta# được gửi qua module Bluetooth HC-05 lên phần mềm C# GUI để vẽ các điểm ảnh (pixel) biểu diễn vật cản và vệt đường đi của robot.
// Xử lý gói tin và vẽ điểm 2D trên C# Visual Studio Windows Forms
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    string packet = serialPort.ReadLine();
    if (packet.StartsWith("$OBS") && packet.EndsWith("#"))
    {
        string[] data = packet.Replace("$OBS,", "").Replace("#", "").Split(',');
        float xObs = float.Parse(data[0]);
        float yObs = float.Parse(data[1]);
        
        // Chuyển đổi tọa độ thực sang tọa độ Pixel hiển thị trên PictureBox
        int pixelX = (int)(originX + xObs * SCALE_FACTOR);
        int pixelY = (int)(originY - yObs * SCALE_FACTOR);
        
        using (Graphics g = pictureBoxMap.CreateGraphics())
        {
            // Vẽ điểm vật cản màu đỏ
            g.FillRectangle(Brushes.Red, pixelX, pixelY, 3, 3);
        }
    }
}

Kết quả đo kiểm và đánh giá hiệu năng

+-------------------------------------------------------------------------+
|                  KẾT QUẢ THỰC NGHIỆM TRÁNH VẬT CẢN                      |
|                                                                         |
|  Y (cm)                                                                 |
|   120 ^                                                                 |
|       |                     +-----------------+ (Vật cản tĩnh)          |
|   100 |                     |  x_obs, y_obs   |                         |
|       |                     +-----------------+                         |
|    80 |                     ^  ^  ^ (Quét siêu âm d_wall)               |
|       |         (Né cản)   /  |  |                                      |
|    60 |             +-----+  |  |  (Bám biên dạng)                      |
|       |            /         |  |                                       |
|    40 |           /                                                     |
|       |          | (Robot di chuyển)                                    |
|    20 |          ^                                                      |
|       |          |                                                      |
|     0 +----------+---------------------------------------> X (cm)       |
|       0          20         40         60         80                    |
+-------------------------------------------------------------------------+

Hệ thống được thử nghiệm trong phòng kín kích thước $4\text{m} \times 4\text{m}$ với 2 trường hợp vật cản đặt bên trái và bên phải đường đi:

Tham số kiểm thử Giá trị thiết kế mục tiêu Giá trị đo được thực tế Sai số / Đánh giá
Dải khoảng cách phát hiện vật cản $2 - 400\text{ cm}$ $3 - 350\text{ cm}$ Đáp ứng $100%$ yêu cầu an toàn
Vận tốc tuyến tính trung bình ($v$) $0.20\text{ m/s}$ $0.18\text{ m/s}$ Đạt $90%$ thiết kế (giảm để tăng độ ổn định cảm biến)
Thời gian đáp ứng phát hiện né cản $< 100\text{ ms}$ $65\text{ ms}$ Vượt tiêu chuẩn đề ra ($35%$ nhanh hơn)
Sai số góc xoay sau khi tránh cản $\le \pm 2^\circ$ $\pm 3.2^\circ$ Được bù góc hiệu quả nhờ la bàn HMC5883L
Tỷ lệ nhận diện và tránh cản thành công $95%$ $93.3%$ (28/30 lần thử nghiệm) 2 lần lỗi do hiện tượng phản xạ góc xiên
Tốc độ truyền dữ liệu Bluetooth UART $9600\text{ bps}$ $9600\text{ bps}$ Không phát sinh rớt gói tin trong bán kính $10\text{m}$

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

  1. Giải pháp định vị kết hợp triệt tiêu sai số trôi (Drift Compensation): Khắc phục nhược điểm kinh điển của phương pháp Dead-reckoning (sai số tích lũy tăng dần theo thời gian chuyển động) bằng cách kết hợp hàm đọc góc tức thời từ la bàn số HMC5883L, giúp duy trì hướng di chuyển chuẩn xác sau các bước rẽ $90^\circ$.
  2. Thuật toán tái tạo biên dạng vật cản thời gian thực chi phí siêu thấp: Không cần các module cảm biến đắt tiền như Laser Scanner hay LiDAR, hệ thống chỉ sử dụng 3 cảm biến siêu âm SRF05 phối hợp với thuật toán tọa độ hóa hình học để dựng lại biên dạng 2D trực tiếp trên phần mềm máy tính với độ mịn điểm ảnh đạt $3\text{mm}$.
  3. Mô hình kiến trúc điều khiển lai ghép mở: Phân tách rõ ràng giữa tầng chấp hành thời gian thực (Real-time Embedded Control trên Arduino) và tầng giám sát/hiển thị cấp cao (Supervisory UI trên C# .NET), tạo điều kiện nâng cấp mở rộng các giải thuật lập lộ trình toàn cục.

Ứng dụng thực tế và tính khả thi triển khai

+-------------------------------------------------------------------------+
|                  LỘ TRÌNH PHÁT TRIỂN VÀ TRIỂN KHAI                      |
|                                                                         |
|  [ Giai đoạn 1: Q1 ] -> [ Giai đoạn 2: Q2 ] -> [ Giai đoạn 3: Q3-Q4 ]   |
|  - Hoàn thiện mô hình  - Tích hợp 2D LiDAR    - Triển khai Pilot AGV    |
|    máy trạm C# GUI       RPLiDAR A1 (SLAM)      tại xưởng may công nghiệp|
|  - Tối ưu giải thuật   - Nâng cấp vi xử lý    - Tải trọng: 50kg         |
|    PID động cơ vi sai    lên STM32 / ROS2       - ROI hoàn vốn: 10 tháng|
+-------------------------------------------------------------------------+

Kịch bản ứng dụng trong thực tiễn

  • Xe tự hành chở hàng trong nhà máy (Smart Factory AGV): Vận chuyển linh kiện giữa các dây chuyền lắp ráp trong môi trường tĩnh đã được quy hoạch vị trí máy móc cố định.
  • Robot phục vụ và khử khuẩn y tế: Hoạt động tự động trong hành lang bệnh viện, khu vực cách ly để chuyên chở thuốc men hoặc phun dung dịch khử khuẩn mà không cần người điều khiển trực tiếp.
  • Robot làm sạch đường ống (AIRDUCT Robot): Khảo sát môi trường kín, hẹp và vẽ lại bản đồ hình học không gian bên trong đường ống dẫn khí.

Bảng phân tích chi phí phần cứng (BOM) và hiệu quả kinh tế

Hạng mục linh kiện Số lượng Đơn giá ước tính (VND) Tổng chi phí (VND)
Vi điều khiển Arduino Mega 2560 R3 01 250,000 250,000
Động cơ DC Servo kèm Encoder + Hộp giảm tốc 02 350,000 700,000
Cảm biến siêu âm SRF05 03 70,000 210,000
Cảm biến la bàn số HMC5883L 01 80,000 80,000
Mạch điều khiển động cơ L298N 01 65,000 65,000
Module truyền thông không dây Bluetooth HC-05 01 95,000 95,000
Khung mica, bánh xe vi sai, bánh caster, ắc quy 12V 01 bộ 400,000 400,000
Tổng chi phí sản xuất phần cứng 1,800,000 VND

Hiệu quả đầu tư (ROI): So với một nền tảng robot nghiên cứu nhập khẩu có tính năng tương đương (như Robot Khepera hoặc Pioneer P3-DX có giá từ 30 – 80 triệu VND), mô hình tự phát triển tiết kiệm hơn 90% chi phí, thời gian thu hồi vốn khi ứng dụng tại các xưởng gia công nhỏ ước tính dưới 6 tháng.


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

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

  • Độ mượt chuyển động: Robot sử dụng phương pháp "Quay trước – Tịnh tiến sau", khiến robot phải dừng lại để đổi hướng, chuyển động còn rời rạc, chưa đạt được tính liên tục song phẳng (Simultaneous Advance and Turn).
  • Hạn chế vật lý của cảm biến siêu âm:
    • Hiện tượng đọc chéo (Cross-talk): Sóng phát từ cảm biến này có thể phản xạ và lọt vào đầu thu của cảm biến khác khi bố trí quá gần.
    • Hiện tượng phản xạ xiên (Specular Reflection): Khi bề mặt vật cản nghiêng một góc $> 30^\circ$ so với trục cảm biến, chùm sóng siêu âm bị dội ra xa, đầu thu không nhận được tín hiệu hồi tiếp, dẫn đến bỏ sót vật cản.
  • Môi trường: Chưa thích ứng được khi có người đi lại hoặc vật cản chuyển động cắt ngang quỹ đạo (Dynamic Obstacles).

Hướng nâng cấp và nghiên cứu tiếp theo

  1. Nâng cấp giải thuật điều khiển liên tục: Ứng dụng giải thuật Cửa sổ Động (Dynamic Window Approach – DWA) hoặc Bộ điều khiển bám quỹ đạo dựa trên mô hình phi tuyến (Nonlinear Model Predictive Control) để robot vừa tịnh tiến vừa bẻ lái trơn tru.
  2. Tích hợp cảm biến LiDAR và ROS: Bổ sung cảm biến quét laser 2D (RPLiDAR A1/A2) kết hợp hệ điều hành Robot (ROS – Robot Operating System) và thuật toán Gmapping / Cartographer để xây dựng bản đồ xác suất OccGrid đạt độ chuẩn xác cấp milimet.
  3. Mở rộng thuật toán thích nghi: Triển khai giải thuật Dẫn hướng thích nghi (Adaptive Navigation) dựa trên phương pháp suy giảm Gradient nhằm tối thiểu hóa hàm năng lượng quỹ đạo trong không gian đa vật thể phức tạp.

Đối tượng hưởng lợi từ đề tài

  • Sinh viên khối ngành Kỹ thuật (Cơ điện tử, Tự động hóa, Khoa học Máy tính): Cung cấp tài liệu tham khảo hoàn chỉnh từ mô hình toán học Nonholonomic, mã nguồn điều khiển PID nhúng C++ trên Arduino, đến kỹ thuật lập trình giao diện C# WinForms vẽ đồ họa 2D thời gian thực.
  • Kỹ sư và nhà phát triển hệ thống nhúng (Embedded Developers): Nắm vững quy trình xử lý giao tiếp đa cảm biến (UART, I2C, Input Capture Interrupts) và phương pháp lọc nhiễu tín hiệu siêu âm trong các dự án IoT/Robotics.
  • Doanh nghiệp vừa và nhỏ (SMEs): Tiếp cận mô hình tham chiếu giải pháp AGV/AMR giá rẻ, dễ dàng tùy biến cơ cấu cơ khí và nâng cấp phần mềm điều khiển phục vụ bài toán nội vận chuyển tự động.
  • Nhà nghiên cứu (Researchers): Dữ liệu thực nghiệm về sai số Dead-reckoning và phân tích giới hạn của các phương pháp định vị tương đối phục vụ cho các nghiên cứu dung hợp cảm biến (Sensor Fusion via EKF - Extended Kalman Filter).

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

1. Cấu hình phần cứng tối thiểu để triển khai phần mềm giám sát trên máy tính là gì?

Phần mềm C# GUI chạy mượt mà trên hệ điều hành Windows 7/8/10/11, yêu cầu tối thiểu chip Intel Core i3 (hoặc tương đương), 2GB RAM, màn hình độ phân giải từ $1366 \times 768$, và máy tính tích hợp sẵn Bluetooth 2.0+ hoặc sử dụng USB Dongle Bluetooth kết nối cổng COM ảo (Virtual COM Port).

2. Làm thế nào để giải quyết triệt để hiện tượng đọc chéo (Cross-talk) giữa 3 cảm biến siêu âm?

Trong mã nguồn firmware Arduino, 3 cảm biến siêu âm SRF05 được kích hoạt theo cơ chế chia sẻ thời gian (Time-Multiplexing / Round-Robin): Cảm biến 1 phát xung $\rightarrow$ chờ nhận echo hoặc timeout $30\text{ms} \rightarrow$ nghỉ $10\text{ms} \rightarrow$ Cảm biến 2 mới phát xung. Phương pháp này loại bỏ hoàn toàn khả năng xung siêu âm từ cảm biến này gây nhiễu cảm biến kia.

3. Tại sao robot bị trôi tọa độ (Dead-reckoning drift) sau một thời gian chạy dài và cách khắc phục?

Hiện tượng trôi vị trí xuất phát từ sự trượt vi mô giữa bánh xe và sàn nhà, cùng sai số tích lũy khi lấy tích phân vận tốc góc $\theta = \int \omega dt$. Hệ thống khắc phục bằng cách đọc trực tiếp góc định hướng tuyệt đối từ cảm biến từ trường 3 trục HMC5883L để reset giá trị góc $\theta$ của Encoder định kỳ sau mỗi chu kỳ quay $90^\circ$.

4. Hệ thống có thể tích hợp vào mạng công nghiệp hoặc hệ sinh thái IoT không?

Hoàn toàn khả thi. Module Bluetooth HC-05 có thể được thay thế bằng module Wi-Fi ESP8266/ESP32 để truyền dữ liệu trạng thái qua giao thức MQTT/HTTP RESTful API lên máy chủ đám mây hoặc hệ thống điều hành sản xuất (MES/SCADA).

5. Chi phí bảo trì và độ bền của cơ cấu cơ điện tử này ra sao?

Các thành phần linh kiện (động cơ DC Servo, driver L298, cảm biến thể rắn) có độ bền cơ học cao, tuổi thọ hoạt động liên tục trên 2,000 giờ. Chi phí bảo trì định kỳ hàng năm chủ yếu là kiểm tra độ mòn của lốp cao su bánh xe và thay thế ắc quy với chi phí dưới 200,000 VND/năm.


Kết luận

Đồ án "Thiết kế giải thuật điều khiển robot tự hành trong môi trường tĩnh có vật cản" đã giải quyết thành công bài toán tích hợp liên ngành Cơ khí – Điện tử – Lập trình điều khiển. Từ việc tính toán mô hình động học vi sai, thiết kế mạch phần cứng, lập trình bộ điều khiển PID vận tốc trên vi điều khiển Arduino Mega 2560, đến xây dựng giải thuật phát hiện, né tránh vật cản và tái tạo biên dạng 2D trực quan trên nền tảng máy tính.

Kết quả thực nghiệm chứng minh tính đúng đắn của mô hình lý thuyết với tỷ lệ tránh vật cản thành công đạt $93.3%$, thời gian đáp ứng thời gian thực nhanh ($65\text{ms}$) và chi phí phần cứng tối ưu dưới $2$ triệu đồng. Đề tài mở ra nền tảng vững chắc để tiếp tục mở rộng tích hợp hệ điều hành robot ROS, cảm biến LiDAR và các thuật toán SLAM tiên tiến trong các thế hệ robot tự hành công nghiệp tương lai.