MCPcopy Index your code
hub / github.com/LeCAR-Lab/SoFTA

github.com/LeCAR-Lab/SoFTA @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
607 symbols 1,357 edges 49 files 79 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Hold My Beer🍻: Learning Gentle Humanoid Locomotion and End-Effector Stabilization Control

[Website]

IsaacGym Linux platform License: MIT

TODO

  • [x] Release training code
  • [x] Release evaluation code
  • [ ] Release deploy code

Installation

IsaacGym Conda Env

Create conda environment.

conda create -n hmbgym python=3.8
conda activate hmbgym

Install IsaacGym

Download IsaacGym and extract:

wget https://developer.nvidia.com/isaac-gym-preview-4
tar -xvzf isaac-gym-preview-4

Install IsaacGym Python API:

pip install -e isaacgym/python

Test installation:

cd isaacgym/python/examples

python 1080_balls_of_solitude.py  # or
python joint_monkey.py

For libpython error:

  • Check conda path: bash conda info -e
  • Set LD_LIBRARY_PATH: bash export LD_LIBRARY_PATH=</path/to/conda/envs/your_env/lib>:$LD_LIBRARY_PATH

Install SoFTA

git clone https://github.com/LeCAR-Lab/SoFTA.git
cd SoFTA

pip install -e .
pip install -e isaac_utils

Training Code

Unitree G1_27DoF

Training Command

python humanoidverse/train_agent.py +exp=async_locomotion_ma_stand_gait_ee_rrh simulator.config.sim.control_decimation=2 +opt=wandb

Evaluation Code

Evaluation Command

python humanoidverse/eval_agent.py +checkpoint=<path_to_your_ckpt>

Interactive Commands

  • press w/a/s/d to control the linear velocity
  • press q/e to control the angular velocity
  • press z to set all commands to zero
  • press upper/lower arrow to control the EE z pos
  • press left/right arrow to control the EE y pos
  • press page up/down to control the EE x pos
  • press page 1/2 to control the gait period

Citation

If you find our work useful, please consider citing us!

@article{li2025softa,
          title={Hold My Beer: Learning Gentle Humanoid Locomotion and End-Effector Stabilization Control},
          author={Li, Yitang and Zhang, Yuanhang and Xiao, Wenli and Pan, Chaoyi and Weng, Haoyang and He, Guanqi and He, Tairan and Shi, Guanya},
          journal={arXiv preprint arXiv:2505.24198},
          year={2025}
        }

Also consider citing these prior works that are used in this project:

@article{zhang2025falcon,
          title={FALCON: Learning Force-Adaptive Humanoid Loco-Manipulation},
          author={Zhang, Yuanhang and Yuan, Yifu and Gurunath, Prajwal and He, Tairan and Omidshafiei, Shayegan and Agha-mohammadi, Ali-akbar and Vazquez-Chanlatte, Marcell and Pedersen, Liam and Shi, Guanya},
          journal={arXiv preprint arXiv:2505.06776},
          year={2025}
        }
@article{he2025asap,
          title={ASAP: Aligning Simulation and Real-World Physics for Learning Agile Humanoid Whole-Body Skills},
          author={He, Tairan and Gao, Jiawei and Xiao, Wenli and Zhang, Yuanhang and Wang, Zi and Wang, Jiashun and Luo, Zhengyi and He, Guanqi and Sobanbabu, Nikhil and Pan, Chaoyi and Yi, Zeji and Qu, Guannan and Kitani, Kris and Hodgins, Jessica and Fan, Linxi "Jim" and Zhu, Yuke and Liu, Changliu and Shi, Guanya},
          journal={arXiv preprint arXiv:2502.01143},
          year={2025}
        }
@misc{HumanoidVerse,
          author = {CMU LeCAR Lab},
          title = {HumanoidVerse: A Multi-Simulator Framework for Humanoid Robot Sim-to-Real Learning},
          year = {2025},
          publisher = {GitHub},
          journal = {GitHub repository},
          howpublished = {\url{https://github.com/LeCAR-Lab/HumanoidVerse}},
        }

License

This project is licensed under the MIT License - see the LICENSE file for details.

Core symbols most depended-on inside this repo

mean
called by 53
humanoidverse/utils/average_meters.py
update_key
called by 36
humanoidverse/agents/modules/data_utils.py
torch_rand_float
called by 32
humanoidverse/utils/torch_utils.py
quat_rotate_inverse
called by 22
humanoidverse/utils/torch_utils.py
register_key
called by 20
humanoidverse/agents/modules/data_utils.py
index
called by 18
humanoidverse/agents/callbacks/analysis_plot_locomotion.py
quat_apply
called by 10
humanoidverse/utils/torch_utils.py
step
called by 10
humanoidverse/agents/modules/world_models.py

Shape

Method 470
Function 98
Class 38
Route 1

Languages

Python100%

Modules by API surface

humanoidverse/envs/legged_base_task/legged_robot_base_ma.py73 symbols
humanoidverse/envs/locomotion/locomotion_ma.py47 symbols
isaac_utils/isaac_utils/rotations.py44 symbols
humanoidverse/envs/locomotion/locomotion_stand_ma_nouse.py39 symbols
humanoidverse/simulator/isaacgym/isaacgym.py35 symbols
humanoidverse/agents/ppo/ppo.py34 symbols
humanoidverse/agents/ppo_ma/ppo_ma.py28 symbols
humanoidverse/agents/modules/ppo_modules.py26 symbols
humanoidverse/utils/torch_utils.py25 symbols
humanoidverse/agents/callbacks/analysis_plot_locomotion.py25 symbols
humanoidverse/envs/locomotion/locomotion_ma_stand_gait_ee.py23 symbols
humanoidverse/envs/locomotion/locomotion_ma_stand.py20 symbols

For agents

$ claude mcp add SoFTA \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact