← Quay lại Blog
navigationnavigationdeep-learningfoundation-modelsvint

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.

Nguyen Anh Tuan12 tháng 2, 202610 phút đọc
Learning-based Navigation: GNM, ViNT và NoMaD

Từ classic navigation đến learning-based

Trong Part 1Part 2 của series này, chúng ta đã tìm hiểu SLAM và Nav2 -- những phương pháp navigation kinh điển dựa trên geometric reasoning và hand-crafted planners. Chúng hoạt động tốt trong môi trường có cấu trúc (nhà máy, kho hàng) nhưng gặp khó khăn khi:

Learning-based navigation tiếp cận vấn đề từ góc độ khác: thay vì hand-code rules, học từ data. Và giống như NLP đã có foundation models (GPT, BERT), robotics navigation cũng đang có foundation models của riêng mình.

Trong bài này, mình sẽ phân tích 3 công trình then chốt từ nhóm nghiên cứu BAIR (Berkeley AI Research) của Sergey Levine: GNM, ViNT, và NoMaD -- chuỗi công trình định hình hướng đi của learning-based navigation.

Deep learning models cho robot navigation từ dữ liệu thực tế

GNM -- General Navigation Model (2022)

Paper: GNM: A General Navigation Model to Drive Any Robot (Shah et al., ICRA 2023)

Vấn đề GNM giải quyết

Trước GNM, mỗi robot cần train riêng một navigation policy. Một policy train trên TurtleBot không chạy được trên Jackal, và ngược lại. GNM đặt câu hỏi: có thể train 1 model chạy được trên nhiều robot khác nhau không?

Cách tiếp cận

GNM là một goal-conditioned navigation policy được train trên dữ liệu từ nhiều loại robot khác nhau. Ý tưởng chính:

  1. Data aggregation: thu thập dữ liệu navigation từ 6 loại robot khác nhau (Jackal, TurtleBot, Spot, drone, v.v.), tổng cộng ~60 giờ
  2. Goal representation: sử dụng goal image -- ảnh của điểm đến mà robot cần tới
  3. Temporal context: thay vì chỉ dùng frame hiện tại, GNM sử dụng chuỗi ảnh (observation history) để hiểu motion
  4. Normalized action space: chuẩn hóa action space (linear vel, angular vel) giữa các robot có kích thước và kinematic khác nhau

Kiến trúc

Observation images (t-k, ..., t)  →  CNN Encoder  →  ┐
                                                       ├→  MLP  →  (v, ω) actions
Goal image                        →  CNN Encoder  →  ┘
                                                       └→  MLP  →  temporal distance

GNM có 2 outputs:

Kết quả then chốt

Hạn chế

ViNT -- Visual Navigation Transformer (2023)

Paper: ViNT: A Foundation Model for Visual Navigation (Shah et al., CoRL 2023)

Từ GNM đến ViNT

ViNT là bước tiến hóa từ GNM, với 3 cải tiến lớn:

  1. Transformer architecture: thay CNN bằng EfficientNet + Transformer, cho phép model học long-range dependencies trong observation history
  2. Diffusion-based subgoal proposals: thêm khả năng exploration bằng cách generate subgoal images
  3. Massive dataset: train trên dataset lớn hơn nhiều -- hundreds of hours từ nhiều robot

Kiến trúc ViNT

Observations (t-k, ..., t)
    │
    ▼
EfficientNet Encoder (per frame)
    │
    ▼
Transformer (cross-attention giữa frames)
    │
    ├──→ Action Head  →  (v, ω) normalized actions
    └──→ Distance Head →  temporal distance to goal

Goal image  →  EfficientNet  →  Goal Token (inject vào Transformer)

Điểm khác biệt với GNM:

Exploration với Diffusion Subgoals

Đây là tính năng đột phá của ViNT. Khi không có goal image (robot cần explore), ViNT sử dụng diffusion model để generate subgoal images:

  1. Sample subgoal images từ diffusion model (conditioned on current observation)
  2. Score mỗi subgoal bằng ViNT distance head (chọn subgoal "khả thi" nhất)
  3. Navigate đến subgoal được chọn
  4. Repeat -- tạo frontier exploration behavior

Điều này cho phép ViNT explore novel environments mà không cần bản đồ trước -- điều mà Nav2 truyền thống không thể làm.

Adaptation với Prompt-Tuning

ViNT có thể adapt sang task mới mà không cần retrain toàn bộ model:

Kết quả

NoMaD -- Goal Masked Diffusion Policies (2023)

