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. TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL
manipulationvlatactileonline-rlcontact-manipulationfine-tuningpiper-armmanipulation

TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL

Hướng dẫn TORL-VLA — framework kết hợp cảm biến xúc giác (tactile) và Online RL để fine-tune VLA cho thao tác tiếp xúc chính xác cao: latch, trứng, cốc cà phê.

Nguyễn Anh Tuấn6 tháng 7, 202613 phút đọc
TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL

TORL-VLA: Fine-tune VLA với Cảm Biến Xúc Giác và Online RL để Tăng Độ Chính Xác Thao Tác Tiếp Xúc

Bạn đã từng thấy một robot VLA (Vision-Language-Action) thực hiện pick-and-place hoàn hảo trong lab, nhưng khi gặp vật thể dễ vỡ hoặc cần lực chính xác — nó lại thất bại? Đó là vấn đề cốt lõi mà TORL-VLA (arXiv 2606.09337, tháng 6/2026) giải quyết.

VLA truyền thống là "mù" với lực tiếp xúc. Chúng "nhìn" qua camera và "hành động" dựa trên token ngôn ngữ, nhưng không cảm nhận được áp lực đầu ngón tay. Kết quả: khi điều kiện tiếp xúc lệch khỏi distribution training (vật hơi trơn hơn, vị trí lệch 2mm), policy thất bại theo kiểu rất tệ — kẹp quá mạnh làm vỡ trứng, hoặc cứ retry vô ích không biết dừng.

TORL-VLA giải quyết bằng cách gắn thêm cảm biến xúc giác (tactile sensors) vào ngón tay robot, tích hợp tín hiệu lực vào VLA qua kiến trúc wrench-aware, và thêm một module Online RL nhỏ gọn để tự học thích nghi ngay trong quá trình deploy — không cần thu thập thêm dữ liệu demo, không cần reset về simulator.

Bài viết này hướng dẫn chi tiết từ ý tưởng paper, kiến trúc kỹ thuật, cách thiết lập phần cứng, quy trình training, đến inference và kết quả thực tế.

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 →

Tại Sao VLA Cần Cảm Biến Xúc Giác?

Hãy nghĩ về lúc bạn bốc một quả trứng sống. Mắt bạn nhìn trứng, nhưng ngón tay mới là thứ điều chỉnh lực. Nếu bịt mắt, bạn vẫn có thể cầm trứng an toàn bằng xúc giác. Nhưng nếu tê liệt ngón tay, cho dù mắt thấy rõ, bạn vẫn dễ bóp nát trứng.

VLA hiện tại đang ở trạng thái "tê liệt ngón tay" — chỉ thấy, không cảm.

Vấn đề cụ thể với VLA thuần visual:

  1. Distribution shift khi tiếp xúc: Demo thu thập trong điều kiện lý tưởng. Lúc deploy, vật hơi trượt, lực ngưỡng khác → policy không có cơ chế feedback để điều chỉnh.
  2. Không biết khi nào đủ lực: Cho vật vào holder cần biết đã "khớp" hay chưa. Camera không đủ độ phân giải để phán đoán 0.5mm, nhưng lực tiếp xúc thì rõ ràng.
  3. Retry inefficient: Khi thất bại, policy cứ lặp lại hành động cũ vì không có tín hiệu nào nói "cách này sai, thay đổi đi".

TORL-VLA giải quyết cả 3 vấn đề bằng 2 cơ chế chính: Wrench-Aware VLA (cảm biến lực vào model) và Online RL với Intervention-Censored Critic (học thích nghi ngay lúc chạy).


Kiến Trúc TORL-VLA: 2 Stage, 3 Module

TORL-VLA hoạt động theo pipeline 2-stage:

Stage 1 — Wrench-Aware VLA (Reference Model)

Đây là model offline được train trước trên 539 demo trajectories. Nó nhận vào:

  • 3 camera feeds: global RealSense D435i, wrist RealSense D405, gripper fisheye
  • Language instruction: mô tả task bằng ngôn ngữ tự nhiên
  • Tactile wrench history: 12D wrench vector (6D × 2 fingertip) với J=10 samples trong 2 giây gần nhất

