VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. ROVE: VLA-RL với vòng phản hồi người dùng cho humanoid
wholebody-vlavla-rlhumanoiddexterous-manipulationreinforcement-learninghuman-in-the-loopxpeng-roboticspolicy-learning

ROVE: VLA-RL với vòng phản hồi người dùng cho humanoid

XPENG Robotics giới thiệu ROVE — framework RL post-training VLA bằng cách tận dụng can thiệp không hoàn hảo của người dùng để cải thiện policy thao tác khéo léo của humanoid.

Nguyễn Anh Tuấn26 tháng 6, 202612 phút đọc
ROVE: VLA-RL với vòng phản hồi người dùng cho humanoid

Tưởng tượng bạn đang dạy robot gấp quần áo. Robot làm sai — bạn chụp tay nó và điều chỉnh. Nhưng bạn không phải chuyên gia điều khiển robot, tay bạn run đôi chút, và cú "cứu" đó thật ra không hoàn hảo. Liệu robot có học được gì từ những can thiệp vụng về đó không?

Đây chính xác là vấn đề mà ROVE (Reinforcement Learning with Optimistic Value Estimation) của XPENG Robotics giải quyết. Bài báo xuất hiện trên arXiv tháng 6/2026, đại diện cho một hướng đi mới trong việc huấn luyện humanoid thao tác khéo léo: thay vì chỉ bắt chước dữ liệu tốt, robot học cách phân biệt hành vi có giá trị cao từ dữ liệu hỗn hợp chất lượng.

Vấn đề cốt lõi: Can thiệp của người không hoàn hảo

Trong robotics, "human-in-the-loop" (HITL) là kỹ thuật phổ biến: khi robot gặp khó khăn, người điều hành can thiệp và chỉnh sửa. Dữ liệu can thiệp này sau đó được dùng để huấn luyện policy tốt hơn.

Điều đó nghe có vẻ đơn giản — nhưng với humanoid có tay khéo léo (dexterous hands), mọi thứ phức tạp hơn rất nhiều:

  1. Khoảng cách teleoperation: Người điều hành dùng VR headset + motion capture để điều khiển robot. Nhưng bàn tay người và bàn tay robot rất khác nhau về cấu trúc, và không có phản hồi lực (haptic feedback). Mỗi cử động bị "dịch" không hoàn hảo sang không gian khớp của robot.

  2. Hành động can thiệp thường dưới tối ưu: Khi người cứu robot, họ thường làm nhanh, vụng về, không theo đường đi tối ưu. Nếu robot học cách bắt chước mù quáng, nó sẽ học cả những hành động tệ.

  3. 50 bậc tự do: Robot IRON-R01-1.11 của XPENG có 50 chiều không gian proprioceptive (khớp thân + bàn tay khéo léo). Điều khiển toàn bộ chuỗi này qua VR là thách thức kỹ thuật khổng lồ.

Khuyến nghị công cụ

Stack train/deploy cho VLA

Train trên cloud/workstation, deploy bản tối ưu xuống Jetson hoặc robot computer.

Cloud GPU for VLA / policy training Dùng cho imitation learning, diffusion policy, RL và fine-tuning model robotics. Xem cloud GPU → NVIDIA Jetson Orin NX / Orin Nano Máy deploy edge cho perception, logging và inference đã tối ưu. Xem Jetson → Hugging Face / robotics dataset hosting Lưu dataset, checkpoint và model card để workflow LeRobot/VLA dễ chia sẻ hơn. Xem platform →

ROVE là gì? Framework tổng quát

ROVE là một framework RL post-training — nghĩa là nó không huấn luyện VLA từ đầu, mà tinh chỉnh (fine-tune) một VLA policy đã có sẵn bằng dữ liệu can thiệp mới thu thập được.

Kiến trúc tổng quan của ROVE — nguồn: XPENG Robotics project page
Kiến trúc tổng quan của ROVE — nguồn: XPENG Robotics project page

