VnRoboVnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logoVnRobo 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
VnRoboVnRobo
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. TrajBooster: Chuyển trajectory 6D sang whole-body VLA
wholebody-vlawholebody-vlavlawhole-bodygrootunitree-g1cross-embodimenttrajectory-retargetingimitation-learning

TrajBooster: Chuyển trajectory 6D sang whole-body VLA

Học cách chuyển dữ liệu Agibot sang Unitree G1 bằng trajectory 6D, retargeting, GR00T N1.5 và fine-tune với ít dữ liệu robot đích.

Nguyễn Anh Tuấn8 tháng 10, 202615 phút đọc
TrajBooster: Chuyển trajectory 6D sang whole-body VLA

Một robot có bánh xe đã học nhặt đồ ở nhiều độ cao. Bạn vừa có một humanoid hai chân, nhưng chỉ thu được vài phút demonstration. Có cách nào tận dụng dữ liệu cũ mà không ép robot mới bắt chước từng góc khớp của robot cũ?

TrajBooster chọn trajectory 6D của hai cổ tay làm giao diện chuyển giao. Hệ thống đưa trajectory qua simulation để tạo action tương thích với Unitree G1, dùng chúng để bổ sung training cho VLA, rồi fine-tune bằng dữ liệu robot thật. Điểm đáng học là cách tạo nhãn action mới từ dữ liệu khác embodiment, chứ không chỉ cách chạy teleop.

Bài viết tập trung vào paper TrajBooster bản v3, ngày 19/03/2026, dự án được repo công bố là đã được nhận tại ICRA 2026, và code chính thức OpenHelix-Team/OpenTrajBooster. Phiên bản đầu xuất hiện năm 2025; đây không phải một paper vừa công bố trong tháng 10. Góc phân tích ở đây là trajectory transfer và kiểm tra hợp đồng dữ liệu, bổ sung cho hướng dẫn teleop đã có trên blog.

1. Vì sao không copy joint positions giữa hai robot?

Hãy tưởng tượng hai người có chiều dài tay khác nhau cùng lấy một chiếc cốc. Cả hai đều muốn đưa bàn tay đến cốc, nhưng góc vai và khuỷu tay không giống nhau. Với robot, sự khác biệt còn lớn hơn: số khớp, giới hạn khớp, hệ tọa độ, vị trí camera và cách giữ thăng bằng đều có thể khác.

Embodiment là tập hợp đặc điểm cơ thể và giao diện điều khiển đó. Cross-embodiment learning cố gắng chuyển kỹ năng giữa các embodiment. Nếu xem một vector action đơn thuần là danh sách số mà bỏ qua ý nghĩa từng chiều, model có thể học sai dù loss giảm rất đẹp.

Một pose 6D gồm vị trí 3D và orientation 3D. “6D” ở đây nói về bậc tự do của pose; dữ liệu orientation có thể lưu bằng quaternion bốn số hoặc rotation matrix chín số. Đừng suy luận rằng mỗi pose luôn được lưu trong đúng sáu ô của tensor.

TrajBooster sử dụng đường đi của hai end-effector để biểu diễn mục tiêu thao tác. Robot nguồn và robot đích có thể cùng cố đưa tay tới một vùng trong không gian, trong khi tự chọn cấu hình cơ thể phù hợp. Trajectory cũng chứa thứ tự thời gian: đưa tay tới, khép bàn tay, nhấc vật, rồi chuyển vật. Một pose đơn lẻ không đủ mô tả kỹ năng này.

Nếu bạn muốn thử training pipeline trong bài, phần tốn công thường nằm ở GPU, dataset và kiểm tra action schema trước khi mua thêm hardware.

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 →

2. Pipeline real-to-sim-to-real

Pipeline có ba đoạn, nhưng mỗi đoạn xử lý một loại khoảng cách khác nhau:

text
Agibot-World: camera + language + wrist trajectories
                         |
              Chuẩn hóa workspace nguồn
                         |
        Retargeting trong Isaac Gym trên Unitree G1
                         |
   Camera nguồn + language nguồn + action robot đích
                         |
          Post-pre-training GR00T N1.5
                         |
   Fine-tune bằng camera/action từ Unitree G1 thật
                         |
       VLA + worker policy -> thao tác whole-body

