Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và thương mại điện tử đã tạo ra áp lực khổng lồ lên hạ tầng logistics toàn cầu. Theo báo cáo của Bộ Công Thương Việt Nam, tỷ lệ người tiêu dùng tham gia mua sắm trực tuyến đã tăng vọt từ 35% (năm 2019) lên 53% (năm 2023), thúc đẩy nhu cầu tự động hóa vận chuyển nội kho nhằm giải quyết bài toán chi phí nhân công và tối ưu hóa thời gian hoàn tất đơn hàng (order fulfillment).

Tuy nhiên, việc triển khai các đội xe tự hành (AGV - Automated Guided Vehicles) trong môi trường nhà kho thông minh mật độ cao đang gặp phải các nút thắt kỹ thuật nghiêm trọng:

  • Tắc nghẽn và xung đột: Tình trạng nghẽn nút cổ chai (bottleneck), xung đột đỉnh (vertex conflict), xung đột cạnh (edge conflict) và xung đột hoán vị (swapping conflict) khi nhiều robot cùng hoạt động trong không gian hẹp.
  • Hạn chế về tính linh hoạt: Các công nghệ dẫn đường truyền thống bằng đường line từ hoặc điểm từ tính tốn kém chi phí lắp đặt, khó tái cấu trúc layout nhà xưởng.
  • Sai số tích lũy: Khả năng bám quỹ đạo và định vị thời gian thực của xe tự hành vi sai dễ bị trượt bánh, mất ổn định vận tốc khi thay đổi tải trọng.

Đồ án tốt nghiệp "Nghiên cứu thuật toán tối ưu hóa quỹ đạo di chuyển cho robot vận chuyển hàng hóa" do nhóm sinh viê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 (HCMUTE) thực hiện dưới sự hướng dẫn của ThS. Lê Thanh Tùng, tập trung giải quyết bài toán tìm đường đi cho đa đối tượng (MAPF - Multi-Agent PathFinding) kết hợp với hệ thống thị giác máy tính (Computer Vision) và điều khiển vòng kín thời gian thực.

flowchart TD
    A[Hệ thống Server Quản trị / GUI Tkinter] -->|Quy hoạch lộ trình MAPF - CBS| B[Raspberry Pi 4B - Xử lý ảnh & Điều hướng]
    B -->|UART Protocol / Mã lệnh vận tốc| C[STM32F407 - Điều khiển kín PI / PWM]
    B -->|Camera OV5647| D[Xử lý làn đường HSV & Quét mã QR]
    C -->|Driver BTS7960| E[Động cơ DC Servo Planet 24V 60W]
    F[STM32F103 + Cảm biến siêu âm HC-SR04] -->|Ngắt an toàn tiền va chạm| C

Mục tiêu nghiên cứu cụ thể

  1. Thiết kế cơ khí chính xác: Chế tạo khung xe di động vi sai (Differential Drive) tải trọng danh định 30 kg, vận tốc tối đa 1 m/s, truyền động qua bộ đai răng GT2 chống trượt.
  2. Xây dựng kiến trúc điều khiển nhúng 2 tầng: Kết hợp vi xử lý Raspberry Pi 4 Model B (Cortex-A72) cho xử lý ảnh/điều hướng cấp cao và STM32F407 (Cortex-M4) cho điều khiển vận tốc thời gian thực.
  3. Phát triển hệ thống thị giác máy tính: Ứng dụng không gian màu HSV, biến đổi phối cảnh Bird-eye View và nhận diện mã QR (trạm đích) nhằm dẫn hướng chính xác mà không cần dải từ phức tạp.
  4. Tối ưu hóa bài toán MAPF: Triển khai và thực nghiệm thuật toán Tìm kiếm dựa trên sự xung đột (Conflict-Based Search - CBS) triệt tiêu hoàn toàn các dạng xung đột lộ trình đa tác nhân.
  5. Xây dựng giao diện giám sát (GUI): Thiết kế phần mềm trực quan hóa trạng thái vị trí, trạm dừng và quỹ đạo của từng robot theo thời gian thực.

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

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

