navigationnavigationmulti-robotoutdoormapfvda5050

Outdoor Navigation and Multi-Robot Coordination

GPS-denied navigation, terrain classification, multi-robot traffic management with VDA5050, and MAPF algorithms for robot fleet.

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

From Indoor to Outdoor, From 1 Robot to Many

In previous 4 posts of this series, we went from SLAM to Nav2, learning-based navigation, and vision-language navigation. All focused on single robot operating indoors. But real industrial deployments demand more:

  • Outdoor navigation: delivery robots, agricultural robots, exploration robots -- where GPS may be unavailable or unreliable
  • Multi-robot coordination: 50 AMRs in one warehouse, how do they avoid colliding and operate efficiently?

These are 2 hardest problems in real-world navigation, and topics of final post in this series.

Robot operating outdoors on complex terrain

Part 1: Outdoor Navigation

Challenges When Going Outside

Indoor navigation (Nav2 + LiDAR SLAM) works well because environment is structured: straight walls, flat floor, stable lighting. Outdoors is different story:

Challenge Indoor Outdoor
Terrain Flat Rough, slopes, mud, sand
GPS Not needed Might be unavailable (GPS-denied)
Weather Stable Rain, fog, bright sun
Dynamic obstacles People, carts Cars, animals, vegetation
Map Can pre-map Changes constantly
Lighting Stable Changes with time, weather

GPS-Denied Navigation

In many situations, GPS is unavailable or unreliable:

  • Indoors / underground: no GPS signal
  • Urban canyon: tall buildings block signal, multipath reflections
  • Dense forest: tree canopy blocks signal
  • EW (Electronic Warfare): GPS jammed or spoofed (military)

Solution: Sensor Fusion

Without GPS, robot relies on sensor fusion -- combining multiple information sources:

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

LIO-SAM (discussed in Part 1) is excellent for outdoor because it supports factor graph allowing adding any sensor: LiDAR, IMU, wheel odometry, and GPS (when available).

Visual Place Recognition

When robot revisits location, visual place recognition helps recognize and correct drift. Modern methods:

  • NetVLAD / Patch-NetVLAD: CNN-based feature aggregation for place recognition
  • DINOv2: vision foundation model, good retrieval features without training
  • CosPlace (Berton et al., CVPR 2022): optimized for large-scale visual geo-localization

Terrain Classification

Outdoor robot must understand terrain to choose safe, efficient path:

  • Asphalt: fast, safe
  • Grass: possible but slower
  • Soft earth: can sink, slip
  • Gravel: vibration, needs slower speed
  • Water: avoid
  • Steps / slopes: assess climbing ability

Method

Semantic segmentation from camera:

# Use pre-trained model for 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 on off-road dataset (RUGD, RELLIS-3D)

Point cloud analysis from LiDAR:

  • Roughness: terrain roughness (z variance in local patch)
  • Slope: surface slope (normal vector)
  • Step height: height of step / curb

Traversability map: combine visual + geometric into cost map for planning:

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

This feeds into Nav2 costmap for planner to avoid dangerous terrain.

Outdoor SLAM: Solutions

Method Sensor Outdoor Performance Notes
LIO-SAM LiDAR + IMU Excellent Factor graph, optional GPS
FAST-LIO2 LiDAR + IMU Excellent Incremental kd-tree, fast
ORB-SLAM3 Camera + IMU Good (textured) Fails with low texture
VILENS Visual-Inertial-LiDAR Best Multi-sensor, most robust

Outdoor terrain classification and traversability mapping

Part 2: Multi-Robot Coordination

Why Multi-Robot?

One AMR does 1 m/s, carries 100 kg. Want throughput of 1000 deliveries/hour? Need 20-50 robots operating simultaneously. Now problems start:

  • Traffic management: 50 robots in warehouse, how to avoid collision?
  • Task allocation: which order goes to which robot?
  • Deadlock prevention: 2 robots waiting in narrow hallway -- who backs up?
  • Heterogeneous fleet: Robot A is forklift, robot B is small AMR -- different coordination

VDA5050 -- Standard Protocol for AGV/AMR Fleet

VDA5050 is open communication standard between AGV/AMR and fleet management software, developed by VDA (German Auto Association) and VDMA (German Machine Builders).

Why VDA5050?

Before VDA5050, each manufacturer had proprietary protocol. Want 10 MiR robots + 5 KUKA robots in one warehouse? Need 2 fleet managers, can't talk to each other. VDA5050 solves with common protocol.

VDA5050 Architecture

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

Main Messages

From 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
    }
  ]
}

From AGV → Master Control (State):

  • Current position (x, y, theta, map_id)
  • Battery status, speed, errors
  • Task progress (which node reached, action completed)

