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. AXIS: teleop browser và fine-tune π0.5
wholebody-vlaaxispi05vlateleoperationopenpimanipulation

AXIS: teleop browser và fine-tune π0.5

Hướng dẫn AXIS: thu manipulation data bằng browser teleoperation, làm sạch dữ liệu và fine-tune π0.5 với OpenPI.

Nguyễn Anh Tuấn27 tháng 7, 202613 phút đọc
AXIS: teleop browser và fine-tune π0.5

AXIS là một hướng rất thực dụng cho câu hỏi mà nhiều đội robot manipulation đang gặp: làm sao tạo đủ dữ liệu demonstration cho VLA mà không phải mua hàng chục robot thật, dựng lab teleoperation phức tạp, hoặc yêu cầu contributor cài simulator nặng trên máy cá nhân? Paper gốc AXIS: A Growable Community-Driven Data Engine for Scalable Robot Manipulation trả lời bằng một pipeline dữ liệu "growable": task được tạo và validate tự động, người dùng điều khiển Franka trong browser bằng MuJoCo-WASM, backend làm success checking, smoothing, resampling, augmentation bằng IsaacSim, rồi dữ liệu cuối cùng được dùng để continual pretraining và fine-tune VLA như π0.5.

Điểm đáng chú ý không chỉ nằm ở web teleoperation. AXIS biến collection thành một data engine có vòng đời rõ ràng: sinh task, collect, lọc, chuẩn hóa, tăng cường domain, train, evaluate, rồi tiếp tục mở rộng bằng snapshot mới. Theo project page chính thức AXIS-V1, bản paper công bố dataset 207 task và hơn 50K trajectories; project page cũng hiển thị thống kê live lớn hơn vì nền tảng tiếp tục thu dữ liệu sau paper. Dataset controlled-access nằm trên Hugging Face Franka-Dataset, còn repo Axis-V1-Training cung cấp infra để fine-tune OpenPI π0.5 trên dữ liệu AXIS-format LeRobot.

Nếu bạn đã từng làm teleoperation data cho LeRobot, hãy xem AXIS như phiên bản "cloud/browser + benchmark + data cleaning" của cùng ý tưởng. Nếu bạn quan tâm tới π0.5, các bài về online RL cho VLA là nền tốt để hiểu vì sao pretrained model mạnh vẫn cần dữ liệu task-specific. Và nếu mục tiêu dài hạn là xây stack VLA manipulation hoàn chỉnh, hãy so sánh thêm với các hướng fine-grained instruction alignment như FineVLA.

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 →

AXIS dataset overview — nguồn: project page AXIS-V1
AXIS dataset overview — nguồn: project page AXIS-V1

AXIS giải quyết vấn đề gì?

Robot learning phụ thuộc nặng vào demonstration. Với manipulation, demonstration tốt phải có đủ image observation, robot state, object state, action, instruction và nhãn success/failure. Thu trên robot thật thì chính xác nhưng đắt: cần robot, camera, operator, safety zone, calibration và bảo trì. Thu bằng simulator thì rẻ hơn, nhưng nếu task cố định và script quá sạch, policy thường học distribution hẹp. AXIS chọn một điểm ở giữa: browser-based simulation teleoperation cho phép cộng đồng tạo demonstration đa dạng, còn backend chịu trách nhiệm biến dữ liệu thô thành dữ liệu đủ sạch để train policy.

Paper mô tả ba lớp chính. Lớp infrastructure gồm task generation và MuJoCo-WASM teleoperation trong browser. Lớp dataset chuẩn hóa raw demonstration, chạy success validation, lọc episode hỏng, bỏ đoạn idle, smooth trajectory, resample, rồi render/augment lại bằng IsaacSim. Lớp model dùng cùng task definition và success checker để train/evaluate cả imitation learning policy truyền thống lẫn VLA. Đây là điểm khác biệt lớn so với một repo demo đơn lẻ: AXIS cố làm dữ liệu có thể lớn lên mà vẫn giữ protocol đánh giá ổn định.