Phương pháp dẫn đường Chi phí triển khai Độ linh hoạt khi đổi Layout Độ chính xác định vị Yêu cầu bảo trì hạ tầng
Line từ / Điểm từ Trung bình - Cao Thấp (phải dán/chôn lại từ) Cao (±2 mm) Cao (dễ bong tróc, mòn)
SLAM 2D LiDAR Rất cao Rất cao (lập bản đồ động) Cao (±5 mm) Thấp
Thị giác Máy tính + QR (Đề tài) Thấp - Tối ưu Cao (in vạch/mã QR đơn giản) Cao (±3 mm) Thấp

Ma trận yêu cầu hệ thống (MoSCoW Prioritization)

  • Must-have: Khung xe chịu tải 30 kg; Thuật toán CBS giải quyết xung đột không va chạm; Bám làn quang sai số < 5 mm; Cảm biến ngắt dừng an toàn tiền va chạm < 20 cm.
  • Should-have: Bộ điều khiển PI điều chế xung PWM đáp ứng vận tốc < 0.2 s; Giao diện GUI Tkinter hiển thị vị trí thời gian thực.
  • Could-have: Nhận diện ngã tư thông minh tự động rẽ trái/phải theo file dữ liệu đầu ra output.txt.
  • Won't-have (giai đoạn này): Tích hợp cánh tay robot gắp hàng tự động trên thân xe.

Thiết kế hệ thống

Cấu trúc phần cứng và Stack công nghệ

  • Bộ xử lý trung tâm (High-Level Controller): Single Board Computer Raspberry Pi 4 Model B (Broadcom BCM2711, Quad-core Cortex-A72 64-bit @ 1.5 GHz, 4GB LPDDR4 RAM, OS: Raspberry Pi OS Linux Kernel 5.15).
  • Bộ điều khiển vận động (Low-Level Real-Time Controller): STM32F407VGT6 (ARM Cortex-M4 32-bit RISC core @ 168 MHz, 1MB Flash, 192KB SRAM, Hardware FPU).
  • Khối cảm biến tiền va chạm: STM32F103C8T6 (ARM Cortex-M3 @ 72 MHz) giao tiếp cảm biến siêu âm HC-SR04 (khoảng cách đo 2 cm - 400 cm, tần số xung 40 kHz).
  • Cảm biến hình ảnh: Camera Module OV5647 5MP (CSI-2 bus, phân giải 1080p@30fps, góc nhìn FOV 65°).
  • Cơ cấu chấp hành & Driver: 02 Động cơ DC Planet 24V 60W, tỉ số truyền hộp số hành tinh 19.2:1, tốc độ định mức 320 RPM, tích hợp Optical Incremental Encoder 13 xung/vòng (độ phân giải sau hộp số $13 \times 19.2 \times 4 = 998.4$ xung/vòng); 02 Mạch cầu H BTS7960 43A High-power H-bridge Driver.
  • Nguồn cung cấp: Bộ ắc quy 24VDC 5Ah kết hợp Module DC-DC Buck Converter XL4016 hiệu suất 96% hạ áp xuống 5V/8A nuôi hệ thống điều khiển.
+-----------------------------------------------------------------------------------+
|                              KIẾN TRÚC ĐIỀU KHIỂN HỆ THỐNG                        |
+-----------------------------------------------------------------------------------+
|  [GUI Tkinter / Path Planner] ---> Sinh tập xung đột CT & Lập đường đi CBS       |
|                                                  |                                |
|                                       (Dữ liệu lộ trình)                          |
|                                                  v                                |
|  [Raspberry Pi 4B] <================== (CSI Bus: OV5647 Camera)                  |
|    - HSV Lane Segmentation / Bird-eye Transform / QR Decoder                      |
|    - Tính toán góc lệch e_theta và độ lệch tâm e_d                                |
|                                                  | (UART Protocol 115200 bps)     |
|                                                  v                                |
|  [STM32F407 Controller] <============ (Cảm biến tiền va chạm STM32F1 / HC-SR04)  |
|    - Closed-loop PI Controller (T_sample = 10ms)                                  |
|    - PWM Output (Timer 1, 20 kHz)                                                 |
|                                                  |                                |
|                                                  v                                |
|  [Dual BTS7960 Driver] ===> [02 Động cơ DC Planet 24V 60W + Encoder phản hồi]   |
+-----------------------------------------------------------------------------------+

