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. DreamMimic: world model cho điều khiển toàn thân
wholebody-vlawhole-bodywbcworld-modellatent-dynamicshumanoidimitation-learningdreammimic

DreamMimic: world model cho điều khiển toàn thân

Hiểu RSSM, latent dynamics và teacher–student distillation của DreamMimic; hướng dẫn cài đặt, training và đánh giá humanoid trong mô phỏng.

Nguyễn Anh Tuấn8 tháng 10, 202615 phút đọc
DreamMimic: world model cho điều khiển toàn thân

Một humanoid đang nâng chiếc hộp không chỉ cần đặt bàn tay đúng vị trí. Nó còn phải chuyển trọng tâm, giữ chân bám sàn, điều chỉnh thân người và duy trì tiếp xúc khi hộp bắt đầu di chuyển. Nếu camera bị cánh tay che khuất trong vài frame, controller vẫn phải hiểu hành động vừa rồi đã thay đổi tình huống như thế nào. Đây là nơi latent world model trở nên hữu ích: lưu thông tin theo thời gian và dự đoán hệ quả của action trong một biểu diễn gọn.

Bài này chọn DreamMimic: Learning Visuomotor Whole-Body Loco-Manipulation via World Model của Jie Yin và Xingyu Lai, công bố trên arXiv tháng 8/2026. Repo DreamMimic/DreamMimic có code và script training, test, evaluation. Góc nghiên cứu là world-model-assisted policy distillation: chuyển kỹ năng từ privileged teacher sang visual student. Đây là controller có goal condition, không phải VLA nhận lệnh ngôn ngữ, cũng không phải video diffusion WAM sinh action và video đồng thời.

Chúng ta sẽ đi từ khái niệm đến cấu hình thực tế, rồi dựng một quy trình chạy thử có thể kiểm tra từng bước. Các lệnh bên dưới được đối chiếu với mã nguồn ngày 08/10/2026; bài viết không tuyên bố đã training lại model hay đo benchmark trên GPU.

1. Vì sao một ảnh hiện tại chưa đủ?

Hãy tưởng tượng hai ảnh camera gần như giống nhau: humanoid đưa tay sát hộp. Trong tình huống thứ nhất, tay chưa chạm hộp; trong tình huống thứ hai, tay đã tì vào hộp và đang chịu tải. Action tiếp theo hợp lý có thể khác hẳn. Nếu policy chỉ nhìn ảnh hiện tại, nó phải đoán thông tin bị thiếu.

Partial observability là hiện tượng cảm biến không cho biết đầy đủ trạng thái hệ thống. Proprioception là thông tin về chính robot, chẳng hạn cấu hình khớp và vận động của cơ thể. Latent state là vector hoặc tập biến được mạng học để biểu diễn những gì cần nhớ. Dynamics mô tả cách trạng thái thay đổi khi thực hiện action.

World model có thể kết hợp lịch sử cảm biến với action trước đó để duy trì một trạng thái nội bộ. Ví dụ, nếu tay vừa đẩy hộp nhưng ảnh hiện tại bị che, lịch sử vẫn cung cấp manh mối rằng hộp có thể đã dịch chuyển. Đây là khả năng dự đoán có sai số, không phải một bộ cảm biến biết chắc mọi thứ.

Khác biệt này giúp xác định câu hỏi nghiên cứu: liệu thông tin dự đoán có giúp visual student giữ được kỹ năng tiếp xúc của teacher qua một chuỗi dài? Để phân biệt với hướng world action model dự báo tương lai cho loco-manipulation, bạn có thể đọc thêm ω-0 và latent predictive WAM.

2. Teacher, student và world model kết nối ra sao?

Pipeline teacher–student và PCG của DreamMimic — nguồn: project DreamMimic
Pipeline teacher–student và PCG của DreamMimic — nguồn: project DreamMimic

Nguồn hình: DreamMimic project page. Đọc sơ đồ theo ba khối: teacher cung cấp hướng dẫn, world model tạo feature dự đoán, student tạo action.

Có thể hình dung teacher như một huấn luyện viên nhìn được toàn bộ sân tập. Trong simulation, teacher được dùng thông tin mà camera robot không trực tiếp đo được. Student phải học làm việc với cảm biến hạn chế hơn. Nếu lấy luôn ground truth của simulator đưa vào student, bài toán trở nên dễ hơn nhưng controller triển khai sẽ thiếu đầu vào đó.