Một beginner nên hiểu AXIS theo luồng sau:

Task specification
  -> browser teleoperation in MuJoCo-WASM
  -> raw trajectory upload
  -> success checking and filtering
  -> smoothing, resampling, trajectory normalization
  -> IsaacSim visual / physics augmentation
  -> LeRobot-style export
  -> OpenPI π0.5 continual pretraining or fine-tuning
  -> LIBERO-Plus and real-world rollout evaluation

Vì AXIS dùng Franka Research 3 với parallel-jaw gripper, các ví dụ chủ yếu là tabletop manipulation: pick-and-place, stacking, pushing, pouring, articulated-object manipulation và tool use. Mỗi task có language instruction, scene config, asset set và success checker. Điều này rất quan trọng: nếu không có success checker, bạn chỉ có video đẹp; nếu có success checker, bạn có thể tự động reject trajectory thất bại và đo policy bằng cùng tiêu chí.

Kiến trúc dữ liệu của AXIS

AXIS không chỉ lưu video. Một episode cần đủ thông tin để replay, train và debug:

Thành phần Vai trò
Language instruction Prompt cho VLA, ví dụ "pick up the mug and place it on the tray"
Task metadata Task id, scene variant, object asset, simulator version
Robot state Joint position, gripper state, pose hoặc state vector đã chuẩn hóa
Object state Pose/trạng thái vật thể để success checker và replay
Actions Command hoặc target action theo horizon
Third-view RGB-D Camera ngoài để thấy layout toàn scene
Wrist RGB-D Camera gần gripper để thấy contact và grasp
Success label Kết quả validate tự động hoặc nhãn sau filtering

Trong repo training, AXIS export dữ liệu dạng LeRobot-v3 theo từng thư mục task_*_isaac_state_train. Patch OpenPI đọc các task này qua biến AXIS_CLEAN_ROOT. Source state/action được mô tả là vector 9D gồm hai gripper qpos và bảy arm joints, sau đó loader convert online sang interface kiểu DROID: observation/joint_position, observation/gripper_position, image third-view, image wrist, prompt và action. Đây là một quyết định thực dụng: thay vì viết policy mới từ đầu cho AXIS, nhóm tác giả map dữ liệu AXIS vào schema mà OpenPI/π0.5 đã hỗ trợ tốt.

Browser collection workflow của AXIS — nguồn: project page AXIS-V1

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

Bạn không cần clone toàn bộ website AXIS để hiểu pipeline. Có bốn nơi cần biết:

  1. Paper/project page để nắm thiết kế và kết quả.
  2. Hugging Face dataset card để xin quyền truy cập dataset.
  3. Repo Axis-V1-Training để fine-tune OpenPI π0.5.
  4. Repo Physical-Intelligence/openpi để chạy model, policy server và training script.

Môi trường training trong AXIS dùng conda và Python 3.10:

conda env create -f environment.yml
conda activate axis-train-infra
pip install -e .
python -m pytest -q

Sau đó cài OpenPI ở third_party/openpi và apply patch AXIS. README của repo training pin OpenPI ở commit cụ thể để patch khớp:

mkdir -p third_party
git clone https://github.com/physical-intelligence/openpi.git third_party/openpi
cd third_party/openpi
git checkout c23745b5ad24e98f66967ea795a07b2588ed6c79
git apply --check ../../openpi_patches/axis_train_openpi.patch
git apply ../../openpi_patches/axis_train_openpi.patch
uv sync

Nếu bạn chỉ đang đọc để học, không nhất thiết chạy ngay trên full dataset. Hãy dùng chế độ smoke test với rất ít task và sample:

cd /path/to/Axis-V1-Training
export OPENPI_ROOT="$PWD/third_party/openpi"
export AXIS_CLEAN_ROOT="/path/to/axis/lerobot/root"
export OPENPI_AXIS_CLEAN_MAX_TASKS=1
export OPENPI_AXIS_CLEAN_MAX_SAMPLES_PER_TASK=64

