Skip to main content

Asset Management

Datasets, checkpoints, robot models, and demo media are not tracked in Git. They are distributed via ModelScope and HuggingFace. The canonical Unitree G1 model is downloaded to assets/robots/unitree_g1/g1_29dof.xml.

What's Not in Git

  • assets/robots/ - Canonical robot XML/meshes
  • teleopit/retargeting/gmr/assets/ - GMR retargeting assets, IK configs, and non-canonical robot descriptions
  • data/, checkpoints, caches
  • Demo media (assets/demo.gif, assets/demo.mp4)

Repositories

ModelScope (default download source)

RepositoryTypeContents
BingqianWu/Teleopit-modelsmodelCheckpoints, GMR retargeting assets, sample BVH
BingqianWu/Teleopit-datasetsdatasetTraining/validation datasets

HuggingFace (alternative)

RepositoryTypeContents
12e21/Teleopit-modelsmodelCheckpoints, GMR retargeting assets, sample BVH
12e21/Teleopit-datasetsdatasetTraining/validation datasets

Asset Group Mapping

GroupRepositoryRemote Path
ckptTeleopit-modelscheckpoints/track.onnx, checkpoints/track.pt
robotsTeleopit-modelsarchives/robot_assets.tar.gz
gmrTeleopit-modelsarchives/gmr_assets.tar.gz
bvhTeleopit-modelsarchives/sample_bvh.tar.gz
dataTeleopit-datasetsdata/datasets/*/*.h5 (lafan1, pico_record, seed, twist2)

Download

Use the project download script (defaults to ModelScope):

# Download everything
python scripts/setup/download_assets.py

# Only inference essentials
python scripts/setup/download_assets.py --only robots gmr ckpt bvh

# Only training data
python scripts/setup/download_assets.py --only data

# Download from HuggingFace instead
python scripts/setup/download_assets.py --source huggingface

Local paths after download:

RemoteLocal
checkpoints/track.onnxtrack.onnx
checkpoints/track.pttrack.pt
archives/robot_assets.tar.gzassets/robots/ (extracted)
archives/gmr_assets.tar.gzteleopit/retargeting/gmr/assets/ (extracted)
archives/sample_bvh.tar.gzdata/sample_bvh/ (extracted)
data/datasets/*/*.h5data/datasets/

Upload to ModelScope

Step 1: Prepare Upload Directory

python scripts/setup/prepare_modelscope_assets.py --only ckpt robots gmr bvh --clean
python scripts/setup/prepare_modelscope_assets.py --only data

Output goes to data/modelscope_upload/.

Step 2: Upload

# Model repo
modelscope upload --repo-type model BingqianWu/Teleopit-models \
data/modelscope_upload/checkpoints checkpoints
modelscope upload --repo-type model BingqianWu/Teleopit-models \
data/modelscope_upload/archives archives

# Dataset repo
modelscope upload --repo-type dataset BingqianWu/Teleopit-datasets \
data/modelscope_upload/data data

Step 3: Tag Version

Only the model repo supports tags (dataset repo does not).

python - <<'EOF'
from modelscope.hub.api import HubApi
api = HubApi()
url = api.create_model_tag("BingqianWu/Teleopit-models", "vX.Y.Z")
print(url)
EOF

Tags should match Git tags for traceability.

Upload to HuggingFace

Step 1: Prepare and Upload

# Prepare and upload model assets (--clean ensures no leftover files)
python scripts/setup/upload_hf_assets.py --only ckpt robots gmr bvh --clean

# Prepare and upload dataset
python scripts/setup/upload_hf_assets.py --only data --clean

Use --dry-run to stage files locally without uploading.

warning

Always use --clean when running --only, otherwise the staging directory may carry leftover files from a previous run, causing unintended uploads.

Step 2: Tag Version

python - <<'EOF'
from huggingface_hub import HfApi
api = HfApi()
api.create_tag("12e21/Teleopit-models", tag="vX.Y.Z", repo_type="model")
EOF

Pre-Push Check

python scripts/dev/check_large_tracked_files.py

This blocks large binary files and checks tracked file size limits.