← Quay lại Blog
aiai-perceptionvlaresearch

SpatialVLA: 3D understanding cho robot manipulation

Tại sao 3D spatial awareness quan trọng cho VLA — Ego3D Position Encoding và Adaptive Action Grids.

Nguyễn Anh Tuấn20 tháng 3, 202610 phút đọc
SpatialVLA: 3D understanding cho robot manipulation

Tại sao VLA models cần hiểu 3D?

Trong bài trước về Foundation Models cho Robot, chúng ta đã phân tích RT-2, Octo và OpenVLA — những model VLA (Vision-Language-Action) mạnh mẽ có thể nhận camera image + language instruction và output robot actions. Tuy nhiên, tất cả đều có một hạn chế chung: chúng xử lý thế giới như ảnh 2D phẳng.

Hãy tưởng tượng bạn yêu cầu robot "đặt cốc lên kệ trên cùng". Robot nhìn thấy cốc và kệ qua camera — nhưng từ ảnh 2D, nó không biết kệ cách bao xa, cốc nặng bao nhiêu so với khoảng cách cần di chuyển, hay gripper cần nghiêng bao nhiêu độ để không va vào kệ dưới.

Vấn đề cốt lõi: Depth ambiguity. Một vật ở gần camera nhưng nhỏ trông giống hệt vật ở xa nhưng lớn trong ảnh 2D. Không có depth information, robot phải "đoán" — và trong manipulation, đoán sai 2cm có thể khiến task fail hoàn toàn.

Robot arm thực hiện manipulation task trong môi trường 3D

Bằng chứng thực nghiệm

Các thí nghiệm trên benchmark cho thấy khi thay đổi spatial layout (di chuyển vật thể sang vị trí mới, thay đổi độ cao kệ), success rate của OpenVLA và các policy không có depth information giảm dưới 50% — trong khi con người thực hiện cùng task gần như không bị ảnh hưởng. Điều này cho thấy 2D VLA models đang thiếu một thành phần quan trọng: spatial reasoning.

Các tình huống mà 2D VLA gặp khó:

Tình huống Vấn đề 2D Yêu cầu 3D
Stack objects Không biết chiều cao chính xác Depth estimation cho từng object
Place on shelf Không biết khoảng cách tới shelf 3D position của target
Avoid obstacles Không biết obstacle ở trước hay sau Spatial reasoning toàn cảnh
Precise insertion Sai lệch mm-level từ 2D projection 3D alignment

SpatialVLA: Kiến trúc và đổi mới

SpatialVLA (Qu et al., 2025, accepted tại RSS 2025) giải quyết vấn đề trên bằng hai đổi mới kỹ thuật: Ego3D Position EncodingAdaptive Action Grids. Model được train trên 1.1 triệu real-world robot episodes — lớn hơn đáng kể so với Open X-Embodiment dataset (970K) mà OpenVLA sử dụng.

Ego3D Position Encoding — Nhìn thế giới qua chiều sâu

Ý tưởng cốt lõi: thay vì chỉ dùng 2D positional encoding cho image patches (như ViT truyền thống), SpatialVLA bổ sung 3D position information được estimate từ monocular depth.

Pipeline:
  RGB Image (từ camera robot)
       ↓
  Monocular Depth Estimator (e.g., DPT/Depth Anything)
       ↓
  Depth Map → 3D Point Cloud (trong egocentric frame)
       ↓
  Ego3D Position Encoding
       ↓
  Fused với Visual Tokens trong VLM backbone

Tại sao "Egocentric"? Thay vì dùng world coordinate frame (cần calibration camera-robot chính xác), SpatialVLA biểu diễn mọi thứ trong camera frame — egocentric. Điều này có 2 lợi ích quan trọng:

  1. Không cần camera-robot calibration — triển khai trên robot mới không cần biết extrinsic parameters chính xác
  2. Universally applicable — hoạt động với bất kỳ robot embodiment nào, miễn có camera