Hai biến cuối giúp bạn kiểm tra loader, video decoding và config training trước khi tốn GPU. Với VLA lớn, lỗi thường không nằm ở transformer mà nằm ở path dataset, shape state/action, timestamp video hoặc normalization stats.

Thu dữ liệu bằng browser teleoperation

Ở phía contributor, AXIS cố giữ trải nghiệm nhẹ: mở browser, chọn task, điều khiển robot trong MuJoCo-WASM bằng input device phổ thông, xem feedback simulation, hoàn thành task, upload trajectory. Người điều khiển không cần GPU local hay cài IsaacSim. Đây là lý do AXIS có thể gọi là community-driven: nút thắt không còn là "ai có robot và workstation" mà là "ai có browser và thời gian teleop".

Tuy vậy, beginner không nên hiểu teleoperation là chỉ kéo robot tới đích. Một demonstration tốt cần mượt và có ý định rõ:

  • Bắt đầu từ trạng thái quan sát được, không reset lộn xộn.
  • Di chuyển end-effector theo đường đi ngắn nhưng tránh va chạm.
  • Đóng gripper ở thời điểm có contact hợp lý.
  • Không pause quá lâu giữa các subtask.
  • Không tạo chuyển động giật do đổi hướng liên tục.
  • Kết thúc ở trạng thái success checker có thể xác nhận.

AXIS xử lý một phần lỗi bằng backend: trajectory thô được validate, lọc corruption, bỏ idle segment, smooth và resample. Nhưng dữ liệu đầu vào càng tốt thì policy càng ít học những thói quen xấu. Trong table refinement của project page, raw teleoperation ở 5 Hz có mean jerk cao; sau smoothing và resampling lên 20 Hz, mean acceleration và mean jerk giảm đáng kể, dù replay success giảm từ 100% xuống 86.2%. Đây là tradeoff đáng nhớ: smoothing làm dữ liệu mượt hơn cho learning, nhưng nếu quá mạnh có thể làm lệch thao tác contact-sensitive.

Data cleaning và augmentation

AXIS augmentation diversity — nguồn: project page AXIS-V1
AXIS augmentation diversity — nguồn: project page AXIS-V1

Phần data cleaning là nơi AXIS đáng học nhất cho các đội muốn tự xây pipeline. Raw teleop có nhiều lỗi tự nhiên: operator do dự, camera/frame lệch timestamp, action sampling thấp, gripper rung, episode thiếu file, task thành công nhưng có đoạn đầu thừa, hoặc task thất bại nhưng video vẫn trông hợp lý. Nếu đẩy thẳng vào behavioral cloning, model sẽ học cả thao tác đúng lẫn nhiễu.

AXIS dùng success checker để xác nhận task, sau đó chuyển trajectory về representation thống nhất. Patch training cho thấy loader chọn các thư mục task hợp lệ, đọc meta/info.json, episode parquet, data parquet, video third-person và wrist. Nó downsample frame, tạo action horizon, convert qpos sang DROID-style state/action, rồi tính normalization stats riêng cho AXIS clean data. Các biến debug như OPENPI_AXIS_CLEAN_TASK_IDS, OPENPI_AXIS_CLEAN_MAX_TASKS và OPENPI_AXIS_CLEAN_MAX_SAMPLES_PER_TASK giúp bạn giới hạn phạm vi khi dataset lớn.

Sau cleaning là augmentation. Project page mô tả randomization trên scene, camera, lighting, texture, object pose, friction, mass và dynamics. Appendix của paper ghi rõ rendering dùng IsaacSim/IsaacLab, ray-traced lighting, resolution 256 x 256, camera third-view và wrist camera. Camera randomization không chỉ jitter nhẹ; scene mode và randomization level tạo nhiều bối cảnh USD, vật liệu, ánh sáng và góc nhìn khác nhau. Với VLA, augmentation kiểu này hữu ích vì model cần robust trước camera shift, sensor noise, background và layout khác nhau.

Fine-tune π0.5 với OpenPI