TrajBooster real-to-sim: trajectory cổ tay và các góc nhìn robot nguồn, robot đích mô phỏng — nguồn: paper TrajBooster, Figure 5
TrajBooster real-to-sim: trajectory cổ tay và các góc nhìn robot nguồn, robot đích mô phỏng — nguồn: paper TrajBooster, Figure 5

Đoạn đầu xử lý khác biệt kinematics. Đoạn thứ hai tạo dữ liệu để model làm quen với action space mới. Đoạn cuối điều chỉnh policy cho camera và trạng thái của robot thật. Đây là lý do không nên gọi toàn bộ dữ liệu bổ sung là “demonstration G1 thật”: action được sinh cho G1, nhưng ảnh vẫn đến từ robot nguồn.

Paper gọi những mẫu này là heterogeneous triplets: source vision, source language, target action. Đây là một lựa chọn thực dụng, nhưng có visual mismatch. Model thấy tay hoặc camera của Agibot trong ảnh, trong khi được yêu cầu dự đoán action G1. Fine-tune robot đích giúp xử lý khoảng cách này, nhưng không chứng minh nó biến mất hoàn toàn.

3. Đưa trajectory vào workspace của G1

Theo phần III-A của paper, Agibot có sải tay khoảng 1,8 m, còn Unitree G1 khoảng 1,2 m. Truyền thẳng trajectory rộng của robot nguồn sang G1 có thể tạo mục tiêu không với tới được.

Nhóm tác giả xử lý từng trục: căn chỉnh trục x bằng thống kê z-score tham chiếu dữ liệu G1, scale trục y với hệ số 0,6667 tương ứng tỷ lệ chiều dài tay, và clip trục z trong khoảng 0,15–1,25 m. Những số này thuộc cấu hình nghiên cứu; không phải giới hạn an toàn phổ quát cho mọi humanoid.

Với người mới, nên hiểu thao tác này như việc đổi kích thước bản vẽ trước khi giao cho người thợ. Nếu chỉ sửa đơn vị mà không sửa phạm vi làm việc, các điểm ở xa vẫn không khả thi. Nếu chỉ scale mà quên orientation hoặc hệ quy chiếu, đường đi có thể bị xoay sai.

Trước khi tạo một dataset mới, hãy vẽ một episode ngắn. Kiểm tra vị trí cổ tay theo trục x, y, z; phân biệt world frame và base frame; xác nhận mét và radian; kiểm tra dấu quay trái/phải. Đối chiếu với một chuyển động nhỏ có kết quả dễ đoán. Đây là khuyến nghị triển khai của bài viết, không phải thí nghiệm bổ sung của tác giả.

4. Kiến trúc retargeting: arm, manager và worker

Retargeting không đơn thuần giải inverse kinematics cho hai tay. Khi mục tiêu nằm thấp, G1 cần hạ cơ thể; khi tay vươn ra, chân phải phản ứng với thay đổi tải và tư thế.

Thành phần Công việc Đầu ra chính
Arm policy Closed-loop inverse kinematics bằng Pinocchio Target joint positions của tay
Manager policy Chọn chuyển động base dựa trên wrist goals vx, vy, yaw rate, torso height
Worker policy Thực hiện lệnh base và giữ vận động ổn định Target joint positions cho 12 khớp chân

Worker được huấn luyện bằng RL theo hướng Homie, có curriculum tăng dần nhiễu từ chuyển động upper body. README cũng mô tả bổ sung locomotion khi cơ thể ở tư thế semi-crouched. Nhờ đó, worker không chỉ học bước đi với hai tay bất động.

Manager học bằng heuristic-enhanced harmonized online DAgger. DAgger giải quyết một vấn đề dễ hình dung: policy chạy sẽ gặp trạng thái khác với trạng thái trong demonstration. Nếu chỉ học trên trạng thái của expert, policy có thể không biết tự sửa khi lệch đường. DAgger lấy thêm nhãn ở những trạng thái policy thực sự ghé qua.

Trong TrajBooster, nhãn manager đến từ heuristic và privileged information trong simulation. Nhóm tác giả dùng seed trajectories, tạo biến thiên độ cao bằng PCHIP, rồi huấn luyện manager trên rollout. Dữ liệu mới được đưa vào tập tích lũy mỗi 10 iteration để cân bằng chi phí lưu trữ và khả năng nhớ dữ liệu cũ. Privileged information này không phải tín hiệu mà VLA sẽ có sẵn khi chạy robot thật. Xem README retargeting để phân biệt hai module worker và manager.

5. VLA dự đoán gì khi robot chạy thật?