Ba thành phần cốt lõi:

1. Pipeline thu thập dữ liệu human-in-the-loop

Mỗi episode được chia làm 3 giai đoạn:

  • Rollout tự động: VLA policy chạy độc lập, hoàn thành task càng nhiều càng tốt.
  • Giai đoạn can thiệp-thích nghi (intervention-adaptation): Khi policy sắp thất bại, người điều hành tiếp quản. Hệ thống phát hiện "ranh giới thất bại" một cách thận trọng (conservative failure boundary labeling) để can thiệp sớm trước khi mọi thứ sụp đổ hoàn toàn.
  • Giai đoạn phục hồi (intervention-recovery): Sau khi người điều hành ổn định tình hình, VLA tiếp tục hoàn thành nốt task.

Điều đặc biệt là hệ thống dùng command filter để làm mượt quá trình chuyển giao quyền điều khiển — tránh các cú giật bất ngờ có thể làm hỏng robot hoặc tạo dữ liệu nhiễu.

2. Optimistic Value Estimation (OVE)

Đây là đóng góp lý thuyết trung tâm của ROVE. Vấn đề cơ bản là: làm sao đánh giá hành động nào "đáng học" từ dữ liệu hỗn hợp?

OVE dùng expectile regression để ước tính hàm giá trị thiên về các giá trị cao hơn:

$$\mathcal{L}_{OVE}(\phi) = \mathbb{E}\left[|\tau - \mathbf{1}{\hat{V}t - V\phi(s_t) < 0}|(\hat{V}t - V\phi(s_t))^2\right]$$

Trong đó:

  • $\hat{V}t = \sum{i=t}^{t+H-1} \gamma^{i-t} r_i + \gamma^H V_{\bar{\phi}}(s_{t+H})$ là giá trị mục tiêu bootstrapped H bước
  • $\tau \in (0.5, 1)$ điều khiển "mức độ lạc quan" — càng gần 1, critic càng thiên về các trajectory giá trị cao

Tham số mặc định: $\tau = 0.7$, $H = 16$ bước cho inference/advantage, $H = 50$ cho huấn luyện.

Ưu điểm so với Monte-Carlo regression (bắt chước tất cả): OVE không cần query các hành động ngoài phân phối vì nó hoạt động trên value function thay vì Q-function, tránh được vấn đề phổ biến trong offline RL.

3. Advantage-conditioned policy extraction

Sau khi có critic, ROVE tính lợi thế (advantage) cho từng bước:

$$A_{\phi_k} = \sum \text{rewards} + \gamma^H V_{\phi_k}(s_{t+H}) - V_{\phi_k}(s_t)$$

Các bước được gán nhãn nhị phân: "cải thiện" nếu advantage vượt ngưỡng phân vị thứ 70, "không cải thiện" nếu dưới ngưỡng đó. Actor sau đó được fine-tune bằng advantage-conditioned behavior cloning — chỉ học từ những hành động được đánh dấu "cải thiện".

Tại inference, dùng classifier-free guidance decoding:

$$v_{cfg} = v_{neg} + \beta(v_{pos} - v_{neg})$$

Điều này "lái" generation về phía hành động có lợi thế cao mà không cần thay đổi kiến trúc mạng.

Vòng lặp huấn luyện ROVE: Từng bước

Đây là thuật toán đầy đủ theo Algorithm 1 trong paper:

Khởi tạo:

  • Policy ban đầu $\pi_0$ (VLA đã được pre-train trên demonstrations)
  • Dataset demonstrations $\mathcal{D}^0_{critic}$

Lặp $k = 1, 2, 3$:

  1. Huấn luyện critic $V_{\phi_k}$ trên $\mathcal{D}^k_{critic}$ bằng OVE objective
  2. Tính advantages cho tất cả transition trong dataset
  3. Gán nhãn nhị phân theo ngưỡng phân vị 70
  4. Fine-tune actor $\pi_{k+1}$ từ $\pi_k$ bằng advantage-conditioned BC
  5. Deploy $\pi_{k+1}$, thu thập episode mới + can thiệp → tạo $\mathcal{D}^{k+1}_{critic}$