Thiết kế cơ khí và tính toán động học

Cơ cấu di chuyển là dạng xe vi sai 2 bánh chủ động đặt giữa tâm và 4 bánh xe đa hướng đặt tại 4 góc giúp phân bổ đều trọng lượng $M_{total} = 30\text{ kg} + 5\text{ kg (khung)} = 35\text{ kg}$, bán kính bánh xe $R = 0.0725\text{ m}$.

Mô-men xoắn yêu cầu trên trục bánh xe: $$\tau = F_{ms} \cdot R + I \cdot \gamma$$

Với $a = 1\text{ m/s}^2$, hệ số an toàn $K = 2$, công suất tính toán yêu cầu: $$P_{ct} = \omega \cdot \tau = 31.5\text{ W} \implies P_{đc} = \frac{P_{ct}}{\eta} = \frac{31.5}{0.94} \approx 33.51\text{ W}$$ Động cơ DC Planet 60W hoàn toàn đáp ứng dư tải và đảm bảo gia tốc khởi động ổn định. Bộ truyền đai răng GT2 bước đai $\rho = 2\text{ mm}$, số răng $Z_1 = 30$, $Z_2 = 60$ ($u = 2$) giúp tăng gấp đôi mô-men xoắn đầu trục bánh xe.


Implementation và kết quả

Thuật toán quy hoạch đường đi tối ưu (CBS - Conflict-Based Search)

Bài toán MAPF được mô hình hóa trên đồ thị không-thời gian $G = (V, E)$. Thuật toán CBS hoạt động trên 2 cấp độ:

  • Cấp độ cao (High-Level): Xây dựng Cây ràng buộc (Constraint Tree - CT). Mỗi nút $N$ trong CT chứa một tập các ràng buộc $N.constraints$ và một tập các lộ trình cá nhân $N.solution$ được tính toán cho từng robot. Nếu phát hiện xung đột giữa agent $a_i$ và $a_j$ tại đỉnh $v$ vào thời điểm $t$, CBS rẽ nhánh tạo ra 2 nút con với các ràng buộc bổ sung: $\langle a_i, v, t \rangle$ và $\langle a_j, v, t \rangle$.
  • Cấp độ thấp (Low-Level): Sử dụng thuật toán $A^*$ trên đồ thị không-thời gian để tìm đường đi ngắn nhất cho từng agent đơn lẻ thỏa mãn toàn bộ các ràng buộc được gán từ cấp cao.
# Trích đoạn hiện thực thuật toán giải quyết xung đột cấp cao CBS
class HighLevelCBS:
    def __init__(self, environment):
        self.env = environment
        self.open_set = PriorityQueue()

    def plan(self):
        root = CTNode()
        # Tìm đường đi tối ưu độc lập cho từng agent bằng Low-Level A*
        for agent in self.env.agents:
            root.solution[agent] = self.env.low_level_astar(agent, root.constraints)
        root.cost = sum(len(path) for path in root.solution.values())
        self.open_set.put((root.cost, root))

        while not self.open_set.empty():
            _, current_node = self.open_set.get()
            # Kiểm tra xung đột đỉnh (vertex) và xung đột cạnh (edge)
            first_conflict = self.env.validate_paths(current_node.solution)
            if not first_conflict:
                return current_node.solution # Tìm thấy giải pháp tối ưu không xung đột

            # Phân nhánh ràng buộc cho 2 agents liên quan
            for agent_id in [first_conflict.agent_1, first_conflict.agent_2]:
                child = CTNode(parent=current_node)
                new_constraint = Constraint(agent_id, first_conflict.location, first_conflict.time)
                child.constraints.add(new_constraint)
                
                # Cập nhật lại đường đi cho agent bị áp ràng buộc
                recalculated_path = self.env.low_level_astar(agent_id, child.constraints)
                if recalculated_path:
                    child.solution[agent_id] = recalculated_path
                    child.cost = sum(len(p) for p in child.solution.values())
                    self.open_set.put((child.cost, child))
        return None