VLA nền là GR00T N1.5, được bổ sung data configuration cho OpenWBC. Nó nhận ảnh, language instruction và proprioception, tức trạng thái khớp của robot. Action head dùng flow matching để sinh action chunk liên tục.

Có thể hình dung flow matching như học cách biến một chuỗi action nhiễu thành chuỗi có cấu trúc dưới điều kiện ảnh và câu lệnh. Model không phải viết một kế hoạch bằng văn bản rồi mới điều khiển robot. Nó dự đoán action thông qua quá trình sinh liên tục đã học.

Theo paper, inference sinh chunk 16 timestep ở 20 Hz với bốn denoising step. Chunk tương ứng 0,8 giây nếu thực hiện toàn bộ tuần tự. Tuy nhiên, chunk horizon không tự cho biết client có thực thi hết chunk trước khi quan sát lại hay không; cần đọc vòng lặp deployment để xác định chính xác.

VLA xuất joint targets cho tay và bàn tay, cùng bốn lệnh base. Worker biến lệnh base thành chuyển động chân. Vì vậy, “whole-body VLA” ở đây là một hệ thống phối hợp toàn thân với controller phân cấp. VLA không trực tiếp xuất torque cho mọi actuator.

6. Cài đặt: bắt đầu từ offline, tách môi trường

Các lệnh bên dưới là hướng dẫn thích nghi từ repo, chưa được chạy training hoặc kiểm chứng trên robot trong bài viết này. Đường dẫn dataset và checkpoint là ví dụ cần thay bằng dữ liệu của bạn.

Repo có nhiều môi trường khác nhau. Retargeting dùng Isaac Gym Preview 4 và Python 3.8 trên Ubuntu 20.04/22.04 theo README. Nhánh VLA khuyến nghị Python 3.10 và CUDA 12.4 trong tài liệu GR00T đi kèm. Đừng cài tất cả vào một environment rồi mong dependency tự tương thích.

Tải archive từ trang GitHub chính thức, giải nén và đổi tên thư mục thành OpenTrajBooster. Sau đó tạo environment cho VLA:

bash
cd OpenTrajBooster/VLA_model/gr00t_modified_for_OpenWBC
conda create -n trajbooster-vla python=3.10
conda activate trajbooster-vla
pip install --upgrade setuptools
pip install -e '.[base]'
pip install --no-build-isolation flash-attn==2.7.1.post4
python scripts/gr00t_finetune.py --help

Hãy kiểm tra driver, PyTorch và CUDA trước khi xử lý lỗi FlashAttention. Nếu lỗi import xuất hiện ngay ở bước đọc --help, chưa cần tải toàn bộ dataset. README chỉ ra một lỗi OpenCV cụ thể liên quan CV_8U; chỉ áp dụng cách sửa tương ứng khi thực sự gặp lỗi đó.

Bạn có thể bắt đầu bằng PPT checkpoint, thay vì tự chạy lại post-pre-training. Repo còn cung cấp dataset Agibot→G1 retargeted. README ước lượng dataset khoảng 30 GB và model khoảng 6 GB; dung lượng thực tải còn phụ thuộc revision và file bạn chọn.

7. Chuẩn bị dữ liệu: 40 chiều state, 32 chiều action

Đây là bước quan trọng nhất để beginner không train nhầm. File modality.json của converter định nghĩa:

Nhóm State thô Action
Tay trái + tay phải 14 14
Bàn tay trái + bàn tay phải 14 14
Chân trái + chân phải 12 0
Base motion 0 4
Tổng 40 32

Model được quan sát trạng thái chân, nhưng không trực tiếp dự đoán 12 joint targets của chân. Bốn chiều cuối của action là lệnh cho worker, không phải bốn góc khớp bổ sung. State thô cũng có thể được biến đổi trước khi vào model; không đồng nhất chiều dataset với chiều feature sau preprocessing.

Config openwbc_g1 dùng ba video stream: ego_view, wrist_left, wrist_right. Nó lấy một observation hiện tại và 16 future actions. Kiểm tra thứ tự camera, tên annotation và modality mapping trước khi train.

Lệnh three-view converter trong README gốc:

bash
cd OpenTrajBooster/OpenWBC_to_Lerobot
python convert_3views_to_lerobot.py \
  --input_dir /data/g1_raw \
  --output_dir /data/g1_lerobot \
  --dataset_name pick_toy \
  --robot_type g1 \
  --fps 30