Cụ thể, mỗi image patch tại vị trí pixel (u, v) với depth d được map sang 3D coordinate:

X = (u - cx) * d / fx
Y = (v - cy) * d / fy  
Z = d

Ego3D_pos = MLP([X, Y, Z]) → positional embedding

Trong đó (fx, fy, cx, cy) là camera intrinsics. Embedding này được cộng vào visual tokens trước khi đưa vào transformer backbone, cho phép model "nhìn" chiều sâu mà không thay đổi architecture.

Adaptive Action Grids — Thống nhất action space

Vấn đề thứ hai: mỗi robot có action space khác nhau — Franka dùng 7D joint positions, WidowX dùng 6D end-effector velocity, ALOHA dùng 14D bimanual actions. OpenVLA xử lý bằng cách tokenize mỗi dimension thành 256 bins — nhưng phân bổ bins đều cho mọi range, lãng phí resolution ở vùng ít sử dụng.

Adaptive Action Grids giải quyết bằng cách:

  1. Phân tích statistical distribution của actions trên toàn bộ dataset cho mỗi robot
  2. Discretize actions thành grids thích ứng — nhiều bins hơn ở vùng action hay xuất hiện, ít bins hơn ở vùng hiếm
  3. Align action tokens với 3D spatial structure — action grids được thiết kế để phản ánh spatial meaning
# Ví dụ đơn giản hóa: Adaptive binning
import numpy as np

def adaptive_grid(actions, n_bins=256):
    """
    Tạo adaptive bins dựa trên distribution thực tế
    thay vì uniform bins
    """
    # actions: shape (N, 7) — N episodes, 7 action dimensions
    bins_per_dim = []
    for dim in range(actions.shape[1]):
        # Dùng quantiles thay vì linspace
        percentiles = np.linspace(0, 100, n_bins + 1)
        bins = np.percentile(actions[:, dim], percentiles)
        bins_per_dim.append(bins)
    return bins_per_dim

# Uniform: bins cách đều từ -1 đến 1
# Adaptive: bins dày ở vùng action phổ biến (gần workspace center)
#           và thưa ở vùng hiếm (biên workspace)

Kết quả: action resolution cao hơn ở vùng quan trọng mà không tăng tổng số tokens.

3D spatial understanding trong robot perception với point clouds

Kết quả: SpatialVLA vs OpenVLA

SpatialVLA được evaluate trên 7 robot learning scenarios, 16 real-robot tasks, và 48 simulation setups. Kết quả cho thấy ưu thế rõ rệt, đặc biệt trong các task yêu cầu spatial reasoning.

Real-world Franka manipulation

Task OpenVLA Octo SpatialVLA
Pick spatial prompt (trái/phải/trước/sau) < 50% < 50% 73%
Stack with height awareness ~40% ~35% 68%
Place at specific location ~45% ~42% 71%

Zero-shot WidowX (out-of-distribution)

Đây là test khắc nghiệt nhất — SpatialVLA chưa bao giờ thấy WidowX robot layout cụ thể này:

Inference speed

SpatialVLA cũng cải thiện inference speed nhờ compact action representation:

Model Tokens per action Inference (Hz)
OpenVLA 7 tokens (7D) ~6 Hz
Octo-Base Diffusion steps ~10 Hz
SpatialVLA Fewer spatial tokens ~8 Hz

3D Representations trong Robotics: Bức tranh toàn cảnh

SpatialVLA sử dụng monocular depth — phương pháp đơn giản nhất để có 3D information. Nhưng đây chỉ là một phần trong landscape rộng hơn của 3D representations cho robot perception.

Point Clouds

Cách hoạt động: LiDAR hoặc stereo camera tạo ra tập hợp điểm 3D (x, y, z) cho mỗi surface trong scene.

Ưu điểm: Chính xác, explicit geometry, xử lý nhanh với PointNet/PointNet++.

Nhược điểm: Sparse (không có thông tin về surface liên tục), không có appearance/texture.

Ứng dụng: Grasping (Contact-GraspNet), navigation, bin picking trong công nghiệp.