Một điểm cần giữ rõ là goal khác với measurement. Goal nói vật thể cần đi đâu hoặc robot cần bám quỹ đạo nào. Measurement nói vật thể hiện đang ở đâu. Việc có target object pose trong task command không đồng nghĩa với việc student được cấp current object pose chính xác từ simulator. Khi thiết kế một thí nghiệm của riêng bạn, hãy liệt kê hai nhóm dữ liệu này trước khi viết observation tensor.

Theo cấu hình môi trường được phát hành, student sử dụng depth và segmentation, resize về 32 × 32 với hai channel. Goal reference có horizon 1 và 16. RSSM có deterministic state 128 chiều và stochastic state gồm 32 biến categorical, mỗi biến 8 giá trị. Đây là cấu hình SMPL-X cụ thể của repo, không phải kích thước cố định cho mọi humanoid.

Segmentation giúp phân biệt vùng robot, vật thể và nền; depth cung cấp cấu trúc khoảng cách. Khi đổi sang camera thật, bạn cần một pipeline tạo hai loại dữ liệu với quy ước phù hợp. Đưa RGB nguyên bản vào model đã training với depth–segmentation là thay đổi observation distribution, không phải thao tác thay camera đơn giản.

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 thuê cloud GPU để thử policy training, hãy xác nhận máy chạy được Isaac Gym và graphics context trước khi chọn cấu hình đắt hơn. Số môi trường song song, sensor rendering, CPU RAM và dependency tương thích đều ảnh hưởng đến khả năng chạy; chỉ nhìn VRAM chưa đủ.

3. RSSM: trí nhớ và dự đoán trong latent space

World model với RSSM, reconstruction và các prediction head — nguồn: project DreamMimic
World model với RSSM, reconstruction và các prediction head — nguồn: project DreamMimic

Nguồn hình: sơ đồ world model của DreamMimic. Những head phụ tạo tín hiệu học và feature tương tác; ảnh reconstruction không phải lệnh điều khiển.

Recurrent State-Space Model, viết tắt RSSM, gồm một phần nhớ có tính xác định và một phần biểu diễn bất định. Để hiểu trực giác, hãy gọi phần thứ nhất là h, phần thứ hai là s. Mạng recurrent cập nhật trí nhớ bằng trạng thái trước và action trước. Observation mới giúp hiệu chỉnh suy đoán đó.

text
Observation hiện tại + action trước
                |
              Encoder
                |
       RSSM posterior update
                |
  Trí nhớ h + prediction heads
                |
  Proprioception/goal + feature fusion
                |
          Student action

Posterior có observation mới để cập nhật latent. Prior dự đoán latent khi chưa có observation mới. Hai chế độ này giải thích vì sao cùng một world model vừa có thể bám dữ liệu cảm biến, vừa có thể chạy một đoạn dự đoán trong latent space.

Trong adapter của visual student, policy feature ghép deterministic feature với các dự đoán reward, privileged state, contact và object state. Với cấu hình mặc định, phép cộng kích thước là 128 + 1 + 164 + 1 + 13 = 307. Adapter lưu previous action, cập nhật latent và reset bộ nhớ theo từng environment khi episode kết thúc.

Tại sao prediction head có ích? Một feature học để tái tạo ảnh có thể lưu nhiều chi tiết hình học nhưng bỏ qua dấu hiệu quan trọng cho điều khiển. Khi phải dự đoán thêm contact hoặc trạng thái vật thể, model có thêm lý do để giữ thông tin về tương tác. Tuy nhiên, prediction vẫn có thể sai; tên head không bảo đảm độ chính xác.

Trong network builder, các nhóm feature được xử lý trước khi đi vào policy. Về mặt thiết kế, tách feature proprioception/goal và feature world model giúp tránh việc một vector lớn áp đảo nhóm còn lại chỉ vì khác thang đo. Khi đổi embodiment, bạn phải kiểm tra thứ tự feature và normalization, không chỉ sửa số chiều tensor.

4. Học hậu quả của action, không chỉ sao chép action