Tài liệu converter cũng có ví dụ single-view với convert_to_lerobot.py. Không tráo hai lệnh nếu dataset của bạn có ba camera. FPS 30 trong ví dụ chuyển đổi và 20 Hz trong inference cũng cần được xử lý rõ ở pipeline thời gian: chúng không tự động đồng nghĩa với cùng một khoảng cách thời gian giữa các action.

Trước một run dài, đọc vài frame liên tiếp để kiểm tra ảnh có đúng thời điểm action hay không, tay trái có bị đổi với tay phải không và language có mô tả đúng task không. Chia train/validation theo episode để tránh các frame liền kề của cùng demonstration xuất hiện ở cả hai tập.

8. Training: PPT trước, fine-tune robot đích sau

Paper dùng 1.960 episode từ 176 task, tương đương khoảng 35 giờ dữ liệu retargeted. PPT chạy 60.000 step trên hai A100 80 GB với batch size 128. Fine-tune robot đích dùng khoảng 10 phút, gồm 28 episode, trên một A100 với batch size 16 và 3.000 step. Các con số này là cấu hình nghiên cứu, không phải yêu cầu tối thiểu cho mọi thử nghiệm.

Đây là cách diễn giải đúng câu “chỉ cần 10 phút dữ liệu”: 10 phút là dữ liệu target-domain bổ sung, phía trước vẫn có pretrained model, dữ liệu nguồn, retargeting và GPU training. Đừng dùng con số này để dự toán toàn bộ dự án.

Ví dụ fine-tune bắt đầu từ checkpoint PPT đã tải về, với flag dựa trên hướng dẫn VLA của repo:

bash
cd OpenTrajBooster/VLA_model/gr00t_modified_for_OpenWBC
python scripts/gr00t_finetune.py \
  --base-model-path /models/PPTmodel4UnitreeG1 \
  --dataset-path /data/g1_lerobot \
  --output-dir ./save/pick_toy_ppt \
  --data-config openwbc_g1 \
  --embodiment-tag new_embodiment \
  --num-gpus 1 \
  --batch-size 16 \
  --max_steps 3000 \
  --report-to tensorboard

Không nên xem đây là reproduction đầy đủ chỉ vì số step giống paper. Bạn còn phải khớp dataset split, camera, normalization, module được freeze và revision code. Hãy bắt đầu bằng một run ngắn để xác nhận checkpoint được lưu và model đọc đúng modality, rồi mới tăng thời lượng.

9. Kết quả: lợi ích có thật, phạm vi cần đọc kỹ

Bốn task đánh giá TrajBooster ở các độ cao thao tác khác nhau — nguồn: paper TrajBooster, Figure 6
Bốn task đánh giá TrajBooster ở các độ cao thao tác khác nhau — nguồn: paper TrajBooster, Figure 6

Table II báo cáo 10 lần thử cho mỗi task. Dưới đây chỉ lấy full success, tách khỏi partial success:

Task Có PPT + 3K step Không PPT + 3K step Không PPT + 10K step
Pick Mickey Mouse 100% 0% 80%
Store Toys 70% 0% 30%
Clean the Table 70% 0% 70%
Pick Orange & Place 10% 0% 0%

Task cuối cho thấy giới hạn đáng chú ý: model có PPT thêm 50% trường hợp gắp được nhưng đặt thất bại. Không được cộng con số đó thành 60% hoàn thành task. Với 10 trial, mỗi lần thành công tương ứng 10 điểm phần trăm; đây là đánh giá quy mô nhỏ.

Khi đổi vị trí đồ chơi sang vị trí chưa có trong teleop, có PPT đạt 80%, còn baseline không PPT 10K step đạt 0% trong Table III. Tác giả phân tích trajectory để cho thấy baseline có xu hướng lặp lại đường đi đã thấy, trong khi model PPT thay đổi cách tiếp cận vật.

Đường loss so sánh các cách thích nghi action space trong TrajBooster — nguồn: project page TrajBooster
Đường loss so sánh các cách thích nghi action space trong TrajBooster — nguồn: project page TrajBooster

Loss thấp giúp theo dõi training nhưng không thay thế success rate. Một model dự đoán đường đi gần demonstration có thể vẫn thất bại nếu đồ vật bị dịch sang bên. Vì vậy, đánh giá nên có cả task success, vị trí ngoài phân phối và failure breakdown.

Demo “Pass the Water” là zero-shot đối với teleop task trên robot đích: task đã xuất hiện trong dữ liệu PPT, nhưng không có trong tập fine-tune G1. Nó không phải kỹ năng mà model chưa từng thấy dưới bất kỳ hình thức nào.

10. Inference và các kiểm tra trước deployment

Trước khi nối actuator, chạy offline evaluation bằng dataset đã tách riêng:

bash
python scripts/eval_policy.py \
  --plot \
  --model_path ./save/pick_toy_ppt/checkpoint-3000 \
  --dataset-path /data/g1_validation \
  --embodiment-tag new_embodiment \
  --data-config openwbc_g1 \
  --modality-keys base_motion left_hand right_hand

Kiểm tra amplitude và độ mượt của base commands, độ cao yêu cầu, nhãn tay và các đoạn action đột biến. MSE trung bình có thể che một spike ngắn gây hành vi xấu. Dữ liệu validation cần cùng schema với train nhưng có episode độc lập.

Deployment thực cần image server, HomieDeploy, Unitree SDK2 và cấu hình mạng phù hợp. Sau khi low-level stack đã được kiểm tra riêng, lệnh VLA trong repo có dạng:

bash
python scripts/G1_inference.py \
  --arm=G1_29 \
  --hand=dex3 \
  --model-path ./save/pick_toy_ppt/checkpoint-3000 \
  --goal pick_toy \
  --frequency 20 \
  --vis \
  --filt

README yêu cầu tư thế ban đầu không lệch quá xa dữ liệu teleop và khuyến nghị 20 Hz. Bắt đầu bằng quan sát output offline, kiểm tra controller trong simulation, rồi mới làm thử nghiệm thật có giám sát và cơ chế dừng phù hợp. Đừng cho rằng --filt thay thế mọi kiểm tra controller.

Một thử nghiệm nhỏ đáng làm là giữ nguyên tập teleop, chạy hai model có và không có PPT, rồi thử ở vị trí đồ vật mới. Cách này kiểm tra trực tiếp giả thuyết transfer thay vì chỉ nhìn loss. Ghi cả thất bại nhận diện, gắp, đặt và ổn định cơ thể để biết nên sửa perception, dataset hay worker.

TrajBooster đáng nghiên cứu vì biến dữ liệu khác robot thành bước đệm cho whole-body VLA. Nhưng paper vẫn nêu hạn chế về dexterous hands, visual mismatch, dữ liệu loco-manipulation và quy mô đánh giá. Bắt đầu với mục tiêu hẹp như gắp vật ở hai độ cao sẽ cho kết quả dễ phân tích hơn kỳ vọng một household generalist ngay từ run đầu.

Bài viết liên quan

  • OpenWBC: VR teleop và thu thập dữ liệu G1
  • Ψ₀: Kiến trúc whole-body VLA
  • OpenHLM: Whole-body humanoid loco-manipulation
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 trước
VLA-ACL: huấn luyện chọn token ảnh trên LIBERO
Bài sau →
UFO và TeCH: WBC humanoid bằng unsupervised RL

Bài viết liên quan

Tutorial
FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất
vlalerobotpi0
wholebody-vla

FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất

FluxVLA Engine — nền tảng kỹ thuật VLA open-source từ LimX Dynamics, hỗ trợ Pi0, GR00T, OpenVLA với pipeline đầy đủ từ data đến robot thực.

17/9/202611 phút đọc
NT
Tutorial
DSPv2: Dense Policy Cho Whole-Body Mobile Manipulation
vlawbcwhole-body
wholebody-vla

DSPv2: Dense Policy Cho Whole-Body Mobile Manipulation

DSPv2 kết hợp 3D point cloud với multi-view DINOv2 để tạo policy toàn thân cho robot di động — hướng dẫn cài đặt, training và inference đầy đủ.

15/9/202617 phút đọc
NT
Nghiên cứu
IntentVLA: Giải Bài Toán Quan Sát Mơ Hồ khi Fine-tune VLA
vlamanipulationimitation-learning
wholebody-vla

IntentVLA: Giải Bài Toán Quan Sát Mơ Hồ khi Fine-tune VLA

IntentVLA mã hóa lịch sử quan sát 16 frame thành intent vector ngắn hạn để giải quyết observation aliasing — vấn đề khiến VLA tạo action mâu thuẫn liên tiếp.

13/9/202615 phút đọc
NT
VnRobo logoVnRobo 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