VDA5050 Advantages

  • Interoperability: robots from different manufacturers in one fleet
  • Open standard: free, no vendor lock-in
  • MQTT-based: lightweight, real-time, scales well
  • Wide adoption: MiR, KUKA, Locus Robotics, 50+ manufacturers

MAPF -- Multi-Agent Path Finding

MAPF solves problem: find paths for multiple agents simultaneously such that no collisions and total cost optimized (minimize total path length or makespan).

Problem

Input:
- Graph G (map with nodes and edges)
- N agents, each with start and goal
- Constraint: 2 agents cannot occupy same node or swap positions

Output:
- Sequence of actions for each agent
- No conflicts
- Optimal (shortest total path length)

Difficulty: optimal MAPF is NP-hard when optimizing makespan. Practice needs fast, near-optimal algorithms.

CBS (Sharon et al., 2015) is most widely used MAPF algorithm:

CBS Algorithm:
1. [Low-level]: Find shortest path for each agent (independent A*)
2. [High-level]: Check conflicts between paths
3. If conflict exists (2 agents at same location at same time):
   a. Create 2 child nodes: 
      - Node 1: forbid agent A at conflict location
      - Node 2: forbid agent B at conflict location
   b. Re-plan for forbidden agent
4. Repeat until no conflicts

Complexity: optimal but exponential worst case. With heuristics (ECBS, EECBS), runs fast for hundreds of agents.

Practice MAPF with Python

# Use python-mapf library
# 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 in Practice

Algorithm Optimality Speed Scale Use case
CBS Optimal Slow (>50 agents) ~50 agents Research, small
ECBS Bounded sub-optimal Fast ~200 agents Production
Priority-Based Sub-optimal Very fast ~1000 agents Large warehouse
ORCA Local (reactive) Real-time Unlimited Dynamic obstacles

Traffic Management in Warehouse

MAPF solves offline planning. Real warehouse needs 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) │
└─────────┴─────────┴─────────┘
  • Limit robots per zone
  • One-way corridors for narrow paths
  • Priority rules: robot with cargo prioritized over empty robot

Deadlock Prevention

4 conditions for deadlock (Coffman):

  1. Mutual exclusion: only 1 robot per location
  2. Hold and wait: robot holds current and waits for next
  3. No preemption: cannot force robot to back up
  4. Circular wait: A waits for B, B waits for C, C waits for A

Solution: break condition 4 (circular wait) with priority ordering -- lower ID robot always defers.

Open-RMF -- Fleet Management for ROS 2

Open-RMF (Open Robotics Middleware Framework) is ROS 2 fleet management framework supporting multi-robot coordination.

# Install Open-RMF
sudo apt install ros-humble-rmf-demos

# Launch demo with 2 fleets (TinyRobot + DeliveryRobot)
ros2 launch rmf_demos office.launch.xml

Open-RMF provides:

  • Traffic negotiation: robots auto-negotiate when meeting
  • Fleet adapter: connect any robot (even non-ROS)
  • Task dispatcher: assign task to appropriate robot
  • Web dashboard: unified fleet monitoring

See Open-RMF Fleet Management for details.

Multi-robot fleet coordination in warehouse

Combining Outdoor + Multi-Robot

Some applications combine both:

Autonomous Agriculture

  • Fleet of autonomous tractors in field
  • GPS-RTK for precise localization (±2cm)
  • Multi-robot coordination to cover full area
  • Terrain classification to avoid waterlogged zones

Last-Mile Delivery

  • Fleet of delivery robots on sidewalk
  • GPS + visual localization in urban
  • Traffic management with cars and pedestrians
  • Dynamic re-routing when obstacles appear

Search and Rescue

  • Multi-robot exploration in unknown environments
  • GPS-denied (collapsed building, underground)
  • Collaborative SLAM: multiple robots mapping simultaneously
  • Communication constraints: not always connected

Wrapping Up Modern Navigation Series

Over 5 posts, we covered entire landscape of modern robot navigation:

Post Topic Keywords
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

Key Takeaways:

  • Indoor structured: Nav2 + LiDAR SLAM still best for production
  • Unstructured / novel: Learning-based (NoMaD, ViNT) approaching production-ready
  • Language-guided: VLN + LLMs open natural robot interaction
  • Multi-robot: VDA5050 for interoperability, MAPF for coordination, Open-RMF for ROS 2
  • Outdoor: sensor fusion is key, terrain classification critical for safety

NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Bài viết liên quan

Deep Dive
Mobile Manipulation: Base di chuyển + Arms trên Mobile Robot
lerobotmobile-manipulationnavigationamrPhần 8

Mobile Manipulation: Base di chuyển + Arms trên Mobile Robot

Kết hợp navigation và manipulation trên mobile robot — action space mở rộng, whole-body coordination, và sim environments.

2/4/20269 phút đọc
Nghiên cứu
Vision-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ứu
Learning-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