Behavior cloning thường khớp action student với action teacher tại từng thời điểm. Nhưng một sai lệch nhỏ khi chân đang chuyển tải có thể làm thân nghiêng hơn ở bước sau, rồi khiến tay trượt khỏi hộp. Sai số điều khiển có thể tích lũy thành sai số trạng thái.

Agent distillation bổ sung multi-step latent loss: bắt đầu từ cùng latent, chạy hai nhánh dự đoán được điều kiện hóa bằng action student và teacher, rồi so sánh latent thu được. Model parameters được đóng băng trong bước loss này; điều đó vẫn cho phép tính gradient qua dynamics đối với action student. Cấu hình mặc định dùng horizon 3.

Ví dụ trực giác: teacher hạ thân trước khi nâng hộp; student hạ hơi ít. Khoảng cách giữa hai action có thể nhỏ, nhưng dynamics dự đoán rằng khác biệt đó làm trạng thái tiếp xúc lệch sau vài bước. Latent loss thêm một tín hiệu về hậu quả của sai lệch. Ví dụ này minh họa thuật toán, không phải một trajectory được đo trong paper.

DAgger giúp thu dữ liệu ở những trạng thái student thực sự đi tới. Đây là khác biệt lớn so với chỉ học từ một tập demonstration cố định: policy yếu có thể tạo ra tình huống mà demonstration ban đầu không chứa. Teacher cung cấp action tham chiếu tại các trạng thái mới đó.

PCG, hay Performance-Conditioned Guidance, điều chỉnh mức teacher tham gia rollout. Theo training config, teacher ratio nằm trong khoảng 0,30–0,80, performance target là 0,85, imitation coefficient giữ ở 1. PPO có warm-up 5.000 epoch, ramp 2.000 epoch và hệ số cuối 0,10. Đây là default của release, không phải cam kết thời gian training.

Khi theo dõi quá trình học, đừng chỉ xem reward tổng. Hãy tách reward teacher và student, tỷ lệ môi trường teacher điều khiển, loss action, loss latent và tần suất reset. Nếu reward hỗn hợp tăng nhờ teacher làm phần khó, bạn chưa biết student đã tiến bộ đến đâu.

5. Cài đặt: bắt đầu từ một môi trường tương thích

Hướng dẫn chính thức nằm trong README. Bạn cần Linux với NVIDIA GPU phù hợp và Isaac Gym Preview 4. File dependency có nhiều package được pin; nó cũng chứa isaacgym-stubs, nhưng stubs không thay cho simulator. Cài Isaac Gym theo hướng dẫn của NVIDIA trong README.

Để lấy source mà không cần một Git checkout, có thể tải archive:

bash
curl -L https://github.com/DreamMimic/DreamMimic/archive/refs/heads/main.tar.gz \
  -o dreammimic-main.tar.gz
tar -xzf dreammimic-main.tar.gz
cd DreamMimic-main
conda env create -f requirements.yaml
conda activate dreammimic
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

Archive main có thể thay đổi. Khi cần tái lập, dùng archive theo commit và ghi lại revision cùng dataset/config. Cây source được kiểm tra cho bài này có revision 36c81c83f4c271c04b38deb17ba5f13141395b59.

Đọc requirements.yaml trước khi cài: file pin Python 3.8.20, torch 2.4.1 và torchvision 0.19.1, kèm prefix tuyệt đối từ máy tác giả. Nếu resolver hoặc binary extension báo lỗi, lưu lỗi đầu tiên và kiểm tra tương thích driver–CUDA–Python. Đừng nâng đồng loạt dependency để mong hết lỗi; bạn sẽ khó biết thành phần nào làm thay đổi hành vi.

Sau khi cài simulator, kiểm tra import bằng đúng environment:

bash
python -c "import isaacgym; import torch; print(torch.__version__); print(torch.cuda.is_available())"

Import thành công chưa chứng minh camera rendering hoạt động. Vì vậy bước tiếp theo là data replay, không phải mở ngay một training job dài.

6. Dataset và checkpoint: kiểm tra đường dẫn thực tế

