Jianuo Cao*1,2, Yuxin Chen*2, Yuzhen Song2,3, Masayoshi Tomizuka2, Chenran Li2, Ran(Thomas) Tian2
1Nanjing University 2University of California, Berkeley 3Southern University of Science and Technology
TEXEDO is a text-to-motion pipeline for the Unitree G1 humanoid. It generates multiple candidate motions from a language prompt, decodes them into a 36-dimensional g1 robot motion format, scores them with dynamic and semantic verifiers, and selects the best candidate for deployment.
- FSQ motion tokenizer for Unitree G1 motion.
- FLAN-T5 generator over discrete motion tokens.
- Dynamic and semantic verifiers for humanoid motion scoring and reward modeling.
- Release datasets.
- Release checkpoints for the tokenizer, generator, and verifiers.
- Open-source the training pipeline.
- Publish a fast, large-scale controller-aware data collection pipeline.
- Add functional demos for text-to-motion, motion-to-text, and motion prediction.
git clone https://github.com/JianuoCao/TEXEDO.git
cd TEXEDO
conda env create -f environment.yml
conda activate TEXEDO
pip install -e .By default, TEXEDO stores checkpoints in ./assets and datasets in ./data. You can override these locations:
export TSD_ASSETS=/path/to/assets
export TSD_DATA=/path/to/dataThe dataset lives at JianuoCao/TEXEDO. Checkpoints and runtime assets live at JianuoCao/TEXEDO-Checkpoint.
python scripts/download_assets.py --dry-run
python scripts/download_assets.py--dry-run only prints what would be downloaded. The second command downloads checkpoints, verifiers, GloVe files, and the G1 robot assets into assets/.
Generate candidates, score them, select the best motion, and render it:
python -m pipeline.generate \
--prompt "a person waves with the right hand" \
--num-samples 8 \
--out-dir candidates/
python -m pipeline.score \
--motion-dir candidates/ \
--caption "a person waves with the right hand" \
--output scores.csv
python -m pipeline.select_best_of_n \
--scores scores.csv \
--motion-dir candidates/ \
--copy-best-to best/
python scripts/visualize_csv.py --input-dir best/ --output-dir viz/For generator-only sampling:
cd generator
python demo.py --task t2m --num_samples 5 \
--cfg configs/config_fsq_multitask.yaml \
--cfg_assets configs/assets.yamlInference uses the released checkpoints and does not require dataset preparation. For training, prepare the public dataset into the local CustomCombined layout:
python generator/scripts/prepare_dataset.pyThis downloads the dataset, flattens motions/texts, copies split files, and regenerates FSQ token files under data/CustomCombined/.
The released checkpoints are ready to use. To reproduce or retrain components, see docs/REPRODUCE.md. Main entry points:
# FSQ tokenizer
python tokenizer/fsq_train.py --config tokenizer/configs/fsq_combined.yaml
# Generator
cd generator && python train.py --cfg configs/config_fsq_multitask.yaml --cfg_assets configs/assets.yaml --nodebug
# Semantic verifier
python verifiers/semantic/train_evaluator.py --config verifiers/semantic/configs/evaluator.yaml --step all
- docs/FORMAT.md: 36-dim Unitree G1 motion format.
- docs/DATA.md: dataset layout and preparation.
- docs/MODELS.md: checkpoints and runtime assets.
- docs/REPRODUCE.md: end-to-end reproduction notes.
@misc{cao2026texedotesttime,
title={TEXEDO : Test Time Scaling for Controller-aware Language-conditioned Humanoid Motion Generation},
author={Jianuo Cao and Yuxin Chen and Yuzhen Song and Masayoshi Tomizuka and Chenran Li and Thomas Tian},
year={2026},
eprint={2606.22998},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2606.22998},
}
The code in this repository is released under the MIT license. Third-party datasets, pretrained models, robot assets, and dependencies retain their own licenses and terms of use.