Paper: NoMaD: Goal Masked Diffusion Policies for Navigation and Exploration (Sridhar et al., ICRA 2024)

Vấn đề NoMaD giải quyết

ViNT vẫn có một hạn chế: action output là deterministic (1 action duy nhất). Trong thực tế, tại một ngã tư, robot có thể rẽ trái hoặc rẽ phải -- cả hai đều hợp lệ. Deterministic policy sẽ output trung bình của 2 hướng, dẫn đến đi thẳng vào tường!

NoMaD giải quyết bằng cách sử dụng diffusion model để generate actions -- có thể mô hình hóa multi-modal action distributions.

Kiến trúc NoMaD

Observations (t-k, ..., t)
    │
    ▼
ViT Encoder (Vision Transformer)
    │
    ▼
Observation Token
    │
    ├──→ Goal Masking Layer  ←  Goal image (hoặc masked)
    │
    ▼
Diffusion Decoder
    │
    ▼
Action trajectory (sequence of future actions)

Goal Masking -- Thống nhất navigation và exploration

Ý tưởng then chốt của NoMaD: goal masking. Trong quá trình training:

Một model duy nhất học cả 2 behaviors:

# NoMaD pseudocode
def nomad_forward(observations, goal_image=None):
    obs_token = vit_encoder(observations)
    
    if goal_image is not None:
        goal_token = vit_encoder(goal_image)
        context = concat(obs_token, goal_token)
    else:
        # Mask goal -- exploration mode
        context = concat(obs_token, mask_token)
    
    # Diffusion generates multi-modal actions
    action_trajectory = diffusion_decoder.sample(context)
    return action_trajectory

Diffusion cho action generation

Thay vì output 1 action, NoMaD generate trajectory (chuỗi actions tương lai) qua diffusion process:

  1. Bắt đầu từ noise (Gaussian random)
  2. Iteratively denoise conditioned on observation + goal context
  3. Output: trajectory có nhiều bước (ví dụ: 8 future waypoints)

Ưu điểm của diffusion:

Kết quả

So sánh 3 models

Tiêu chí GNM ViNT NoMaD
Năm 2022 2023 2023
Architecture CNN + MLP EfficientNet + Transformer ViT + Diffusion
Action output Single (v, omega) Single (v, omega) Trajectory (multi-modal)
Exploration Không Có (diffusion subgoals) Có (goal masking)
Cross-robot 6 robots Nhiều hơn Nhiều hơn
Long-range Hạn chế Km-scale Km-scale
Real-time Có (Jetson Orin)
Training data ~60h Hundreds of hours Hundreds of hours

Evolution của ý tưởng

GNM (2022)           ViNT (2023)              NoMaD (2023)
─────────           ──────────              ──────────
CNN backbone   →   Transformer backbone   →  ViT backbone
Single action  →   Single action          →  Diffusion trajectory
No exploration →   Diffusion subgoals     →  Goal masking
Basic dataset  →   Massive dataset        →  Same massive dataset

So sánh các phương pháp navigation từ classic đến learning-based

Ứng dụng thực tế và hạn chế

Khi nào dùng learning-based navigation?

Nên dùng khi:

Chưa nên dùng khi:

Deploy trên robot thật

# Clone official codebase
git clone https://github.com/robodhruv/visualnav-transformer.git
cd visualnav-transformer

# Install
pip install -r requirements.txt

# Download pretrained checkpoint
# GNM, ViNT, NoMaD checkpoints có sẵn

# Run trên robot
python deployment/deploy_nomad.py \
  --model nomad \
  --checkpoint checkpoints/nomad.pth \
  --robot locobot  # hoặc jackal, turtlebot, custom

Hardware requirements

Xu hướng tiếp theo

Foundation models lớn hơn

Các nghiên cứu mới nhất đang scale up navigation models:

Kết hợp với VLMs (Vision-Language Models)

Thay vì goal image, dùng ngôn ngữ tự nhiên để chỉ dẫn robot: "đi đến phòng bếp" -- đây là Vision-Language Navigation (VLN), chủ đề của Part 4 trong series này.

Sim-to-real cho navigation

Train navigation policy trong simulation rồi transfer sang robot thật -- kết hợp GNM/ViNT backbone với simulated diverse environments.

Tiếp theo trong series

Đây là Part 3 của series Navigation hiện đại:


Bài viết liên quan

Bài viết liên quan

Deep DiveOutdoor Navigation và Multi-Robot Coordination
navigationmulti-robotoutdoormapfvda5050Phần 5

Outdoor Navigation và Multi-Robot Coordination

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

20/2/202611 phút đọc
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
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