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. W²-VLA World-to-Wrist với LeRobot
wholebody-vlaw2-vlaworld-to-wristwristworldlerobotvlachain-of-thoughtmanipulation

W²-VLA World-to-Wrist với LeRobot

Hướng dẫn World-to-Wrist cho VLA: sinh wrist-view, gắn CoT cổ tay, chuẩn bị LeRobot, training và inference policy manipulation.

Nguyễn Anh Tuấn7 tháng 8, 202611 phút đọc
W²-VLA World-to-Wrist với LeRobot

W²-VLA World-to-Wrist là một hướng rất đáng chú ý cho robot manipulation: thay vì chỉ nhìn ảnh third-person và sinh action trực tiếp, policy được bổ sung tín hiệu về wrist view và wrist-focused reasoning để hiểu rõ hơn vùng tiếp xúc giữa gripper, vật thể và môi trường. Với người làm VLA thực chiến, đây là một điểm nối tự nhiên giữa ba dòng nghiên cứu đang chạy song song: world model sinh quan sát tương lai, visual chain-of-thought cho robot, và format dữ liệu LeRobot có thể train/deploy lặp lại.

Nguồn chính của bài gồm WristWorld arXiv 2510.07313, project page WristWorld, GitHub XuWuLingYu/WristWorld, dataset yuuu94/W2-VLA-Training-Data, annotation yuuu94/W2-VLA-CoT, và LeRobot. Tại thời điểm viết bài, release W2-VLA công khai nằm ở dạng dataset/annotation trên Hugging Face; repo WristWorld là phần world-to-wrist generation có code inference, weights, stage reconstruction và stage generation.

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 →

Nếu bạn mới vào VLA, nên đọc trước LeRobot ecosystem guide, fine-tune VLA với LeRobot, và InternVLA-A1.5 latent foresight. Bài này giả định bạn đã hiểu dataset robot gồm observation, instruction, state và action, nhưng sẽ giải thích lại các bước đủ chậm để beginner có thể follow.

Ý tưởng: từ world view tới wrist intent

Trong manipulation, camera ngoài giúp robot thấy bố cục toàn cảnh: vật ở đâu, tay robot đang ở phía nào, mục tiêu là ngăn kéo, cốc, phích cắm hay khăn lau. Nhưng khi robot đến gần vật thể, điều quyết định thành bại thường nằm trong vài centimet quanh gripper: mép cốc đã lọt vào kẹp chưa, plug có thẳng với socket không, khăn có bị gấp lại không, vật thể có trượt khỏi ngón tay không. Đây là lý do wrist camera thường cải thiện chính xác thao tác, đặc biệt ở grasping, insertion, wiping và bimanual manipulation.

Vấn đề là wrist-view data đắt hơn third-person data. Bạn cần gắn camera trên cổ tay, calibrate extrinsics, chống rung, đồng bộ frame, và quản lý occlusion từ chính gripper. Nhiều dataset robot lớn có anchor view phong phú nhưng thiếu wrist view hoặc chỉ có wrist view ở một phần nhỏ. World-to-Wrist đặt câu hỏi ngược lại: nếu đã có video từ camera ngoài, có thể học một world model sinh ra quan sát cổ tay hợp lý không? Nếu sinh được wrist-view tương lai hoặc wrist-view proxy, VLA có thêm tín hiệu gần vùng tiếp xúc mà không phải thu lại toàn bộ data.

WristWorld trả lời bằng một pipeline hai stage. Stage 1 là Reconstruction: mở rộng VGGT bằng wrist head để ước lượng wrist-view pose và 4D point cloud nhất quán theo thời gian. Paper thêm Spatial Projection Consistency (SPC) loss để ép hình chiếu 2D khớp với hình học 3D/4D được dựng lại. Stage 2 là Generation: một video generator kiểu diffusion transformer sinh wrist-view video, được condition bởi wrist-view projection và semantic feature từ anchor view qua CLIP. Quan trọng: model không cần frame wrist đầu tiên; nó sinh wrist view từ anchor views.

Kiến trúc WristWorld gồm reconstruction, wrist projection và video generation - nguồn: project page WristWorld
Kiến trúc WristWorld gồm reconstruction, wrist projection và video generation - nguồn: project page WristWorld

Với W²-VLA trong bài này, ta dùng WristWorld như nền tảng world-to-wrist visual prior, rồi dùng release W2-VLA-CoT như lớp wrist-focused textual supervision. Mỗi frame có text dạng Subtask, Reasoning, Wrist. Ví dụ trong task plug_in_socket, một frame có thể ghi: subtask là left gripper đang tiến tới socket board, reasoning là tay trái cần giữ board trước khi tay phải cắm plug, và wrist focus là left=closed gripper approaching socket board; right=keeps still. Đây là dạng supervision đơn giản nhưng hữu dụng: policy không chỉ học action, mà học cách chú ý đúng cổ tay, đúng tay, đúng giai đoạn.

Kiến trúc thực dụng cho W²-VLA

Một implementation W²-VLA với LeRobot có thể tách thành bốn khối. Khối đầu tiên là observation encoder, thường gồm RGB encoder cho camera ngoài, wrist camera nếu có, proprioception encoder cho joint/TCP/gripper state, và text encoder cho instruction. Nếu bạn dùng SmolVLA, OpenVLA-style model hoặc policy nội bộ, phần này có thể là VLM backbone hoặc một vision transformer nhỏ hơn.

Khối thứ hai là world-to-wrist module. Nếu bạn dùng WristWorld đúng nghĩa, module này nhận anchor-view frames, dựng wrist pose/projection, rồi sinh wrist-view video. Trong training, bạn có thể lưu generated wrist video thành một camera stream phụ trong LeRobot hoặc chỉ dùng latent/feature từ video generator làm auxiliary target. Nếu không muốn chạy video generator nặng ở mỗi epoch, cách thực dụng là precompute wrist-view assets một lần rồi train policy trên dữ liệu đã mở rộng.

Khối thứ ba là wrist CoT head. Dataset W2-VLA-CoT không chỉ có một chuỗi mô tả task cấp episode; nó có annotation theo frame với các trường cot_train_text, cot_subtask, cot_reasoning, cot_wrist_focus. Bạn có thể train model sinh text này như auxiliary language loss, hoặc encode text thành embedding và dùng làm conditioning cho action head. Với beginner, bắt đầu bằng auxiliary loss dễ debug hơn: đưa observation + instruction vào model, yêu cầu model dự đoán cot_train_text, đồng thời action head dự đoán action chunk.

Khối thứ tư là action head. Với LeRobot, action thường là vector liên tục: delta end-effector pose, joint target, gripper command hoặc action layout riêng của robot. Bạn có thể dùng diffusion policy, flow matching, ACT-style chunking hoặc simple MLP head tùy policy. Điều quan trọng là action head không nên chỉ thấy global scene; nó cần nhận wrist-aware feature hoặc wrist CoT token để phân biệt các pha rất gần nhau như "approach socket", "align plug", "insert", "hold", "retract".

anchor camera + optional wrist camera + robot state + instruction
        |
        v
VLM / visual encoder
        |
        |----> world-to-wrist feature hoặc generated wrist stream
        |
        |----> wrist CoT auxiliary head: Subtask / Reasoning / Wrist
        |
        v
action head: action chunk hoặc next action

Dữ liệu: W2-VLA Training Data và CoT labels

Release W2-VLA-Training-Data có format LeRobot mở rộng sẵn, gồm meta, data, và videos. Tổng cộng có 58 dataset/task group, 4.573 episodes, và 1.043.400 frames. Chia theo nguồn: LIBERO có 4 suite với 1.693 episodes và 273.465 frames; RoboTwin có 50 task với 2.500 episodes và 549.787 frames; real-world có 4 task gồm place_bag, put_mango, table_clean, plug_in_socket với 380 episodes và 220.148 frames.

Release W2-VLA-CoT chứa annotation .npz frame-aligned, không chứa video/action để tránh nhân đôi dữ liệu. Schema công khai gồm:

schema_version
episode_index
num_frames
task
task_description
task_name
cot_train_text
cot_subtask
cot_reasoning
cot_wrist_focus

Trong mỗi episode, bốn array CoT có độ dài bằng num_frames. Đây là chi tiết quan trọng khi train: bạn không align text ở cấp episode, mà align theo timestep. Với action chunk dài 10 hoặc 50 step, bạn có thể lấy CoT tại frame hiện tại làm prompt, hoặc lấy một window CoT gần tương lai làm target phụ. Cách thứ hai gần hơn với ý tưởng "dự đoán latent cổ tay tương lai": model học biểu diễn giai đoạn cổ tay sắp tới, không chỉ mô tả frame hiện tại.

Wrist camera real-world plug_in_socket episode 000000 - nguồn: Hugging Face yuuu94/W2-VLA-Training-Data

Cài đặt môi trường

Bạn có hai phần cần cài: WristWorld để sinh wrist-view, và LeRobot/VLA stack để train policy. Với WristWorld, repo tách stage 1 và stage 2. Stage 1 reconstruction dựa vào VGGT training branch; stage 2 generation dựa vào DiffSynth Studio và checkpoint WristWorld.