README cung cấp link OMOMO processed motions, dữ liệu retarget/correction và teacher checkpoint. Tuy nhiên, cấu hình student được đọc trong bài này trỏ tới InterAct/OMOMO và InterAct/OMOMO_retarget; một số đường chạy khác dùng InterAct/OMOMO_new. Bạn phải đối chiếu config đã chọn với thư mục đã giải nén.

text
DreamMimic-main/
  InterAct/
    OMOMO/
    OMOMO_retarget/
  ckpts/
    teacher_omomo/
  dm_scripts/
  dreammimic/data/cfg/

Đây là sơ đồ định hướng, không phải danh sách đầy đủ file dataset. Không đổi tên tùy tiện một dataset để khớp đường dẫn: motion reference và dữ liệu correction phải thực sự tương ứng.

Chạy replay rồi kiểm tra teacher:

bash
bash dm_scripts/data_replay_omomo.sh
bash dm_scripts/test_teacher_omomo.sh

Nếu truyền checkpoint riêng, dùng đường dẫn thật đến file .pth và cú pháp trong script. Trước khi chuyển sang student, hãy quan sát vị trí vật thể, scale cơ thể và timing contact. Một teacher lỗi vì thiếu asset không thể trở thành nguồn supervision tốt.

Một lưu ý về phát hành: README có link teacher checkpoint; sự tồn tại của script student test không chứng minh mọi student weight đều tải được. Bạn cần kiểm tra khả năng truy cập checkpoint hoặc tự training. Trong common.sh, cơ chế fallback chỉ sao chép checkpoint legacy đã có trên máy vào ckpts/; nó không tự download weight từ Internet.

7. Training student theo từng nấc

Đối chiếu training wrapper trước khi chạy:

bash
# Chạy thử để kiểm tra pipeline; chưa phải cấu hình benchmark.
bash dm_scripts/train_student_dreammimic.sh 64 checkpoints/dreammimic_smoke

# Default của wrapper dùng 1024 môi trường song song.
bash dm_scripts/train_student_dreammimic.sh 1024 checkpoints/dreammimic_full

Wrapper đặt horizon length 16 và minibatch size 4096. Cấu hình YAML ghi minibatch size 2048, nên cần đọc cả argument command line và resolved config để biết giá trị cuối. Giảm số environment giúp chẩn đoán bộ nhớ; nó cũng thay đổi lượng dữ liệu rollout, do đó không nên coi run nhỏ là tái lập paper.

Trong vài iteration đầu, mục tiêu là xác nhận dữ liệu đi đúng đường: có camera tensor hợp lệ, teacher được load, world model bắt đầu học sau warm-up và loss không xuất hiện NaN. Sau đó mới tăng số environment. Ghi checkpoint, configuration, số sample và seed của từng run để có thể so sánh.

Bạn có thể tổ chức kiểm tra thành ba câu hỏi. Thứ nhất, student có tạo action đúng shape không? Thứ hai, world model có nhận đúng previous action và episode reset không? Thứ ba, student tự điều khiển có hoàn thành clip không? Một run trả lời được câu đầu vẫn có thể thất bại ở hai câu còn lại.

Nếu muốn ablation, tạo run riêng với multi-step latent distillation tắt, giữ các yếu tố khác giống nhau. So sánh nhiều seed và cùng danh sách clip. Không lấy một checkpoint tốt nhất của phương pháp A so với một run chưa hội tụ của phương pháp B.

8. Inference và evaluation

Tìm checkpoint student thực sự được tạo bởi training. Thay đường dẫn minh họa dưới đây bằng file của bạn:

bash
bash dm_scripts/test_student_dreammimic.sh \
  /absolute/path/to/student_checkpoint.pth 4 /tmp/dreammimic_test/custom

bash dm_scripts/eval_student_dreammimic.sh \
  /absolute/path/to/student_checkpoint.pth 64 /tmp/dreammimic_eval/custom false

Test wrapper mặc định dùng mimic_best.pth, còn eval wrapper dùng mimic_bestv4.pth. Truyền cùng checkpoint rõ ràng giúp tránh vô tình xem một model nhưng đo một model khác. Tham số cuối false tắt recording; dùng true nếu muốn xuất video theo cơ chế của wrapper.

Inference duy trì latent theo lịch sử observation và previous action. Episode mới phải reset bộ nhớ tương ứng. Nếu bỏ qua reset, model có thể mang thông tin về vật thể của episode cũ vào episode mới; lỗi này thường khó nhận ra chỉ bằng một video ngắn.

Code lưu trạng thái agent có trường student_world_model. Khi chuyển checkpoint hoặc triển khai một loader riêng, hãy kiểm tra cả actor và world model đã được restore. Chỉ load actor có thể tạo action hợp lệ về shape nhưng feature đầu vào không còn đúng distribution đã học.

Input depth và segmentation cho Unitree G1 trong mô phỏng — nguồn: DreamMimic project page

Video này minh họa perception input trong simulation. Nó không phải bằng chứng chạy trên G1 vật lý và không thay cho kết quả đánh giá định lượng.

9. Kết quả và cách đọc benchmark

Table I và II của paper báo cáo tracking trong simulation:

Thiết lập Phương pháp Success Robot error Object error
OMOMO ResNet-18 + DAgger+RL 72,6% 7,8 cm 9,7 cm
OMOMO DreamMimic 92,2% 5,4 cm 8,8 cm
OMOMO, mass ×5 DreamMimic 41,2% 8,1 cm 14,8 cm
BEHAVE, PCG DreamMimic 72,7% 10,2 cm 13,3 cm

Success ở đây là bám thành công reference clip. Với clip kết thúc sớm, tracking error chỉ tính trên frame đã chạy. Thử nghiệm chuyển morphology và simulator mang tính định tính; không suy ra success robot thật từ bảng trên.

Về phương pháp đánh giá, hãy luôn đọc success cùng duration và error. Một policy dừng ngay trước đoạn khó có thể có error thấp trên phần dễ đã thực hiện. Tương tự, một video được chọn để minh họa không cho biết tỷ lệ thất bại trên toàn bộ tập clip.

Mass stress test cũng có ý nghĩa thực hành: cùng hình dạng hộp nhưng tải nặng hơn có thể yêu cầu coordination khác. Khi viết báo cáo của riêng mình, lưu riêng kết quả nominal và stress condition. Đừng trộn chúng thành một tỷ lệ trung bình làm mất thông tin về giới hạn tải.

10. Những gì cần làm trước khi đổi sang humanoid thật

Một thí nghiệm tiếp theo hợp lý là tái lập student trên đúng embodiment mô phỏng, rồi đo từng thay đổi của sensor và controller. Đổi camera, timing action và actuator cùng lúc sẽ khiến nguyên nhân thất bại khó xác định.

Bạn cần một giao diện goal có thể tạo ở deployment, một pipeline depth–segmentation nhất quán và một mapping action đúng với controller robot. Đồng thời phải kiểm tra normalization, joint ordering, tần số observation và cơ chế reset khi task đổi. Đây là các yêu cầu tích hợp được suy ra từ cấu trúc hệ thống, không phải một recipe sim2real đã được paper chứng minh.

Điều đáng học từ DreamMimic là cách biến world model thành tín hiệu hỗ trợ policy: trí nhớ về tương tác, dự đoán có điều kiện theo action và supervision về hậu quả. Với người mới, lộ trình hữu ích nhất là chạy replay, xác minh teacher, chạy student nhỏ rồi mới thiết kế ablation. Mỗi bước tạo một bằng chứng cụ thể về pipeline trước khi bạn đầu tư vào training lớn.

Bài viết liên quan

  • ω-0: latent predictive WAM cho loco-manipulation
  • WholeBodyVLA: hướng dẫn training pipeline
  • M3Imic: Unitree G1 và whole-body control trong Isaac Lab
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
UFO và TeCH: WBC humanoid bằng unsupervised RL

Bài viết liên quan

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
NEWTutorial
UFO và TeCH: WBC humanoid bằng unsupervised RL
ufotechwbc
wholebody-vla

UFO và TeCH: WBC humanoid bằng unsupervised RL

Khám phá UFO: latent skill, TeCH, training MJLab, tracking và teleop trên G1, cùng cách đọc benchmark và triển khai ONNX.

8/10/202617 phút đọc
NT
NEWDeep Dive
TrajBooster: Chuyển trajectory 6D sang whole-body VLA
wholebody-vlavlawhole-body
wholebody-vla

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.

8/10/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