Mỗi vòng lặp tương ứng với ~1 đợt thu thập dữ liệu thực trên robot.

Dữ liệu cross-embodiment: Học từ video của người

Một điểm thú vị khác của ROVE: học từ 180 video egocentric của người cho mỗi task. Videos này ghi lại người thực hiện thao tác tương tự, được dùng để giám sát ước tính giá trị — đặc biệt hữu ích cho các tình huống thất bại hiếm gặp (long-tailed failure modes).

Tại sao điều này hiệu quả? Vì tư thế tay của người trong các tình huống phục hồi mang thông tin về cấu trúc của bài toán — robot có thể học "khi nào cần làm gì" từ dữ liệu này, dù cơ thể robot và người khác nhau.

Thực nghiệm: 2 task thực tế khó

Task 1: Xóa bảng trắng (contact-rich)

Kết quả cải thiện policy qua các vòng lặp ROVE — nguồn: XPENG Robotics
Kết quả cải thiện policy qua các vòng lặp ROVE — nguồn: XPENG Robotics

  • Robot: IRON-R01-1.11
  • Dữ liệu ban đầu: 225 episodes demonstration
  • Mỗi vòng lặp: thêm 82/71/79 episodes mới
  • Kết quả sau 3 vòng lặp: 45.0% → 80.0% success rate

Đây là task phức tạp vì đòi hỏi tiếp xúc lực liên tục (áp lực đúng mức lên bảng), điều chỉnh góc cầm, và di chuyển theo quỹ đạo mượt mà.

Task 2: Cho bánh mì vào máy nướng (fine-grained insertion)

  • Dữ liệu ban đầu: 220 episodes
  • Mỗi vòng lặp: thêm 97/69/104 episodes
  • Tỉ lệ can thiệp: ~4.53% tổng số bước
  • Kết quả sau 3 vòng lặp: 56.7% → 86.7% success rate

Task này đòi hỏi chính xác cực cao: khe cắm bánh mì có dung sai nhỏ, robot phải căn chỉnh bàn tay khéo léo trong không gian 3D với ít phản hồi lực.

So sánh với baseline

ROVE vượt trội so với tất cả baseline được thử nghiệm:

Phương pháp Whiteboard Bread Toaster
Base policy (SFT) 45.0% 56.7%
Filtered BC ~52% ~63%
HG-DAgger Dưới base ~61%
RECAP ~65% ~72%
ROVE (ours) 80.0% 86.7%

Đặc biệt đáng chú ý: HG-DAgger thất bại trên một task — thấp hơn cả policy ban đầu. Điều này xảy ra vì HG-DAgger bắt chước trực tiếp mọi can thiệp của người dùng, kể cả những can thiệp dưới tối ưu.

Tại sao OVE quan trọng? Ablation study

Ablation: Value estimation với và không có dữ liệu kinh nghiệm người — nguồn: XPENG Robotics
Ablation: Value estimation với và không có dữ liệu kinh nghiệm người — nguồn: XPENG Robotics

Paper thực hiện ablation:

  • OVE vs. Monte-Carlo regression: OVE tốt hơn nhất quán vì không bị "kéo xuống" bởi các trajectory có giá trị thấp.
  • Có vs. không có video người: Video người tăng đáng kể chất lượng ước tính giá trị trong các tình huống thất bại hiếm gặp.
  • τ sensitivity: τ=0.7 là điểm cân bằng tốt giữa "quá bảo thủ" (τ=0.5, bằng mean regression) và "quá lạc quan" (τ→1, chỉ học trajectory tốt nhất).

Cách tái tạo / áp dụng ROVE trong dự án của bạn

Dù ROVE chưa có code open-source tại thời điểm viết bài, các nguyên tắc có thể áp dụng trực tiếp với bất kỳ VLA nào:

Bước 1: Chuẩn bị VLA policy ban đầu

# Giả sử bạn có một VLA (LeRobot, OpenVLA, hay π0) đã được train trên demos
# Pipeline ROVE yêu cầu VLA trả về distribution của hành động

from lerobot.common.policies.pi0 import Pi0Policy

base_policy = Pi0Policy.from_pretrained("your-checkpoint")

Bước 2: Thu thập dữ liệu human-in-the-loop

# Cấu trúc dữ liệu ROVE cần:
# - state: observation tại thời điểm t
# - action: hành động thực hiện (của robot hoặc người can thiệp)
# - reward: sparse reward (0/1 task completion)
# - intervention_flag: True nếu đây là hành động của người can thiệp

episode = {
    "states": [],        # List[np.ndarray] shape (T, state_dim)
    "actions": [],       # List[np.ndarray] shape (T, action_dim)
    "rewards": [],       # List[float]
    "intervention": []   # List[bool]
}

Bước 3: Huấn luyện critic với OVE

import torch
import torch.nn as nn

class OVECritic(nn.Module):
    def __init__(self, state_dim, hidden_dim=256):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(state_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, 1)
        )
    
    def forward(self, state):
        return self.net(state).squeeze(-1)

def ove_loss(predictions, targets, tau=0.7):
    """
    Expectile regression loss với tham số lạc quan tau.
    tau=0.5 → mean regression thông thường
    tau→1   → chỉ học từ các giá trị cao nhất
    """
    errors = targets - predictions
    weights = torch.where(errors >= 0, 
                          torch.full_like(errors, tau), 
                          torch.full_like(errors, 1 - tau))
    return (weights * errors.pow(2)).mean()

# Bootstrap target
def compute_bootstrap_target(rewards, next_values, gamma=0.99, H=16):
    """
    V̂_t = Σ γ^i r_i + γ^H V(s_{t+H})
    """
    discounted_rewards = sum(
        gamma**i * r for i, r in enumerate(rewards[:H])
    )
    return discounted_rewards + gamma**H * next_values

Bước 4: Tính advantage và gán nhãn

import numpy as np

def compute_advantages_and_labels(
    states, rewards, critic, gamma=0.99, H=16, percentile=70
):
    """
    Tính advantage và gán nhãn nhị phân theo phân vị 70.
    """
    values = critic(torch.tensor(states)).detach().numpy()
    
    advantages = []
    for t in range(len(states) - H):
        bootstrap_val = compute_bootstrap_target(
            rewards[t:t+H], values[t+H], gamma, H
        )
        adv = bootstrap_val - values[t]
        advantages.append(adv)
    
    threshold = np.percentile(advantages, percentile)
    labels = [1 if a >= threshold else 0 for a in advantages]
    
    return advantages, labels

Bước 5: Fine-tune actor với advantage conditioning

def fine_tune_actor_advantage_conditioned(policy, dataset, labels):
    """
    Chỉ fine-tune trên các bước có label=1 (advantage cao).
    Tương đương với Advantage-Conditioned BC.
    """
    optimizer = torch.optim.AdamW(policy.parameters(), lr=1e-5)
    
    for step, (state, action, label) in enumerate(dataset):
        if label == 0:  # Bỏ qua bước có advantage thấp
            continue
        
        # Standard behavior cloning loss
        pred_action = policy(state, improvement_signal=True)
        loss = nn.MSELoss()(pred_action, action)
        
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

Regularization quan trọng

ROVE dùng hai kỹ thuật quan trọng để tránh overfitting:

  • State dropout: Xác suất 0.3 để bỏ qua proprioceptive state → policy không quá phụ thuộc vào sensor đặc thù.
  • Gaussian perturbation: Thêm nhiễu Gaussian (σ=0.4) vào proprioceptive input → tăng tính robustness.

Ứng dụng thực tế: Khi nào nên dùng ROVE?

