Skip to main content

Architecture

System internals and technical constraints for developers.

Pipeline

InputProvider (BVH file / Pico4)
-> Retargeter (GMR)
-> ObservationBuilder (166D)
-> Controller (dual-input TemporalCNN ONNX)
-> Robot (MuJoCo sim or Unitree G1)

Offline/online inference is assembled by teleopit/runtime/ and teleopit/pipeline.py. The hardware state machine lives in teleopit/sim2real/controller.py. Training is provided by train_mimic/.

Code Structure

configs / scripts
-> runtime
-> interfaces + pipeline state machines
-> adapters (inputs / retargeting / controller / robot / recording)

train_mimic/scripts
-> train_mimic/app.py
-> single task registry / env builder / runner cfg
-> mjlab / rsl_rl

train_mimic/scripts/data
-> train_mimic/data/dataset_builder.py
-> dataset_lib / motion_fk / convert_pkl_to_npz

Core Boundaries

ModuleRole
teleopit/interfaces.pyStable protocols: InputProvider, Retargeter, Controller, Robot, ObservationBuilder, Recorder
teleopit/runtime/Config parsing, path normalization, component assembly, CLI validation
teleopit/pipeline.pyLightweight facade for offline sim
teleopit/sim2real/controller.pyHardware state machine and control logic
teleopit/controllers/observation.pyObservationBuilder
teleopit/controllers/rl_policy.pyOnly accepts 166D dual-input ONNX
train_mimic/app.pyShared train/play/benchmark assembly
train_mimic/tasks/tracking/config/Single task registration (General-Tracking-G1)
train_mimic/data/dataset_builder.pySole official dataset construction entry

Technical Specifications

SpecValue
Training taskGeneral-Tracking-G1
Inference observationvelcmd_history (166D)
ONNX signatureDual-input obs (166D) + obs_history
Actor/CriticTemporalCNN (1024, 512, 256, 256, 128)
Training samplinguniform; playback/benchmark use start
Training window_steps[0]
Data formatShard directories only (shard_*.npz)

Constraints

  • controller.policy_path must be explicitly provided and the file must exist
  • Offline BVH runs require explicit input.bvh_file
  • viewers is the sole viewer configuration entry
  • Observation/ONNX dimension mismatch causes immediate startup error
  • sim2real also only supports 166D dual-input ONNX

Public Surface

Stable run modes: offline sim2sim, offline sim2real playback, Pico4 sim2sim, G1 sim2real

Stable training entry points: train.py, play.py, benchmark.py, save_onnx.py

Stable data entry points: build_dataset.py, split_shards.py