Model output 2 thứ cùng lúc:

  • Reference action chunk: chuỗi hành động dự đoán (giống VLA thông thường)
  • Future wrench sequence: dự đoán lực tiếp xúc trong tương lai gần

Cách tích hợp tactile vào VLA

Điểm sáng tạo là cách fusion. Thay vì inject tactile token vào đầu (early fusion — phá vỡ pretrained features), TORL-VLA dùng late fusion sau khi encode visual-language:

Tactile sensors → 12D wrench × J samples → MLP encoder → Tactile token Pt
Visual-Language encoder → z_vis
Late fusion: Self-attention([Pt; z_vis]) → fused features

Kiến trúc còn có:

  • Soft-routing Mixture-of-Experts (MoE): dynamic routing dựa trên wrench context, chọn expert phù hợp cho từng pha tiếp xúc
  • Zero-initialized wrench bypass: đường tắt để fine-grained contact info không bị "xay nhuyễn" qua nhiều lớp attention

Loss function train cùng lúc action và wrench:

L_ref = ||û_action - u_action||² + λ_w ||û_wrench - u_wrench||²

Với λ_w = 0.3 — wrench prediction đóng vai trò regularizer, không dominate quá.

Stage 2 — Online RL Module (Refinement)

Kiến trúc Wrench-Aware VLA reference model — nguồn: torl-vla.github.io
Kiến trúc Wrench-Aware VLA reference model — nguồn: torl-vla.github.io

Đây là "bộ não thích nghi" nhỏ gọn chạy song song với Stage 1 trong lúc deploy. Nó gồm:

Stage Estimator: Phân loại robot đang ở giai đoạn nào của task (pre-contact, in-contact, placement, release) → route đến actor-critic head phù hợp.

Actor-Critic Refinement:

  • Actor: nhận reference action từ Stage 1 + wrench hiện tại + wrench predicted → output refined action
  • Critic: đánh giá quality của refined action

Robot re-query Stage 1 mỗi K=10 steps (0.5 giây ở 20Hz), nghĩa là có cả plan từ VLA và real-time refinement từ RL.

Intervention-Censored Critic — Giải Pháp Credit Assignment

Đây là đóng góp lý thuyết quan trọng nhất của paper. Vấn đề: trong Online RL với robot, con người hay can thiệp (intervene) khi robot sắp phạm lỗi. Nếu sau can thiệp robot thành công, standard critic sẽ nghĩ "hành động trước can thiệp là tốt" — credit assignment sai hoàn toàn.

TORL-VLA giải quyết bằng Intervention-Censored (IC) Critic:

# Khi không có intervention:
y_task = r_t + γ^K * min_Q_task(s_{t+K}, a_{t+K})

# Khi có intervention (m_int = 1):
y_ic = r_t - c_int + (1 - done) * (1 - m_int) * γ^K * min_Q_ic(...)

m_int là mask chỉ boundary của intervention. Khi m_int=1, bootstrap bị loại bỏ và một intervention cost c_int được áp vào. Ý nghĩa: "hành động này dẫn đến can thiệp → đây là transition xấu, đừng credit cho success tiếp theo".

Actor loss kết hợp 3 terms:

L_π = λ_bc * L_bc  -  λ_task * E[min_Q_task]  +  λ_ic * E[ΔQ_ic]
  • L_bc: behavior cloning để không drift xa reference model
  • min_Q_task: maximize task value (thành công task)
  • ΔQ_ic: penalize intervention-prone actions

Phần Cứng Cần Thiết

Robot Platform

Paper dùng Piper robotic arm của AgileX Robotics với Pika gripper. Đây là arm 6-DOF giá thành hợp lý (~$8k USD), khá phổ biến trong nghiên cứu.

Tuy nhiên, kiến trúc TORL-VLA không lock-in với Piper — bất kỳ arm nào có wrist-mountable gripper và USB/SPI interface đều có thể adapt.

Tactile Sensors — Tacta Fingertip Sensors

Cảm biến xúc giác và wrench mapping — nguồn: torl-vla.github.io
Cảm biến xúc giác và wrench mapping — nguồn: torl-vla.github.io