git clone https://github.com/XuWuLingYu/WristWorld.git
cd WristWorld

# Stage 1 cần VGGT training setup
sudo apt-get update
sudo apt-get install -y libgl1

# Stage 2 requirements chính
pip install torch torchvision
pip install cupy-cuda12x transformers==4.46.2 controlnet-aux==0.0.7
pip install imageio "imageio[ffmpeg]" safetensors einops sentencepiece protobuf modelscope ftfy

Tải checkpoint WristWorld từ Hugging Face vào thư mục checkpoints/:

checkpoints/
├─ BaseModel/
├─ VGGT/
├─ VideoModel/
└─ README.md

Lệnh inference stage 2 trong repo có dạng:

python examples/wanvideo/rgb_ext_to_gen_video_droid.py \
  --input_root ../examples/ \
  --vggt_checkpoint ../checkpoints/VGGT/checkpoint.pt \
  --image_encoder_path /path/to/Wan2.1/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth \
  --text_encoder_path /path/to/Wan2.1/models_t5_umt5-xxl-enc-bf16.pth \
  --vae_path /path/to/Wan2.1/Wan2.1_VAE.pth \
  --pretrained_lora_path ../checkpoints/VideoModel/video_dit_lora.safetensors \
  --gpus 0

Cho LeRobot, bạn có thể tạo môi trường riêng:

conda create -n w2vla python=3.10 -y
conda activate w2vla
pip install -U "lerobot[all]" datasets huggingface_hub
pip install torch torchvision transformers accelerate einops opencv-python

Tải dữ liệu:

hf download yuuu94/W2-VLA-Training-Data \
  --repo-type dataset \
  --local-dir playground/Datasets/W2-VLA-Training-Data

hf download yuuu94/W2-VLA-CoT \
  --repo-type dataset \
  --local-dir playground/Datasets/W2-VLA-CoT

Cấu hình root nên giữ song song:

LIBERO action:     W2-VLA-Training-Data/libero
LIBERO CoT:        W2-VLA-CoT/libero
RoboTwin action:   W2-VLA-Training-Data/robotwin
RoboTwin CoT:      W2-VLA-CoT/robotwin
Real-world action: W2-VLA-Training-Data/real_world
Real-world CoT:    W2-VLA-CoT/real_world

Training recipe cho beginner

Bước 1 là kiểm tra dataset trước khi train. Mở meta/info.json, vài file parquet trong data/chunk-000, và video trong videos/chunk-000. Với real-world task, bạn sẽ thấy camera như cam_high, cam_left_wrist, cam_right_wrist. Với LIBERO, thường có observation.images.image và observation.images.wrist_image. Đừng bắt đầu training nếu số frame action, số frame video và num_frames trong CoT không khớp.

Bước 2 là tạo dataset wrapper trả về một sample đầy đủ:

sample = {
    "observation": {
        "image": image_t,
        "wrist_image": wrist_image_t,
        "state": state_t,
    },
    "instruction": task_text,
    "cot_text": cot_train_text[t],
    "cot_wrist": cot_wrist_focus[t],
    "action": action_t_to_t_plus_h,
}

Bước 3 là chọn loss. Một cấu hình đơn giản:

L = L_action
  + 0.1 * L_cot_text
  + 0.05 * L_wrist_focus
  + optional L_wrist_latent

L_action là loss chính, ví dụ MSE với action liên tục, diffusion loss hoặc flow matching loss. L_cot_text dạy model dự đoán chuỗi Subtask/Reasoning/Wrist. L_wrist_focus có thể là classification hoặc language loss rút gọn cho tay trái/tay phải/giai đoạn. L_wrist_latent chỉ dùng nếu bạn đã precompute feature từ WristWorld hoặc video encoder.

Bước 4 là train nhỏ trước. Hãy lấy một real-world task như plug_in_socket, train 5-10 epochs trên vài chục episode, rồi chạy open-loop visualization. Mục tiêu ban đầu không phải đạt SOTA, mà là xác nhận policy không lệch action scale, CoT target align đúng frame, và wrist stream không bị tráo trái/phải.

Inference và deploy

Ở inference thật, không nhất thiết chạy toàn bộ WristWorld online. Với robot lab nhỏ, cách an toàn nhất là dùng wrist camera thật nếu có, hoặc dùng WristWorld offline để augment training. Policy runtime chỉ nhận observation hiện tại, instruction và state, sau đó sinh action chunk. Nếu bạn vẫn muốn dùng world-to-wrist online, hãy chạy nó ở tần số thấp như planner phụ, không nằm trong servo loop.