Neural Radiance Fields (NeRF)

Cách hoạt động: Train neural network để biểu diễn scene dưới dạng continuous volumetric function — cho bất kỳ point (x, y, z) và viewing direction, output color và density.

Ưu điểm: Photo-realistic novel view synthesis, smooth surfaces, compact representation.

Nhược điểm: Training chậm (phút-giờ), inference chậm (seconds per render), khó update real-time.

Ứng dụng trong robotics: Scene understanding, sim-to-real transfer — dùng NeRF để tạo photorealistic training environments.

3D Gaussian Splatting (3DGS)

Cách hoạt động: Biểu diễn scene bằng tập hợp 3D Gaussians, mỗi Gaussian có position, covariance, opacity và spherical harmonics coefficients cho color. Render bằng differentiable rasterization thay vì ray marching.

Ưu điểm: Real-time rendering (100+ FPS), training nhanh hơn NeRF (phút thay vì giờ), explicit representation dễ manipulate.

Nhược điểm: Memory-intensive (millions of Gaussians), không smooth bằng NeRF.

Ứng dụng mới nhất trong robotics:

So sánh tổng quan

Representation Training Rendering Explicit? Real-time? Robot-friendly?
Point Cloud N/A N/A Yes Yes High
NeRF Slow (hours) Slow (sec) No No Medium
3DGS Fast (min) Real-time Yes Yes High
Monocular Depth Pre-trained Real-time Yes Yes Highest

SpatialVLA chọn monocular depth vì nó không cần hardware bổ sung (LiDAR, stereo camera) và chạy real-time — phù hợp nhất cho general-purpose VLA model.

Tương lai: VLA + 3D Scene Understanding

SpatialVLA mở ra hướng nghiên cứu kết hợp VLA với 3D understanding sâu hơn:

Short-term (2026-2027)

Medium-term (2027-2028)

Long-term vision

Đây là một trong những hướng nghiên cứu exciting nhất trong robot learning hiện tại. SpatialVLA là bước đầu tiên quan trọng — chứng minh rằng 3D spatial information cải thiện VLA models một cách measurable trên real robots.

Takeaway cho practitioners

Nếu bạn đang build robot manipulation system:

  1. Nếu dùng OpenVLA/Octo: Cân nhắc thêm depth estimation vào input pipeline — ngay cả simple monocular depth đã giúp nhiều.
  2. Nếu task cần spatial precision: SpatialVLA hoặc approach tương tự nên là first choice. Fine-tune trên your robot data sẽ cho kết quả tốt nhất.
  3. Hardware: Không cần LiDAR hay stereo camera — monocular depth từ pre-trained model đủ cho hầu hết manipulation tasks.
  4. Next step: Theo dõi SpatialVLA GitHub để cập nhật weights và fine-tuning code khi released.

Trong bài tiếp theo, chúng ta sẽ đi vào thực hành: fine-tune OpenVLA với LeRobot — từ record data đến deploy trên robot thật.


Bài viết liên quan

Bài viết liên quan

IROS 2026: Papers navigation và manipulation đáng theo dõi
researchconferencerobotics

IROS 2026: Papers navigation và manipulation đáng theo dõi

Phân tích papers nổi bật về autonomous navigation và manipulation — chuẩn bị cho IROS 2026 Pittsburgh.

2/4/20267 phút đọc
Sim-to-Real Transfer: Train simulation, chạy thực tế
ai-perceptionresearchrobotics

Sim-to-Real Transfer: Train simulation, chạy thực tế

Kỹ thuật chuyển đổi mô hình từ simulation sang robot thật — domain randomization, system identification và best practices.

1/4/202612 phút đọc
IROS 2026 Preview: Những gì đáng chờ đợi
researchconferencerobotics

IROS 2026 Preview: Những gì đáng chờ đợi

IROS 2026 Pittsburgh — preview workshops, competitions và nghiên cứu navigation, manipulation hàng đầu.

30/3/20267 phút đọc