Đây là component quan trọng nhất và ít quen thuộc nhất. Paper dùng Tacta fingertip sensors — 2 sensor gắn trên 2 mặt trong của ngón gripper:

  • Kích thước: 21×18.5×4.5mm (rất nhỏ gọn)
  • Array: 6×8 piezoelectric elements
  • Output: 48 giá trị áp lực → convert sang 6D wrench vector (Fx, Fy, Fz, Mx, My, Mz)
  • 2 sensor → 12D wrench vector tổng

Chuyển đổi tactile array → wrench:

# Mỗi sensor: 6×8 array của pressure values
tactile_left = sensor_left.read()   # shape: (6, 8)
tactile_right = sensor_right.read()  # shape: (6, 8)

# Convert sang wrench qua calibrated transform
wrench_left = calibration_matrix_left @ tactile_left.flatten()   # → 6D
wrench_right = calibration_matrix_right @ tactile_right.flatten() # → 6D

# Concatenate
wrench_12d = np.concatenate([wrench_left, wrench_right])  # → 12D

Calibration matrix được xác định qua quá trình hand-eye calibration kết hợp FEM simulation của gripper geometry.

Camera Setup

3 camera với vai trò khác nhau:

Camera Vị trí Vai trò
RealSense D435i Global (nhìn toàn cảnh) Scene understanding, object detection
RealSense D405 Wrist (gần vật) Fine manipulation, grasping alignment
Fisheye Gripper Visibility trong không gian hẹp

Cả 3 sync ở 20Hz với timestamp alignment, tránh temporal mismatch giữa visual và tactile data.


Quy Trình Training

Bước 1: Thu Thập Demo

Thu thập 539 trajectories toàn task (full-task execution, không chỉ subtask). Mỗi trajectory được record:

  • 3 camera streams
  • 12D wrench history (10 samples × 2.0s)
  • Joint positions + velocities
  • Language instruction
  • Success/failure label

Tips thu thập demo chất lượng cao:

  • Thực hiện task ở tốc độ bình thường, không cố tình chậm
  • Ghi cả failure recovery (robot hay người recover)
  • Đánh label can thiệp (intervention timestamp) để IC Critic dùng sau
  • Rải đều các subtask condition (cup orientation, latch angle, egg position)

Bước 2: Train Reference Model (Wrench-Aware VLA)

# Cài dependencies
pip install torch torchvision transformers einops

# Train
python train_reference.py \
    --data_dir ./data/demos \
    --base_model pi0.5 \
    --enable_moe \
    --enable_wrench_bypass \
    --wrench_loss_weight 0.3 \
    --batch_size 32 \
    --lr 1e-4 \
    --epochs 100 \
    --output_dir ./checkpoints/reference

Với dữ liệu 539 trajectories và model pi0.5 làm backbone, training mất khoảng 6-8 giờ trên A100.

Loss sẽ hội tụ theo dạng:

Epoch 10:  L_action=0.24, L_wrench=0.18, L_total=0.29
Epoch 50:  L_action=0.09, L_wrench=0.07, L_total=0.11
Epoch 100: L_action=0.06, L_wrench=0.05, L_total=0.075

Bước 3: Train Online RL (Adaptation Phase)

Online RL không train trước offline — nó train trực tiếp trên robot theo quy trình:

Warmup Phase (trước khi deploy):

# 300 demo chunks, 5k gradient updates
# Mục đích: khởi tạo actor gần reference policy
warmup_trainer = OnlineRLWarmup(
    demo_buffer=demo_buffer,
    n_chunks=300,
    n_gradient_steps=5000
)
warmup_trainer.train(actor, critic)

Main Interaction Phase (trên robot thật):

# 120.8 phút robot interaction time
# Update ratio: 5 gradient steps / transition
online_trainer = OnlineRLTrainer(
    actor=actor,
    task_critic=task_critic,
    ic_critic=ic_critic,
    update_to_data_ratio=5,
    gamma=0.99,
    tau=0.005  # EMA cho target network
)

for episode in robot_episodes:
    trajectory = robot.rollout(actor, reference_model)
    online_trainer.update(trajectory)

Lưu ý về intervention logging:

# Khi người can thiệp, ghi lại timestamp
def on_human_intervention(t):
    intervention_mask[t] = 1.0
    intervention_cost[t] = -1.0  # c_int

# IC Critic dùng mask này để cắt bootstrap

Các Task Thực Nghiệm

Visualization các task contact-rich trong TORL-VLA — nguồn: torl-vla.github.io
Visualization các task contact-rich trong TORL-VLA — nguồn: torl-vla.github.io

Task 1: Coffee Cup Placement

  • Mô tả: Đặt cốc cà phê vào holder chật, visibility thấp (góc camera bị che)
  • Thách thức: Cần lực vừa đủ để cup "snap" vào vị trí, không quá mạnh gây đổ
  • Tactile signal: Khi cup đặt đúng, wrench profile thay đổi đột ngột và ổn định

Task 2: Latch Manipulation

  • Mô tả: Cầm, lật và khóa cơ học một cái chốt (mechanical latch)
  • Thách thức: 3 giai đoạn tiếp xúc phức tạp — grip → flip → lock, mỗi giai đoạn cần profile lực khác nhau
  • Tactile signal: Latch "click" tạo wrench spike, Stage Estimator dùng để detect transition

Task 3: Egg Handling

  • Mô tả: Cầm trứng sống và đặt vào khay
  • Thách thức: Trứng dễ vỡ nếu quá mạnh, dễ trượt nếu quá nhẹ
  • Tactile signal: Optimal wrench range rất hẹp (~0.3N-0.8N trên mỗi fingertip)

Full-task: Thực hiện cả 3 task liên tiếp trong một autonomous rollout.


Kết Quả

Success rate theo thời gian online adaptation — nguồn: torl-vla.github.io
Success rate theo thời gian online adaptation — nguồn: torl-vla.github.io

So Sánh với Baselines (30 trials mỗi method)

Method Cup Latch Egg Full-Task Avg Time (s)
π0.5 (baseline VLA) 18/30 15/30 20/30 12/30 199.65
TA-VLA 19/30 17/30 20/30 12/30 204.45
ForceVLA 21/30 20/30 22/30 15/30 195.34
TORL-VLA w/o RL 25/30 23/30 25/30 21/30 191.91
RLT (ablation) 26/30 25/30 25/30 23/30 175.23
TORL-VLA 30/30 29/30 30/30 28/30 165.45

Một vài điểm đáng chú ý:

  • TORL-VLA đạt 100% trên Cup và Egg — hoàn hảo trên 30 trials
  • Full-task 28/30 vs 12/30 của π0.5 — cải thiện 133%
  • Thời gian thực thi nhanh hơn: 165.45s vs 199.65s của π0.5 — ít retry hơn, efficient hơn
  • TORL-VLA w/o RL (chỉ wrench-aware, không online RL) đã tốt hơn baseline nhiều — chứng minh tactile integration có giá trị độc lập

Ablation Insights

Kết quả ablation cho thấy:

  • MoE routing: contribution lớn nhất trong reference model — không có MoE, success rate giảm mạnh nhất
  • Wrench bypass: quan trọng cho Egg task (cần fine-grained force control)
  • IC Critic: đóng góp lớn nhất ở Latch task — vì Latch có nhiều can thiệp nhất trong training

Inference Pipeline

Sau khi train xong, inference chạy như sau:

import torch
from torl_vla import TORLVLAAgent

agent = TORLVLAAgent(
    reference_model_path="./checkpoints/reference/best.pt",
    rl_actor_path="./checkpoints/online_rl/actor_final.pt",
    rl_critic_path="./checkpoints/online_rl/critic_final.pt",
    device="cuda"
)

# Robot control loop
while not task_done:
    # Lấy observations
    obs = {
        "images": {
            "global": cam_global.capture(),
            "wrist": cam_wrist.capture(),
            "gripper": cam_fisheye.capture()
        },
        "wrench_history": tactile_buffer.get_last(n=10),  # 10×12D
        "language": "Place the coffee cup into the holder"
    }

    # Stage 1: Reference action từ Wrench-Aware VLA
    ref_action, pred_wrench = agent.reference_predict(obs)

    # Stage 2: Refined action từ Online RL Actor
    stage = agent.estimate_stage(obs)
    refined_action = agent.rl_refine(obs, ref_action, pred_wrench, stage)

    # Execute
    robot.execute(refined_action)

    # Cập nhật tactile buffer
    tactile_buffer.append(tactile_sensors.read())

Replanning period K=10 steps (0.5s) cho phép cân bằng giữa computation cost và responsiveness.


Roadmap Code Release

Tại thời điểm bài viết (tháng 7/2026), code chính thức từ tác giả vẫn đang Coming Soon trên project page. Tuy nhiên, community đã có reproduction:

  • openpi-RLT: Reproduction của RLT baseline (phiên bản không có IC Critic) — đây là ablation setting của TORL-VLA, hữu ích để hiểu online RL component
  • Paper: TORL-VLA arXiv 2606.09337
  • Project page: torl-vla.github.io

Để theo dõi code release chính thức, star/watch project page hoặc GitHub của các tác giả (Huaihang Zheng et al., Beijing Institute of Technology).


So Sánh Với Các Hướng Tiếp Cận Khác

Approach Tactile? Online Adapt? Offline Train Only? Khi nào dùng
VLA thuần (π0.5, OpenVLA) ✗ ✗ ✓ Task không tiếp xúc, pick-place đơn giản
TA-VLA / ForceVLA ✓ ✗ ✓ Có tactile, distribution shift ít
Online RL thuần (RLT) ✓ ✓ ✗ Có robot time, không cần language grounding
TORL-VLA ✓ ✓ ✗ Contact-rich, cần robustness cao

Tradeoff chính: TORL-VLA cần ~120 phút robot interaction time cho online adaptation — đây là cost thực tế cần cân nhắc khi triển khai.


Kết Luận

TORL-VLA là bước tiến quan trọng cho thao tác tiếp xúc chính xác cao. Ba đóng góp chính:

  1. Wrench-Aware VLA: Late fusion + MoE + bypass — tích hợp tactile mà không phá pretrained features
  2. Online RL với IC Critic: học thích nghi trên robot thật, giải quyết credit assignment khi có can thiệp người
  3. Stage-specific refinement: routing thông minh theo pha tiếp xúc

Kết quả 28/30 full-task (vs 12/30 baseline) cho thấy cả 2 component đều đóng góp độc lập và bổ sung cho nhau.

Nếu bạn đang build manipulation system cho contact-rich tasks (assembly, peg-in-hole, fragile object handling), kiến trúc này đáng để theo dõi kỹ khi code chính thức được release.


Bài Viết Liên Quan

  • FORCE: Tăng 79% Success Rate khi Fine-tune VLA bằng RL — Value-Calibrated Warm-Up
  • Contact-Rich Manipulation: Từ Lý Thuyết Đến Triển Khai Thực Tế
  • Fine-tune VLA trên LeRobot với Embodied Data
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

Nghiên cứu
Tại sao Multi-Agent đánh bại VLA đơn thuần? | AI Manipulation Agents #1
manipulationvlamulti-agentPhần 1
manipulation

Tại sao Multi-Agent đánh bại VLA đơn thuần? | AI Manipulation Agents #1

ManiAgent đạt 86.8% trên SimplerEnv — vượt xa pi0 55.7% và CogACT 51.3%. Phân tích kiến trúc 3-agent và lý do phân rã pipeline thắng end-to-end VLA.

15/6/202613 phút đọc
NT
Tutorial
Agentic Robot: SAP Protocol + Temporal Verifier
manipulationvlaliberoPhần 4
manipulation

Agentic Robot: SAP Protocol + Temporal Verifier

Chạy ds.py (DeepSeek-V3 decompose subgoals) và main.py (OpenVLA trên LIBERO). Implement Temporal Verifier sliding window — SAP protocol đạt 79.6% LIBERO avg.

15/6/202614 phút đọc
NT
Tutorial
Roadmap 3D manipulation cho humanoid Unitree G1
manipulationhumanoidunitree-g1Phần 7
manipulation

Roadmap 3D manipulation cho humanoid Unitree G1

Bài capstone: ghép Robo3R, DP3, Omni-Manip và WholeBodyVLA thành một pipeline triển khai cụ thể cho Unitree G1 — từ bố trí cảm biến, chọn policy, chọn data, đến checklist sim2real.

14/6/20267 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