Một loop triển khai tối thiểu:

while True:
    obs = robot.get_observation()
    batch = preprocess(obs, instruction)
    action_chunk, aux = policy.select_action(batch)
    for action in action_chunk[:execute_horizon]:
        robot.send_action(action)
        if safety_stop():
            robot.stop()
            break

Khi debug, hãy log thêm cot_wrist_focus dự đoán. Nếu task cắm socket thất bại, bạn cần biết model đang "nghĩ" tay phải nên align plug hay vẫn đang ở pha approach. Chính log này làm W²-VLA dễ phân tích hơn policy đen hoàn toàn.

Kết quả và ý nghĩa

WristWorld báo cáo kết quả trên DROID, Calvin và Franka Panda: video generation có spatial consistency tốt hơn, và khi dùng cho downstream VLA trên Calvin, average task completion length tăng 3,81%, đồng thời đóng 42,4% khoảng cách giữa anchor-only và anchor+wrist. Đây không phải lời hứa rằng mọi W²-VLA nhỏ sẽ tự động tăng đúng con số đó; nó là bằng chứng rằng wrist-view generation có thể cải thiện policy khi điểm nghẽn là thiếu quan sát gần cổ tay.

Kết quả định lượng và cải thiện VLA của WristWorld - nguồn: project page WristWorld
Kết quả định lượng và cải thiện VLA của WristWorld - nguồn: project page WristWorld

Demo tổng quan WristWorld: sinh wrist-view từ anchor views - nguồn: project page WristWorld

Về phía W2-VLA dataset, kết quả quan trọng là một release có thể train được: hơn một triệu frame, 58 task group, video/action dạng LeRobot và annotation CoT frame-aligned. Với đội nhỏ, giá trị lớn nhất không nằm ở việc clone toàn bộ model paper, mà là học cách tổ chức dữ liệu để policy thấy được ba thứ cùng lúc: thế giới bên ngoài, cổ tay gần vùng tiếp xúc, và reasoning ngắn gọn về giai đoạn thao tác.

Lỗi thường gặp

Lỗi đầu tiên là nhầm World-to-Wrist với một camera augmentation đơn giản. Nếu chỉ thêm wrist camera nhưng không align timestep/action, model sẽ học nhiễu. Hãy kiểm tra từng episode bằng viewer trước khi train dài.

Lỗi thứ hai là để CoT quá dài. Robot policy không cần một đoạn văn. Format tốt là Subtask, Reasoning, Wrist ngắn, ổn định, lặp lại được. Nếu text thay đổi phong cách liên tục, loss phụ có thể làm training nhiễu.

Lỗi thứ ba là deploy generator nặng trong control loop. Video generator có ích cho precompute, visualization và auxiliary supervision; servo loop cần latency thấp và safety rõ ràng.

Lỗi cuối cùng là đánh giá bằng loss thay vì rollout. W²-VLA là manipulation policy, nên bạn phải đo success, completion length, contact failure, recovery sau lệch pose, và số lần cần human reset.

Bài viết liên quan

  • LeRobot ecosystem guide
  • Fine-tune VLA với LeRobot
  • DREAM-Chunk cho VLA robot
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

Tutorial
Pelican-VLA 0.5 trên LeRobot 3.0
pelican-vlalerobotvla
wholebody-vla

Pelican-VLA 0.5 trên LeRobot 3.0

Hướng dẫn chạy Pelican-VLA 0.5, hiểu Bottleneck Token, chuẩn bị LeRobot 3.0, training, inference và đọc kết quả RoboTwin.

29/7/202616 phút đọc
NT
Tutorial
Fine-tune InternVLA-A1.5 với LeRobot
internvla-a1.5lerobotvla
wholebody-vla

Fine-tune InternVLA-A1.5 với LeRobot

Hướng dẫn cài đặt, fine-tune và inference InternVLA-A1.5 trên LeRobot, với latent foresight cho manipulation VLA.

22/7/202614 phút đọc
NT
Nghiên cứu
Hướng dẫn InternVLA-A1: VLA + World Model qua Mixture-of-Transformers
vlaworld-modelmixture-of-transformers
wholebody-vla

Hướng dẫn InternVLA-A1: VLA + World Model qua Mixture-of-Transformers

InternVLA-A1 hợp nhất hiểu ngữ nghĩa, dự đoán tương lai và ra lệnh hành động trong một kiến trúc Mixture-of-Transformers duy nhất — đánh bại π0.5 trên cả benchmark tĩnh lẫn động.

1/7/202610 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