ROVE phù hợp nhất khi:

  1. Bạn đã có VLA policy baseline — ROVE là post-training, không phải từ đầu.
  2. Task đòi hỏi tiếp xúc lực hoặc độ chính xác cao — reward sparse không đủ cho RL chuẩn.
  3. Bạn có người có thể can thiệp nhưng không phải chuyên gia robot.
  4. Bạn muốn cải thiện iterative — mỗi vòng thu thập thêm ~70-100 episodes.

Ngược lại, ROVE không phù hợp khi:

  • Task đủ đơn giản để RL reward dense từ đầu.
  • Không có người có thể thực hiện can thiệp.
  • Thời gian thực đòi hỏi nhiều hơn 3 vòng lặp thu thập.

Điểm mạnh và giới hạn

Điểm mạnh:

  • Tận dụng được can thiệp không hoàn hảo — thực tế hơn nhiều so với yêu cầu demonstration chuyên gia.
  • OVE tránh được vấn đề phân phối ngoài phân phối của offline RL.
  • Cross-embodiment learning từ video người giúp xử lý edge cases hiếm gặp.

Giới hạn hiện tại:

  • Cần robot thực để thu thập dữ liệu — chưa có sim-to-real pipeline.
  • Hiệu quả phụ thuộc vào chất lượng và số lượng can thiệp của người.
  • Chưa có code open-source (tại thời điểm viết bài tháng 6/2026).
  • Thử nghiệm trên 2 task — chưa rõ tính tổng quát.

Kết luận

ROVE trả lời một câu hỏi thực tiễn quan trọng: "Làm sao biến sự vụng về của người điều hành thành dữ liệu huấn luyện có giá trị?" Câu trả lời là dùng RL với Optimistic Value Estimation để chắt lọc giá trị từ dữ liệu hỗn hợp, thay vì bắt chước tất cả hay lọc bỏ cứng nhắc.

Với kết quả 45%→80% và 57%→87% success rate chỉ sau 3 vòng thu thập, ROVE là một bước tiến thực chất trong việc deploy humanoid thực tế — nơi không phải lúc nào cũng có chuyên gia robot ngồi bên cạnh.

Paper gốc: ROVE: Unlocking Human Interventions for Humanoid Manipulation via Reinforcement Learning — Wei Xiao et al., XPENG Robotics, arXiv tháng 6/2026


Bài viết liên quan

  • ProcVLM: VLA-RL với dense reward tự động cho manipulation
  • RISE: World model tưởng tượng cho VLA-RL
  • Whole-body VLA-RL: Điều khiển toàn thân humanoid
NT

Nguyễn Anh Tuấn

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

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

NEWNghiên cứu
LeVERB: Điều khiển toàn thân humanoid bằng ngôn ngữ-thị giác tiềm ẩn
wholebody-vlahumanoidvla
wholebody-vla

LeVERB: Điều khiển toàn thân humanoid bằng ngôn ngữ-thị giác tiềm ẩn

LeVERB (UC Berkeley) — framework phân cấp đầu tiên cho điều khiển toàn thân humanoid bằng latent VLA, zero-shot sim-to-real trên Unitree G1, đạt 58.5% thành công.

24/6/202613 phút đọc
NT
Tutorial
Whole-body VLA
humanoidwhole-body-controlnvidia
wholebody-vla

GEAR-SONIC: Whole-Body Control cho Humanoid Robot

Hướng dẫn chi tiết GEAR-SONIC của NVIDIA — huấn luyện whole-body controller cho humanoid robot với dataset BONES-SEED và VR teleoperation.

13/4/202612 phút đọc
NT
Tutorial
RISE: robot tự cải thiện bằng world model
riseworld-modelvla
wholebody-vla

RISE: robot tự cải thiện bằng world model

RISE dùng compositional world model để cho VLA policy tự cải thiện trong imagination trước khi deploy lên robot thật.

13/6/202615 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam