simulationhumanoidisaac-labisaac-mimicsynthetic-datarobomimicbehavior-cloninggr1data-ownership

Dữ liệu tổng hợp với Isaac Mimic

Trace pipeline Isaac Lab Mimic cho GR-1 nut pouring và phân biệt quyền dữ liệu giữa demo gốc, HDF5 tổng hợp và normalization params.

Nguyễn Anh Tuấn10 tháng 6, 202614 phút đọc
Dữ liệu tổng hợp với Isaac Mimic

Vì sao bài 4 chuyển sang simulation?

Ba bài đầu của series đã đi từ bản đồ tổng quát tới dữ liệu do người điều khiển tạo ra. Bài 1 đặt câu hỏi "ai kiểm soát giá trị ở từng lớp dữ liệu?". Bài 2 nói về VR teleoperation, nơi chuyển động đầu, tay và hành vi sửa lỗi của người vận hành trở thành demonstration. Bài 3 đi vào view alignment và action alignment, tức lớp biến video hoặc pose người thành dữ liệu gần hơn với robot.

Bài 4 đổi góc nhìn: nếu dữ liệu không đến trực tiếp từ robot thật, mà được sinh trong mô phỏng bằng NVIDIA Isaac Lab Mimic, thì ai sở hữu nó? Câu hỏi này nghe đơn giản hơn privacy của human video, nhưng thực ra khó hơn về provenance. Một file generated_dataset_gr1_nut_pouring.hdf5 có thể không chứa mặt người thật, nhưng nó vẫn phụ thuộc vào demo seed của người, scene USD, robot asset, object asset, task definition, annotation boundary, success criteria, compute, toolchain license và normalization artifact sau training.

Ta sẽ trace một pipeline cụ thể: Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0. Đây là ví dụ trong tài liệu Isaac Lab cho humanoid GR-1 làm task nut pouring/placing: robot nhặt beaker đỏ, đổ nut vào tô vàng, thả beaker vào thùng xanh, rồi đặt tô lên cân trắng. Tài liệu Isaac Lab cho biết dataset pre-generated có khoảng 12GB và chứa 1000 demonstration được sinh bằng Isaac Lab Mimic cho task này. Nguồn kỹ thuật chính: Teleoperation and Imitation Learning with Isaac Lab Mimic, Robomimic implemented algorithms, và Isaac Lab changelog về GR1 Pink IK tasks.

Nếu bạn cần nền tảng trước khi chạy command, đọc thêm Isaac Lab cho robotics simulationGR00T synthetic data cho whole-body VLA.

Pipeline một câu

Pipeline gồm bốn bước:

human seed demos
  -> record_demos.py --teleop_device handtracking
  -> dataset_gr1_nut_pouring.hdf5
  -> annotate_demos.py --enable_cameras
  -> dataset_annotated_gr1_nut_pouring.hdf5
  -> generate_dataset.py --generation_num_trials 1000
  -> generated_dataset_gr1_nut_pouring.hdf5
  -> robomimic/train.py --algo bc
  -> model checkpoint + logs/normalization_params.txt

Beginner nên đọc pipeline này như một chuỗi quyền kiểm soát, không chỉ là chuỗi file. Demo seed là nơi con người vẫn hiện diện trong dữ liệu. File annotated là nơi con người hoặc heuristic nói với Isaac Lab Mimic rằng episode có những subtask nào. File generated HDF5 là dữ liệu tổng hợp có thể train trực tiếp. Checkpoint và normalization_params.txt là artifact sau training, không còn là demonstration, nhưng lại cần để policy chạy đúng ở bước visualization hoặc deployment.

Task Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0 là gì?

Tên task dài vì nó encode nhiều quyết định kỹ thuật:

Thành phần tên Ý nghĩa thực dụng
Isaac Environment thuộc hệ sinh thái Isaac Lab
NutPour Task chính là đổ nut từ beaker vào bowl rồi đặt vật đúng vị trí
GR1T2 Robot humanoid Fourier GR-1 biến thể T2
Pink-IK Dùng Pink inverse kinematics controller cho điều khiển end-effector
Abs Điều khiển pose tuyệt đối, phù hợp với hand tracking/XR hơn relative keyboard
Mimic Environment có cấu hình subtask để Isaac Lab Mimic sinh demonstration mới
v0 Version của Gymnasium environment

Trong task này, policy không chỉ cần nhìn camera rồi nhấc một object. Nó phải hiểu chuỗi thao tác dài: tiếp cận beaker, grasp, giữ ổn định, pour, chuyển beaker sang bin, release, quay sang bowl, grasp hoặc giữ bowl, đặt bowl lên scale. Success criteria cũng không đơn giản: beaker phải ở bin, nut phải ở bowl, và bowl phải nằm trên scale. Vì vậy dataset vừa có perception, vừa có manipulation, vừa có long-horizon sequencing.

Điểm quan trọng cho ownership: một task như vậy chứa rất nhiều "tri thức thiết kế" trong scene và success definition. Nếu bạn chỉ nhìn file HDF5 cuối cùng, bạn sẽ bỏ qua người đã định nghĩa vật nào là beaker, bowl, bin, scale; trạng thái nào được xem là thành công; camera nào được bật; và subtask nào được phép stitch.

Bước 1: Thu demo seed bằng hand tracking

Lệnh thu demo seed:

./isaaclab.sh -p scripts/tools/record_demos.py \
  --device cpu \
  --task Isaac-NutPour-GR1T2-Pink-IK-Abs-v0 \
  --teleop_device handtracking \
  --dataset_file ./datasets/dataset_gr1_nut_pouring.hdf5 \
  --num_demos 5 \
  --enable_pinocchio

Ở bước này chưa dùng task Mimic. Ta record trên environment điều khiển thật của task: Isaac-NutPour-GR1T2-Pink-IK-Abs-v0. Teleop device là handtracking, thường đi cùng XR/CloudXR setup. Isaac Lab docs cũng nhấn mạnh rằng với XR hand tracking, absolute pose task phù hợp hơn vì tay người điều khiển trực tiếp pose mục tiêu của end-effector.

File đầu ra dataset_gr1_nut_pouring.hdf5 là seed dataset. Nó nhỏ hơn nhiều so với dataset generated 1000 rollout, nhưng có giá trị ownership rất cao. Nó chứa style của operator: đường tay có mượt không, có pause không, có đi vòng không, có sửa lỗi giữa chừng không, có giữ object ổn định trước khi pour không. Isaac Lab docs cảnh báo demonstration quá dài, nhiều pause hoặc chuyển động giật sẽ làm policy khó học; nghĩa là chất lượng lao động con người vẫn ảnh hưởng trực tiếp tới synthetic data phía sau.

Với beginner, hãy nhớ: synthetic pipeline không loại bỏ demo người, nó khuếch đại demo người. Nếu demo seed xấu, generated rollout cũng dễ xấu hoặc success rate thấp. Nếu demo seed tốt, Mimic có nhiều vật liệu để stitch subtask thành variation mới.

Ownership của bước 1:

Artifact Ai đóng góp giá trị? Câu hỏi ownership cần hỏi
dataset_gr1_nut_pouring.hdf5 Teleoperator, robot/sim operator, người setup XR Operator có được ghi nhận hoặc ràng buộc license dữ liệu không?
Hand/head tracking stream Người đeo thiết bị, hệ thống CloudXR/OpenXR Dữ liệu chuyển động người có bị dùng ngoài mục đích train không?
Task environment không Mimic Simulation team, robot asset owner License của robot asset và scene cho phép tạo dataset downstream không?
Failed demos bị discard Operator và QA reviewer Dữ liệu bị bỏ có được lưu log không, và có rủi ro privacy không?

Bước 2: Annotate subtask, nhớ bật camera

Lệnh annotate:

./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \
  --device cpu \
  --enable_cameras \
  --rendering_mode balanced \
  --task Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0 \
  --input_file ./datasets/dataset_gr1_nut_pouring.hdf5 \
  --output_file ./datasets/dataset_annotated_gr1_nut_pouring.hdf5 \
  --enable_pinocchio

Đây là bước dễ bị xem nhẹ. Isaac Lab Mimic hoạt động bằng cách chia demonstration thành subtask, rồi biến đổi và stitch các đoạn đó theo object reference và success criteria. Với task visuomotor, docs yêu cầu thêm --enable_cameras ở bước annotation và generation. Nếu quên flag này, bạn có thể tạo ra artifact không đúng với policy cần ảnh camera.

Annotation nói cho Mimic biết boundary của subtask. Ví dụ với nut pouring, các boundary có thể liên quan đến lúc tay đã grasp beaker, lúc pour xong, lúc beaker được đưa tới bin, hoặc lúc bowl được đặt lên scale. Tài liệu cũng cảnh báo task này có nhiều annotation cho right end-effector; các subtask của cùng eef không được dùng cùng action index. Với người mới, hãy hiểu đơn giản: nếu annotate sai, Mimic sẽ stitch sai đoạn chuyển động, giống như ghép nhầm cảnh trong video.

File dataset_annotated_gr1_nut_pouring.hdf5 là derived data từ seed demo. Nó không chỉ copy dữ liệu ban đầu; nó thêm tri thức segmentation. Vì vậy ownership không còn chỉ là "ai record demo". Người annotate cũng tạo giá trị.

So sánh trước và sau annotation:

Lớp file Nội dung chính Có thể train ngay không? Quyền kiểm soát giá trị
Seed HDF5 Episode teleop gốc, state/action/camera theo record Có thể dùng cho IL nhỏ, nhưng chưa đủ để Mimic generate Operator + người sở hữu môi trường
Annotated HDF5 Seed demo + boundary/subtask signal Là input chính cho generate_dataset.py Operator + annotator + task designer
Generated HDF5 Rollout mới đã qua success filter Có, dùng trực tiếp cho Robomimic BC Người chạy generation + owner của input annotated

Bước 3: Sinh 1000 rollout tổng hợp

Lệnh generate:

./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \
  --device cpu \
  --headless \
  --enable_pinocchio \
  --enable_cameras \
  --rendering_mode balanced \
  --task Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0 \
  --generation_num_trials 1000 \
  --num_envs 5 \
  --input_file ./datasets/dataset_annotated_gr1_nut_pouring.hdf5 \
  --output_file ./datasets/generated_dataset_gr1_nut_pouring.hdf5

Đây là lúc "dữ liệu tổng hợp" thật sự xuất hiện. --generation_num_trials 1000 yêu cầu sinh 1000 candidate/successful demonstrations theo pipeline Mimic. --num_envs 5 chạy nhiều environment song song để tăng throughput. --headless phù hợp khi chạy generation không cần GUI. --enable_cameras giữ camera observation cho visuomotor policy. --rendering_mode balanced là lựa chọn thực dụng giữa chất lượng render và tốc độ.

Mimic không đơn giản là copy paste trajectory. Theo tài liệu Isaac Lab, nó dùng subtask đã annotate, object reference và helper function của environment để biến đổi các đoạn demonstration, tạo candidate mới, rồi dùng boolean success criteria để quyết định demo nào được thêm vào output dataset. Với task khó, success rate có thể biến động mạnh theo demo seed và annotation quality. Docs cho riêng nut pouring visuomotor ghi nhận generation 1000 demonstration có thể mất khoảng 10 giờ trên RTX ADA 6000, và BC policy sau đó thường cần đánh giá nhiều checkpoint giữa quá trình train.

File generated_dataset_gr1_nut_pouring.hdf5 là điểm tranh luận ownership lớn nhất:

Lập luận Vì sao có lý Điểm yếu
"Nó thuộc người record seed demo" Rollout tổng hợp bắt nguồn từ style và subtask của người đó Simulation, asset và generator cũng tạo giá trị mới
"Nó thuộc chủ simulation pipeline" Người chạy Mimic tạo ra file 1000 rollout và trả compute Không có demo seed/annotation thì pipeline không có nguyên liệu
"Nó thuộc chủ robot/asset/task" Scene, GR-1 model, object và success criteria quyết định dữ liệu Có thể quá rộng nếu license cho phép downstream generation
"Nó là derived dataset có nhiều đồng chủ thể" Phản ánh đúng chuỗi đóng góp Khó vận hành nếu không có hợp đồng rõ từ đầu

Với startup, cách thực dụng là ghi provenance ngay trong dataset card hoặc manifest nội bộ:

dataset: generated_dataset_gr1_nut_pouring.hdf5
task: Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0
source_seed: dataset_gr1_nut_pouring.hdf5
source_annotation: dataset_annotated_gr1_nut_pouring.hdf5
teleop_device: handtracking
num_seed_demos: 5
generation_num_trials: 1000
num_envs: 5
cameras_enabled: true
rendering_mode: balanced
operator_consent_id: internal-record-2026-06-10-a
asset_license_review: required
downstream_allowed: train-internal-policy

Manifest như vậy không giải quyết hết pháp lý, nhưng nó làm rõ nguồn gốc kỹ thuật. Khi sau này dataset được convert sang LeRobot, dùng để fine-tune VLA, hoặc đưa vào evaluation benchmark, bạn vẫn biết dữ liệu đến từ đâu.

Bước 4: Train Behavior Cloning bằng Robomimic

Lệnh train:

./isaaclab.sh -p scripts/imitation_learning/robomimic/train.py \
  --task Isaac-NutPour-GR1T2-Pink-IK-Abs-v0 \
  --algo bc \
  --normalize_training_actions \
  --dataset ./datasets/generated_dataset_gr1_nut_pouring.hdf5

--algo bc nghĩa là Behavior Cloning: policy học supervised regression từ observation sang action. Robomimic docs mô tả BC là baseline imitation learning trực tiếp, và Robomimic cũng có các biến thể như BC-RNN, BC-Transformer, Diffusion Policy. Trong tutorial này, ta bắt đầu với BC vì nó dễ hiểu nhất: dataset chứa (observation, action), model học bắt chước action.

--normalize_training_actions là flag rất quan trọng. Isaac Lab docs cho biết training script sẽ normalize action trong dataset về khoảng [-1, 1], rồi lưu tham số normalize ở:

PATH_TO_MODEL_DIRECTORY/logs/normalization_params.txt

File này thường bị xem là log phụ, nhưng trong ownership chain nó là artifact có giá trị. Nếu không có normalization params, lúc visualize hoặc deploy checkpoint bạn có thể scale action sai. Action min/max cũng tiết lộ phân phối hành động trong dataset: biên độ tay, giới hạn chuyển động thường dùng, mức mở/đóng gripper, hoặc vùng hoạt động của controller. Nó không phải raw demo, nhưng nó là derived statistical artifact từ generated HDF5.

Phân loại artifact sau train:

Artifact Nó chứa gì? Có phải dữ liệu huấn luyện không? Rủi ro hoặc giá trị
Model checkpoint Weight đã học từ generated HDF5 Không phải dataset, nhưng hấp thụ thông tin dataset Có thể encode behavior/procedure proprietary
normalization_params.txt Min/max hoặc factor để scale action Artifact thống kê phái sinh Cần cho replay đúng, có thể leak action distribution
TensorBoard/logs Loss, metrics, config, thời gian train Metadata vận hành Có thể tiết lộ recipe và compute budget
Evaluation videos Rollout của policy đã train Dữ liệu mới từ model + sim Dùng làm bằng chứng performance, cũng có thể leak failure mode

Seed demo khác generated rollout như thế nào?

Đây là bảng quan trọng nhất của bài:

Câu hỏi Seed human demo Generated HDF5 rollout
Nguồn trực tiếp Người điều khiển qua hand tracking Isaac Lab Mimic sinh từ annotated seed
Có hành vi người thật không? Có, rất trực tiếp Có dấu vết gián tiếp qua subtask và style
Có scene/object/sim asset không? Có, trong môi trường record Có, thường còn phụ thuộc mạnh hơn vì randomization/generation
Có annotation không? Không nhất thiết Có, vì generation dùng annotated input
Có thể chứa lỗi thao tác không? Có, nếu không discard Output thường đã qua success criteria, nhưng vẫn có variance
Ai nên được ghi provenance? Operator, reviewer, environment owner Tất cả bên của seed + annotator + generation runner
Khi chia sẻ ra ngoài cần kiểm gì? Consent, privacy, labor agreement, asset license License derived data, benchmark leakage, asset provenance

Một cách nói ngắn gọn: seed demo là "lao động điều khiển được ghi lại"; generated rollout là "dữ liệu phái sinh được hợp thành từ lao động đó và simulation pipeline". Nếu doanh nghiệp chỉ ghi license cho file cuối cùng mà không ghi quyền với seed demo, rủi ro sẽ quay lại khi dataset trở nên có giá trị.

Checklist cho nhóm robotics trước khi scale synthetic data

Trước khi bấm generate 1000, 10.000 hoặc 100.000 rollout, nên có checklist tối thiểu:

Hạng mục Câu hỏi kiểm tra
Operator consent Người teleop có biết demo seed sẽ dùng để sinh rollout tổng hợp không?
Asset provenance Robot, object, texture, scene USD có license cho data generation không?
Annotation ownership Ai annotate subtask và kết quả annotation được license thế nào?
Dataset manifest File generated có ghi source seed, task, version, command và flag không?
Camera policy Camera có render nội dung nhạy cảm hoặc asset không được share không?
Normalization artifact normalization_params.txt có được lưu kèm checkpoint và kiểm soát access không?
Downstream use Dataset được phép dùng cho Robomimic BC, VLA fine-tune, benchmark hay commercial product?
Deletion path Nếu seed demo bị yêu cầu xóa, generated rollout và checkpoint xử lý ra sao?

Điểm cuối cùng thường bị bỏ qua. Nếu một operator rút consent với demo seed, bạn có chính sách gì cho generated HDF5 đã sinh từ demo đó? Xóa file generated? Chỉ ngừng share? Retrain checkpoint? Không có câu trả lời chung, nhưng câu hỏi phải được đặt trước khi scale.

Kết luận

Isaac Lab Mimic làm một việc rất mạnh: biến vài demonstration người điều khiển thành dataset lớn hơn, có camera, có success criteria, và có thể train policy bằng Robomimic BC. Với Isaac-NutPour-GR1T2-Pink-IK-Abs-Mimic-v0, pipeline rõ ràng: record bằng handtracking, annotate với --enable_cameras, generate 1000 rollout, rồi train với --algo bc và lưu normalization_params.txt.

Nhưng về ownership, bài học là: synthetic data không tự nhiên "sạch" hơn chỉ vì nó sinh trong simulation. Nó chỉ chuyển trọng tâm từ privacy trực tiếp sang provenance của seed demo, annotation, asset, task definition, generation script và artifact thống kê. Nhóm nào quản trị được chuỗi này từ đầu sẽ có lợi thế lớn khi synthetic humanoid data trở thành tài sản chiến lược.

Bài tiếp theo sẽ chuyển từ simulation sang human video và dữ liệu robot-free: khi video người làm việc ngoài robot được đưa vào pretraining VLA, ownership sẽ còn khó hơn vì dữ liệu không bắt đầu từ robot hay simulator.

Bài viết liên quan

NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Bài viết liên quan

Bản đồ dữ liệu humanoid 2026
humanoid

Bản đồ dữ liệu humanoid 2026

10/6/202616 phút đọc
NT
Teleop VR: từ PICO/ZED đến HDF5
humanoid

Teleop VR: từ PICO/ZED đến HDF5

10/6/202618 phút đọc
NT
Căn góc nhìn người sang robot
humanoid

Căn góc nhìn người sang robot

10/6/202616 phút đọc
NT