← Quay lại Blog
navigationnavigationmulti-robotoutdoormapfvda5050

Outdoor Navigation và Multi-Robot Coordination

GPS-denied navigation, terrain classification, multi-robot traffic management với VDA5050, và MAPF algorithms cho robot fleet.

Nguyen Anh Tuan20 tháng 2, 202611 phút đọc
Outdoor Navigation và Multi-Robot Coordination

Từ indoor đến outdoor, từ 1 robot đến nhiều robot

Trong 4 bài trước của series, chúng ta đã đi từ SLAM đến Nav2, learning-based navigation, và vision-language navigation. Tất cả đều tập trung vào 1 robot hoạt động trong nhà. Nhưng thực tế công nghiệp đòi hỏi nhiều hơn:

Đây là 2 bài toán khó nhất trong navigation thực tế, và là chủ đề của bài cuối trong series này.

Robot hoạt động ngoài trời trên địa hình phức tạp

Phần 1: Outdoor Navigation

Thách thức khi ra ngoài trời

Indoor navigation (Nav2 + LiDAR SLAM) hoạt động tốt vì môi trường có cấu trúc: tường thẳng, sàn phẳng, ánh sáng ổn định. Outdoor là câu chuyện khác:

Thách thức Indoor Outdoor
Địa hình Phẳng Gồ ghề, dốc, bùn, cát
GPS Không cần Có thể không có (GPS-denied)
Thời tiết Ổn định Mưa, sương, nắng chói
Dynamic obstacles Người, xe đẩy Ô tô, động vật, cây cối
Map Có thể map trước Thay đổi liên tục
Ánh sáng Ổn định Thay đổi theo giờ, ngày/đêm

GPS-Denied Navigation

Trong nhiều tình huống, GPS không khả dụng hoặc không chính xác:

Giải pháp: Sensor Fusion

Khi không có GPS, robot phải dựa vào sensor fusion -- kết hợp nhiều nguồn thông tin:

                ┌──────────┐
                │   IMU    │  ← Short-term accurate, long-term drift
                └────┬─────┘
                     │
┌──────────┐   ┌────▼─────┐   ┌──────────┐
│  LiDAR   │──▶│  Fusion  │◀──│ Camera   │
│  SLAM    │   │  (EKF/   │   │ (Visual  │
└──────────┘   │  Factor   │   │  Odom)   │
                │  Graph)  │   └──────────┘
┌──────────┐   └────┬─────┘
│  Wheel   │───────▶│
│  Odom    │        │
└──────────┘   ┌────▼─────┐
                │ Fused    │
                │ Pose     │
                └──────────┘

LIO-SAM (đã giới thiệu trong Part 1) là framework tốt cho outdoor vì hỗ trợ factor graph có thể thêm bất kỳ sensor nào: LiDAR, IMU, wheel odometry, và GPS (khi có).

Visual Place Recognition

Khi robot quay lại nơi đã đến, visual place recognition giúp nhận ra và correct drift. Các phương pháp hiện đại:

Terrain Classification

Robot outdoor cần hiểu địa hình để chọn đường đi an toàn và hiệu quả:

Phương pháp

Semantic segmentation từ camera:

# Sử dụng pre-trained model cho terrain classification
import torch
from torchvision.models.segmentation import deeplabv3_resnet101

model = deeplabv3_resnet101(pretrained=True).eval()

# Terrain classes: road, grass, dirt, gravel, water, obstacle
# Fine-tune trên off-road dataset (RUGD, RELLIS-3D)

Point cloud analysis từ LiDAR:

Traversability map: kết hợp visual + geometric analysis thành cost map cho path planning:

Traversability score = w1 * terrain_type + w2 * slope + w3 * roughness

Score này được đưa vào Nav2 costmap để planner tránh địa hình nguy hiểm.

Outdoor SLAM: Các giải pháp

Phương pháp Sensor Outdoor Performance Ghi chú
LIO-SAM LiDAR + IMU Rất tốt Factor graph, GPS optional
FAST-LIO2 LiDAR + IMU Rất tốt Incremental kd-tree, nhanh
ORB-SLAM3 Camera + IMU Tốt (có texture) Thất bại khi texture ít
VILENS Visual-Inertial-LiDAR Tốt nhất Multi-sensor, robust nhất

Outdoor terrain classification và traversability mapping

Phần 2: Multi-Robot Coordination

Tại sao Multi-Robot?

Một robot AMR đi 1 m/s, mang 100 kg hàng. Muốn throughput 1000 đơn/giờ? Cần 20-50 robot hoạt động đồng thời. Và đây là lúc vấn đề bắt đầu phức tạp:

VDA5050 -- Chuẩn giao tiếp cho AGV/AMR Fleet

VDA5050 là chuẩn giao tiếp mở giữa AGV/AMR và fleet management software, phát triển bởi VDA (Hiệp hội Ô tô Đức) và VDMA (Hiệp hội Máy móc Đức).

Tại sao cần VDA5050?

Trước VDA5050, mỗi nhà sản xuất robot có giao thức riêng. Muốn dùng 10 robot MiR + 5 robot KUKA trong 1 kho? Cần 2 fleet managers riêng biệt, không giao tiếp được với nhau. VDA5050 giải quyết bằng giao thức chung.

Kiến trúc VDA5050

┌─────────────────────────────────┐
│       Master Control            │  ← Fleet Management Software
│  (Fleet Manager / Supervisor)   │
└──────────┬──────────────────────┘
           │ MQTT (JSON messages)
           │
    ┌──────┼──────┬──────────┐
    │      │      │          │
┌───▼──┐┌──▼──┐┌──▼──┐  ┌───▼──┐
│AGV 1 ││AGV 2││AGV 3│  │AGV N │
│(MiR) ││(KUKA)││(Custom)│(Any) │
└──────┘└─────┘└─────┘  └──────┘

Các message chính

Từ Master Control → AGV:

{
  "headerId": 1,
  "timestamp": "2026-02-20T10:00:00Z",
  "version": "2.0.0",
  "manufacturer": "vnrobo",
  "serialNumber": "AMR-001",
  "orderId": "order-123",
  "orderUpdateId": 1,
  "nodes": [
    {
      "nodeId": "node-1",
      "sequenceId": 0,
      "released": true,
      "nodePosition": { "x": 10.5, "y": 3.2, "mapId": "warehouse-A" },
      "actions": [
        { "actionType": "pick", "actionId": "pick-1", "blockingType": "HARD" }
      ]
    },
    {
      "nodeId": "node-2",
      "sequenceId": 2,
      "released": true,
      "nodePosition": { "x": 15.0, "y": 3.2, "mapId": "warehouse-A" }
    }
  ],
  "edges": [
    {
      "edgeId": "edge-1",
      "sequenceId": 1,
      "startNodeId": "node-1",
      "endNodeId": "node-2",
      "released": true,
      "maxSpeed": 1.0
    }
  ]
}

Từ AGV → Master Control (State):

Ưu điểm VDA5050

MAPF -- Multi-Agent Path Finding

MAPF là bài toán tìm đường đồng thời cho nhiều agent sao cho không va chạmtối ưu tổng chi phí (minimize total path length hoặc makespan).

Bài toán

Input:
- Graph G (map với nodes và edges)
- N agents, mỗi agent có start và goal
- Constraint: 2 agents không được ở cùng node hoặc swap positions

Output:
- Chuỗi actions cho mỗi agent
- Không có conflict
- Tối ưu (tổng path length ngắn nhất)

Độ khó: MAPF tối ưu là NP-hard khi tối ưu makespan. Thực tế cần algorithms nhanhgần tối ưu.

CBS -- Conflict-Based Search

CBS (Sharon et al., 2015) là algorithm được dùng rộng rãi nhất cho MAPF:

CBS Algorithm:
1. [Low-level]: Tìm shortest path cho mỗi agent (A* độc lập)
2. [High-level]: Kiểm tra conflicts giữa các paths
3. Nếu có conflict (2 agents ở cùng vị trí tại cùng thời điểm):
   a. Tạo 2 child nodes: 
      - Node 1: cấm agent A ở vị trí conflict
      - Node 2: cấm agent B ở vị trí conflict
   b. Re-plan cho agent bị cấm
4. Lặp lại cho đến khi không còn conflict

Độ phức tạp: optimal nhưng exponential worst case. Trong thực tế, với các heuristics (ECBS, EECBS), chạy nhanh cho hàng trăm agents.

Thực hành MAPF với Python

# Sử dụng thư viện python-mapf
# pip install cbs-mapf

from cbs import CBSSolver

# Define map (0 = free, 1 = obstacle)
grid = [
    [0, 0, 0, 0, 0],
    [0, 1, 1, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 1, 1, 0],
    [0, 0, 0, 0, 0],
]

# Define agents: (start, goal)
agents = [
    ((0, 0), (4, 4)),  # Agent 0: top-left to bottom-right
    ((4, 0), (0, 4)),  # Agent 1: bottom-left to top-right
    ((2, 0), (2, 4)),  # Agent 2: mid-left to mid-right
]

solver = CBSSolver(grid, agents)
paths = solver.solve()

for i, path in enumerate(paths):
    print(f"Agent {i}: {path}")

MAPF trong thực tế

Algorithm Optimality Tốc độ Scale Use case
CBS Optimal Chậm (>50 agents) ~50 agents Research, nhỏ
ECBS Bounded sub-optimal Nhanh ~200 agents Production
Priority-Based Sub-optimal Rất nhanh ~1000 agents Large warehouse
ORCA Local (reactive) Real-time Unlimited Dynamic obstacles

Traffic Management trong Warehouse

MAPF giải quyết offline planning. Nhưng trong warehouse thực tế, cần online traffic management:

Zone-based Control

┌─────────┬─────────┬─────────┐
│ Zone A  │ Zone B  │ Zone C  │
│ (max 3  │ (max 2  │ (max 3  │
│ robots) │ robots) │ robots) │
├─────────┼─────────┼─────────┤
│ Zone D  │ Zone E  │ Zone F  │
│ (max 2  │ (max 1) │ (max 2  │
│ robots) │ ONE-WAY │ robots) │
└─────────┴─────────┴─────────┘

Deadlock Prevention

4 điều kiện cho deadlock (Coffman):

  1. Mutual exclusion: chỉ 1 robot ở 1 vị trí
  2. Hold and wait: robot giữ vị trí hiện tại và chờ vị trí tiếp
  3. No preemption: không thể bắt robot lùi
  4. Circular wait: A đợi B, B đợi C, C đợi A

Giải pháp: phá vỡ điều kiện 4 (circular wait) bằng priority ordering -- robot có ID thấp hơn luôn nhường.

Open-RMF -- Fleet Management cho ROS 2

Open-RMF (Open Robotics Middleware Framework) là framework fleet management cho ROS 2, hỗ trợ multi-robot coordination.

# Cài đặt Open-RMF
sudo apt install ros-humble-rmf-demos

# Launch demo với 2 fleet (TinyRobot + DeliveryRobot)
ros2 launch rmf_demos office.launch.xml

Open-RMF cung cấp:

Tham khảo thêm tại Open-RMF Fleet Management.

Multi-robot fleet coordination trong warehouse

Kết hợp Outdoor + Multi-Robot

Một số ứng dụng kết hợp cả 2:

Nông nghiệp tự động

Giao hàng last-mile

Khám phá và cứu nạn

Tổng kết series Navigation hiện đại

Qua 5 bài, chúng ta đã đi qua toàn bộ landscape của robot navigation hiện đại:

Bài Chủ đề Keyword
Part 1 SLAM EKF, Cartographer, LIO-SAM, ORB-SLAM3
Part 2 Nav2 Path planning, behavior trees, costmap
Part 3 Learning-based GNM, ViNT, NoMaD, diffusion
Part 4 VLN R2R, LLM planning, NaVILA
Part 5 Outdoor + Multi-Robot GPS-denied, VDA5050, MAPF

Takeaway chính:


Bài viết liên quan

Bài viết liên quan

Nghiên cứuVision-Language Navigation: Robot đi theo chỉ dẫn
vlnnavigationllmvision-languagePhần 4

Vision-Language Navigation: Robot đi theo chỉ dẫn

Khám phá VLN -- cách robot hiểu và thực hiện chỉ dẫn ngôn ngữ tự nhiên, từ R2R benchmark đến NaVILA và LLM-based planning.

16/2/20269 phút đọc
Nghiên cứuLearning-based Navigation: GNM, ViNT và NoMaD
navigationdeep-learningfoundation-modelsvintPhần 3

Learning-based Navigation: GNM, ViNT và NoMaD

Khám phá foundation models cho robot navigation -- GNM, ViNT, NoMaD từ Berkeley và cách chúng thay đổi cách robot di chuyển.

12/2/202610 phút đọc
ROS 2 từ A đến Z (Phần 3): Nav2 — Robot tự hành đầu tiên
ros2tutorialamrnavigationPhần 3

ROS 2 từ A đến Z (Phần 3): Nav2 — Robot tự hành đầu tiên

Cấu hình Nav2 stack để robot tự lập bản đồ SLAM và di chuyển tự động — từ simulation đến thực tế.

11/2/202611 phút đọc