Xử lý ảnh bám làn và quét mã QR điều hướng

import cv2
import numpy as np

def extract_lane_error(frame):
    # 1. Chuyển đổi không gian màu sang HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    lower_black = np.array([0, 0, 0])
    upper_black = np.array([180, 255, 60])
    mask = cv2.inRange(hsv, lower_black, upper_black)

    # 2. Biến đổi phối cảnh Bird-eye View
    h, w = mask.shape
    src_pts = np.float32([[40, 180], [w - 40, 180], [0, h], [w, h]])
    dst_pts = np.float32([[0, 0], [w, 0], [0, h], [w, h]])
    M = cv2.getPerspectiveTransform(src_pts, dst_pts)
    warped = cv2.warpPerspective(mask, M, (w, h))

    # 3. Tìm Contours và tính toán tọa độ tâm (Centroid)
    contours, _ = cv2.findContours(warped, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    if contours:
        c = max(contours, key=cv2.contourArea)
        M_c = cv2.moments(c)
        if M_c["m00"] > 0:
            cx = int(M_c["m10"] / M_c["m00"])
            error = cx - (w // 2)  # Sai số độ lệch tâm
            return error
    return 0

Thuật toán điều khiển kín vận tốc PI trên STM32F4

Hệ thống sử dụng bộ điều khiển PI số thực thi trong ngắt Timer chu kỳ $T_s = 10\text{ ms}$: $$u(k) = u(k-1) + K_p [e(k) - e(k-1)] + K_i T_s e(k)$$

// Thuật toán điều khiển số PI cho động cơ kéo bánh xe trên STM32F4
typedef struct {
    float Kp;
    float Ki;
    float Ts;
    float prev_error;
    float prev_integral;
    float output_limit;
} PI_Controller;

float PI_Compute(PI_Controller *pid, float setpoint, float feedback) {
    float error = setpoint - feedback;
    float proportional = pid->Kp * (error - pid->prev_error);
    float integral = pid->Ki * pid->Ts * error;
    
    float output = pid->prev_integral + proportional + integral;
    
    // Anti-windup clamping
    if (output > pid->output_limit) output = pid->output_limit;
    else if (output < -pid->output_limit) output = -pid->output_limit;
    
    pid->prev_error = error;
    pid->prev_integral = output;
    return output;
}

Kết quả thử nghiệm và đánh giá thực nghiệm

Hệ thống được kiểm tra thực tế trên sa bàn mô phỏng nhà kho với 4 trạm hàng và 5 kịch bản xung đột phức tạp.

+-----------------------------------------------------------------------------------+
|                         KẾT QUẢ THỰC NGHIỆM ĐÁP ỨNG VẬN TỐC                       |
+-----------------------------------------------------------------------------------+
| Vận tốc (m/s)                                                                     |
| 1.0 |                   +--------------------+ (Vận tốc đặt = 1.0 m/s)            |
|     |                  /                                                          |
| 0.8 |                 /                                                           |
| 0.6 |                /  Thời gian quá độ: t_settling = 0.18s                      |
| 0.4 |               /   Độ vọt lố: Overshoot = 2.8%                               |
| 0.2 |              /    Sai số xác lập: e_ss < 0.01 m/s                           |
| 0.0 +-------------+------------------------------------> Thời gian (s)            |
|     0.0          0.2          0.4          0.6                                    |
+-----------------------------------------------------------------------------------+

Dữ liệu đo lường hiệu năng

  1. Kiểm nghiệm bám làn quang:
    • Thực nghiệm lần 1: Độ lệch tâm trung bình $\bar{e} = 1.42\text{ mm}$, phương sai $\sigma^2 = 0.31$.
    • Thực nghiệm lần 2 (có tải 30 kg): $\bar{e} = 1.87\text{ mm}$, phương sai $\sigma^2 = 0.45$.
    • Thực nghiệm lần 3 (vận tốc max 1 m/s): $\bar{e} = 2.15\text{ mm}$, hoàn toàn nằm trong dung sai cho phép (< 5 mm).
  2. Kiểm nghiệm giải quyết xung đột đa tác nhân (3 đến 5 Mobile Robots):
    • 100% các kịch bản xung đột đỉnh và xung đột hoán vị tại ngã tư được giải quyết thành công qua CBS mà không xảy ra va chạm hay Deadlock.
    • Thời gian tính toán lộ trình trên CPU Raspberry Pi 4 cho 5 robot đạt mức trung bình 48 ms.

Đổi mới và đóng góp

  1. Kiến trúc giải quyết xung đột CBS hai lớp tối ưu hoàn chỉnh: So với thuật toán tuần tự Cooperative A* (CA*) vốn dễ thất bại khi gặp xung đột hoán vị hoặc Priority-Based Search (PBS) không đảm bảo tính tối ưu toàn cục, CBS trên mô hình này chứng minh khả năng tìm ra nghiệm có tổng chi phí (Sum of Costs) nhỏ nhất với 0% va chạm.
  2. Cơ chế dẫn đường Hybrid (Vision Line Tracking + QR Landmark): Loại bỏ nhu cầu lắp đặt hệ thống dây dẫn từ trường ngầm tốn kém, giảm chi phí hạ tầng đến 65% so với các giải pháp AGV từ tính truyền thống.
  3. Phân tầng xử lý phần cứng tối ưu: Giải phóng hoàn toàn vi điều khiển thời gian thực STM32F4 khỏi các tác vụ tính toán thị giác nặng, đảm bảo vòng lặp điều khiển vận tốc luôn giữ ổn định ở tần số 100 Hz.
Thuật toán / Giải pháp Tính hoàn chỉnh (Completeness) Tính tối ưu (Optimality) Xử lý Deadlock Thời gian thực thi (5 Agents)
Cooperative A* (CA*) Không Không (phụ thuộc độ ưu tiên) Dễ bị tắc nghẽn ~15 ms
Priority-Based Search (PBS) Không Bán tối ưu Khá ~30 ms
CBS Đồ án ứng dụng Có (Hoàn chỉnh) Tối ưu tuyệt đối Triệt tiêu hoàn toàn ~48 ms

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

Kịch bản ứng dụng trong nhà kho thông minh

  • Kho thương mại điện tử (E-commerce Fulfillment Hubs): Vận chuyển các khay hàng từ khu vực lưu trữ (Storage Racks) đến trạm đóng gói (Packing Station) theo mô hình "Goods-to-Person".
  • Nhà máy sản xuất linh kiện điện tử/SMT: Vận chuyển bo mạch PCB, linh kiện nhạy cảm giữa các dây chuyền sản xuất tự động.
journey
    title Quy trình vận hành thực tế của Mobile Robot trong nhà kho
    section Nhận lệnh
      Server phát lệnh điều phối : 5: Server
      CBS tính toán đường đi tối ưu : 5: Server
    section Di chuyển
      Robot bám làn quang học HSV : 4: Robot
      Camera quét QR định vị trạm : 5: Robot
      STM32 duy trì vận tốc PI 1m/s : 5: Robot
    section An toàn & Giao hàng
      Phát hiện vật cản dừng an toàn : 5: Cảm biến
      Dỡ hàng tại trạm đích và cập nhật GUI : 5: Robot

Phân tích hiệu quả kinh tế (ROI Analysis)

  • Chi phí chế tạo phần cứng robot: ~12.500.000 VNĐ / đơn vị (tiết kiệm hơn 70% so với AGV công nghiệp nhập khẩu).
  • Thời gian hoàn vốn ước tính: 8 - 12 tháng khi triển khai thay thế 2 ca lao động thủ công vận chuyển nội bộ.

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

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

  • Độ nhạy sáng của Camera: Thuật toán phân đoạn màu HSV còn phụ thuộc vào sự ổn định của ánh sáng môi trường nhà xưởng (cần bổ sung LED chiếu sáng chủ động).
  • Quy mô tập trung: Khi số lượng robot vượt quá 50 đối tượng, thời gian duyệt cây ràng buộc CT của CBS cấp cao tăng mạnh, có thể gây trễ tính toán.

Hướng phát triển tiếp theo

  • Nâng cấp lên thuật toán ECBS (Enhanced CBS) kết hợp tìm kiếm tiêu điểm để tối ưu hóa thời gian tính toán cho phi đội > 100 robot.
  • Tích hợp thêm cảm biến 2D LiDAR kết hợp thuật toán AMCL (Adaptive Monte Carlo Localization) và ROS2 để mở rộng khả năng chạy không cần vạch kẻ (Free-navigation).

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

  • Sinh viên Cơ điện tử / Tự động hóa: Tài liệu tham khảo hoàn chỉnh từ thiết kế cơ khí SolidWorks, tính chọn động cơ, lập trình nhúng ARM Cortex-M4 đến thị giác máy tính.
  • Kỹ sư R&D Robotics: Mẫu kiến trúc nhúng phân tầng thực tế (Raspberry Pi + STM32) và code mẫu triển khai giải thuật CBS.
  • Doanh nghiệp Logistics vừa và nhỏ: Giải pháp tự động hóa kho hàng chi phí thấp, linh hoạt chuyển đổi công năng mà không cần đập phá cải tạo mặt sàn.

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

1. Yêu cầu phần cứng tối thiểu để triển khai giải pháp này là gì?

Hạ tầng mặt sàn phẳng có dán vạch dẫn hướng tối màu (độ rộng 3-5 cm), mã QR dán tại các điểm nút giao/trạm dừng, mạng Wi-Fi cục bộ để truyền dữ liệu và Robot trang bị vi xử lý tối thiểu tương đương Raspberry Pi 3B+ / STM32F407.

2. Robot xử lý như thế nào khi phát hiện chướng ngại vật bất ngờ ngoài lộ trình?

Hệ thống cảm biến siêu âm HC-SR04 được điều khiển bởi vi xử lý STM32F1 sẽ quét liên tục ở cự ly gần (< 20 cm). Khi phát hiện vật cản đột xuất (như con người hoặc hàng rơi vãi), ngắt khẩn cấp được kích hoạt để ngắt xung PWM động cơ ngay lập tức độc lập với thuật toán trung tâm.

3. Thuật toán CBS có bị rơi vào vòng lặp vô tận (Deadlock) không?

Không. Về mặt lý thuyết và thực nghiệm, CBS là một thuật toán hoàn chỉnh (Complete Solver). Nếu không gian bài toán tồn tại giải pháp không va chạm, CBS chắc chắn sẽ tìm ra nghiệm tối ưu.

4. Chi phí bảo trì hệ thống đai răng và động cơ như thế nào?

Bộ truyền đai răng GT2 làm việc êm ái, không cần tra dầu bôi trơn định kỳ như bộ truyền xích, tuổi thọ trung bình đạt trên 5.000 giờ vận hành liên tục trước khi cần kiểm tra độ dãn đai.

5. Hệ thống có thể mở rộng tích hợp với phần mềm quản lý kho (WMS) có sẵn không?

Hoàn toàn có thể. Dữ liệu trạm và lộ trình giao tiếp qua các file định dạng chuẩn (Text/JSON) và giao thức TCP/IP không dây, cho phép kết nối trực tiếp với hệ thống WMS hoặc ERP của doanh nghiệp.


Kết luận

Đề tài "Nghiên cứu thuật toán tối ưu hóa quỹ đạo di chuyển cho robot vận chuyển hàng hóa" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thiện xuất sắc cả 3 trụ cột kỹ thuật: Cơ khí chính xác - Điện tử điều khiển nhúng - Phần mềm thuật toán thông minh. Việc ứng dụng thành công thuật toán CBS kết hợp công nghệ thị giác máy tính trên nền tảng phần cứng phân tầng (Raspberry Pi 4 + STM32F407) đã mở ra hướng đi đầy triển vọng cho các giải pháp AGV tự hành nội địa hóa tại Việt Nam, mang lại hiệu quả kinh tế cao và khả năng ứng dụng thực tiễn rộng rãi trong kỷ nguyên Logistics 4.0.