OpenPI cung cấp checkpoint base và fine-tuned cho π0, π0-FAST và π0.5. README OpenPI ghi yêu cầu bộ nhớ tham khảo: inference cần hơn 8 GB VRAM, LoRA fine-tuning cần hơn 22.5 GB, còn full fine-tuning cần hơn 70 GB, thường là A100 80GB hoặc H100. Vì vậy beginner nên bắt đầu bằng LoRA, chạy một task nhỏ, xác nhận loss giảm, rồi mới tăng số task.

Repo AXIS training thêm bốn config chính:

Config Khi dùng
pi05_axis_clean_local_droid_lora Fine-tune LoRA π0.5 trên AXIS-format LeRobot data
pi05_axis_clean_local_droid_full Full/CPT-style fine-tuning trên AXIS
pi05_libero_lora LoRA π0.5 trên LIBERO
pi05_libero Full fine-tuning/post-training trên LIBERO

Lệnh smoke test LoRA:

OPENPI_TRAIN_MODE=overwrite \
bash training/run_train_openpi.sh \
  pi05_axis_clean_local_droid_lora \
  axis_lora_smoke \
  --num-train-steps 100 \
  --checkpoint-base-dir "$PWD/checkpoints"

Khi smoke test ổn, tăng dần:

export OPENPI_AXIS_CLEAN_MAX_TASKS=10
export OPENPI_AXIS_CLEAN_MAX_SAMPLES_PER_TASK=1024

OPENPI_TRAIN_MODE=overwrite \
bash training/run_train_openpi.sh \
  pi05_axis_clean_local_droid_lora \
  axis_lora_v001 \
  --num-train-steps 5000 \
  --checkpoint-base-dir "$PWD/checkpoints"

Với full/CPT-style fine-tuning:

OPENPI_TRAIN_MODE=overwrite \
bash training/run_train_openpi.sh \
  pi05_axis_clean_local_droid_full \
  axis_full_v001 \
  --num-train-steps 20000 \
  --checkpoint-base-dir "$PWD/checkpoints"

Điểm cần hiểu: LoRA freeze phần lớn backbone và chỉ train adapter, nên ít VRAM hơn và ít phá prior ngôn ngữ/thị giác của π0.5. Full/CPT-style mở nhiều tham số hơn, phù hợp khi bạn có data lớn và GPU mạnh, nhưng dễ overfit hoặc làm model quên năng lực generalization nếu recipe sai.

Inference và deployment

Sau training, bạn cần load checkpoint bằng config đúng, kèm normalization assets đúng. Đây là lỗi phổ biến: chỉ copy weights mà quên normalization stats sẽ khiến action scale sai. OpenPI hỗ trợ tạo trained policy và gọi policy.infer(example)["actions"]. Với deployment thật, OpenPI cũng có policy server: model chạy trên GPU server, robot runtime gửi observation qua websocket hoặc RPC tương đương và nhận action chunk.

Luồng inference nên tách ba lớp:

Robot / simulator runtime
  -> collect third-view image, wrist image, robot state, prompt
  -> send observation to policy server
  -> receive short-horizon action chunk
  -> convert to controller command
  -> execute first action or small chunk
  -> repeat at control frequency

π0.5 thường output action chunk ngắn thay vì từng action đơn lẻ. Trong blog Physical Intelligence về π0.5, model có thể dự đoán high-level semantic step bằng text rồi dự đoán low-level motor command dạng chunk. Với AXIS/OpenPI config, action horizon của AXIS π0.5 được đặt 15 trong patch; LIBERO post-training trong appendix paper dùng action horizon 10. Khi deploy, đừng assume mọi checkpoint có cùng horizon, state dimension hoặc action semantics.

AXIS simulated scene diversity — nguồn: project page AXIS-V1
AXIS simulated scene diversity — nguồn: project page AXIS-V1

Kết quả chính

Kết quả headline của AXIS là continual pretraining trên AXIS cải thiện π0.5 trong LIBERO-Plus. Project page báo cáo:

Pretraining Overall LIBERO-Plus success
π0.5 vanilla 83.9
π0.5 + AXIS-25% 84.7
π0.5 + AXIS-50% 85.7
π0.5 + AXIS-100% 88.8
π0.5 + RoboCasa-matched 57.5

So với vanilla π0.5, AXIS-100% tăng overall khoảng 4.9 điểm trên bảng project page; abstract paper diễn giải là cải thiện 5.8% và vượt baseline RoboCasa365-matched 37.3%. Các trục hưởng lợi mạnh gồm sensor noise, camera, robot pose và background. Điều này hợp lý: AXIS không chỉ thêm nhiều trajectory, mà còn thêm camera/lighting/scene perturbation có kiểm soát.

Paper cũng có qualitative real-world rollout trên Franka cho grasping và pick-and-place. Trong real-time inference, policy nhận RGB từ global camera và wrist camera, cộng với continuous robot state, rồi output action chunk cho Franka controller. Đây chưa phải bằng chứng sim-to-real đã được giải quyết hoàn toàn; chính paper cũng nói AXIS hiện tập trung vào simulated Franka tabletop manipulation và sim-to-real vẫn là hướng mở. Nhưng nó cho thấy dữ liệu browser-teleop sau cleaning/augmentation đủ hữu dụng để tạo checkpoint có thể chạy rollout thật.

Checklist cho beginner

Nếu bạn muốn tự thử hướng AXIS mà không bị ngợp, đi theo thứ tự này:

  1. Đọc project page, xem video browser collection và dataset overview.
  2. Xin quyền truy cập dataset trên Hugging Face nếu mục tiêu là research/education non-commercial.
  3. Cài repo Axis-V1-Training, chạy unit test.
  4. Cài OpenPI đúng commit và apply patch.
  5. Set AXIS_CLEAN_ROOT trỏ tới vài task LeRobot-v3 đã tải.
  6. Chạy smoke test với OPENPI_AXIS_CLEAN_MAX_TASKS=1 và OPENPI_AXIS_CLEAN_MAX_SAMPLES_PER_TASK=64.
  7. Kiểm tra video keys, state/action shape, prompt và normalization stats.
  8. Fine-tune LoRA 100-1000 steps trước.
  9. Chỉ tăng dataset/training khi loader và checkpoint save/load đã ổn.
  10. Khi inference, luôn dùng đúng config và normalization assets đi kèm checkpoint.

Những lỗi dễ gặp

Lỗi thứ nhất là nhầm giữa raw teleoperation và training-ready data. AXIS paper nhấn mạnh backend refinement vì raw data nhiều jitter/idle/corruption. Nếu bạn tự collect data browser nhưng bỏ qua filtering, model sẽ học thao tác thiếu mượt.

Lỗi thứ hai là action space không khớp. AXIS source qpos 9D được convert sang DROID-style 8D action. Nếu robot của bạn dùng end-effector pose, joint velocity hoặc delta action khác, bạn phải viết transform tương ứng, không chỉ đổi tên column.

Lỗi thứ ba là thiếu normalization. Với VLA policy, state/action normalization quyết định scale command. Dataset AXIS và LIBERO post-training phải giữ stats riêng.

Lỗi thứ tư là kỳ vọng browser teleoperation thay thế robot thật hoàn toàn. AXIS giúp scale data và pretraining, nhưng deployment thật vẫn cần calibration camera, latency control, safety limit, gripper tuning và evaluation trên task thật.

Bài viết liên quan

  • Thu thập dữ liệu bằng Teleoperation trong Simulation
  • EXPO-FT: RL Online Cho VLA π0.5
  • Chạy FineVLA cho robot dual-arm
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
WEAVER: world model cải thiện π0.5 VLA
weaverworld-modelpi0.5
wholebody-vla

WEAVER: world model cải thiện π0.5 VLA

Hướng dẫn WEAVER: world model đa góc nhìn giúp đánh giá, fine-tune và steer π0.5 VLA manipulation nhanh hơn.

15/6/202611 phút đọc
NT
NEWTutorial
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
NEWTutorial
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
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