[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72616":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":14,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},72616,"ASAP","LeCAR-Lab\u002FASAP","LeCAR-Lab","[RSS 2025] \"ASAP: Aligning Simulation and Real-World Physics for Learning Agile Humanoid Whole-Body Skills\"","https:\u002F\u002Fagile.human2humanoid.com\u002F",null,"Python",2038,193,28,61,0,7,28.86,"MIT License",false,"main",[23,24,25],"humanoid","reinforcement-learning","robotics","2026-06-12 02:03:05","\u003Ch1 align=\"center\"> ASAP: Aligning Simulation and Real-World Physics for \n\nLearning Agile Humanoid Whole-Body Skills \u003C\u002Fh1>\n\n\u003Cdiv align=\"center\">\n\nRobotics: Science and Systems (RSS) 2025\n\n[[Website]](https:\u002F\u002Fagile.human2humanoid.com\u002F)\n[[Arxiv]](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2502.01143)\n[[Video]](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=tu7LSNYWDTs&ab_channel=LeCARLabatCMU)\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"imgs\u002FCMU-NV-logo-crop-png.png\" height=50\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\n\u003C\u002Fp>\n\n\n\n\n[![IsaacGym](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FIsaacGym-Preview4-b.svg)](https:\u002F\u002Fdeveloper.nvidia.com\u002Fisaac-gym) [![IsaacSim](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FIsaacSim-4.2.0-b.svg)](https:\u002F\u002Fdocs.isaacsim.omniverse.nvidia.com\u002F4.2.0\u002Findex.html) [![IsaacSim](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGenesis-0.2.1-b.svg)](https:\u002F\u002Fdocs.isaacsim.omniverse.nvidia.com\u002F4.2.0\u002Findex.html) [![Linux platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-linux--64-orange.svg)](https:\u002F\u002Fubuntu.com\u002Fblog\u002Ftag\u002F22-04-lts) [![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)]()\n\n\n\u003Cimg src=\"https:\u002F\u002Fagile.human2humanoid.com\u002Fstatic\u002Fimages\u002Fasap-preview-gif-480P.gif\" width=\"400px\"\u002F>\n\n\u003C\u002Fdiv>\n\n\u003C!-- # Table of Contents -->\n## 📚 Table of Contents\n\n1. **[Overview](#overview)**  \n   - Links: [Website](https:\u002F\u002Fagile.human2humanoid.com\u002F) • [Arxiv](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2502.01143) • [Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=tu7LSNYWDTs&ab_channel=LeCARLabatCMU)  \n \n\n2. **[Installation & Setup](#installation)**  \n   2.1 [Base Frameworks](#isaacgym-conda-env)  \n   2.2 [IsaacGym Setup](#install-isaacgym)  \n   2.3 [HumanoidVerse Setup](#install-humanoidverse)  \n   2.4 [IsaacSim + IsaacLab Setup](#isaaclab-environment)  \n   2.5 [Genesis Environment Setup](#genesis-environment)  \n\n3. **[Training Pipelines](#motion-tracking-training)**  \n   3.1 [Phase-Based Motion Tracking](#motion-tracking-training)  \n   3.2 [ASAP Delta Action Model](#asap-delta-action-model-training)  \n       - [Train Delta Action Model](#train-delta-action-model)  \n       - [Finetune Policy with Delta Action Model](#use-delta-action-model-for-policy-finetuning)  \n\n4. **[Motion Retargeting to Any Humanoid](#motion-retargeting-to-any-humanoid)**  \n   4.1 [Step 1: SMPL Shape Preparation](#1-smpl-shape-preparation)  \n   4.2 [Step 2: SMPL Motion Preparation (AMASS)](#2-smpl-motion-preparation-amass)  \n   4.3 [Step 3: Robot XML & Motion Config](#3-robot-xml-and-motion-config-preparation)  \n   4.4 [Step 4: Humanoid-SMPL Shape Fitting](#4-humanoid-smpl-shape-fitting)  \n   4.5 [Step 5: Humanoid-SMPL Motion Retargeting](#5-humanoid-smpl-motion-retargeting)  \n\n5. **[Deployment: Sim2Sim & Sim2Real](#sim2simsim2real)**  \n   5.1 [Environment Setup](#environment-setup)  \n   5.2 [Sim2Sim Deployment](#sim2sim)  \n   5.3 [Sim2Real Deployment](#sim2real)  \n\n7. **[Citation](#citation)**  \n\n8. **[License](#license)**\n\n\n## TODO\n- [x] Release code backbone\n- [x] Release phase-based motion tracking training pipeline\n- [x] Release ASAP motion datasets\n- [x] Release motion retargeting pipeline\n- [x] Release sim2sim in MuJoCo\n- [x] Release sim2real with UnitreeSDK\n- [x] Release ASAP delta action model training pipeline\n\n\n# Installation\n\nASAP codebase is built on top of [HumanoidVerse](https:\u002F\u002Fgithub.com\u002FLeCAR-Lab\u002FHumanoidVerse) (a multi-simulator framework for humanoid learning) and [Human2Humanoid](https:\u002F\u002Fgithub.com\u002FLeCAR-Lab\u002Fhuman2humanoid) (our prior work on humanoid whole-body tracking).\n\n[HumanoidVerse](https:\u002F\u002Fgithub.com\u002FLeCAR-Lab\u002FHumanoidVerse) allows you to train humanoid skills in multiple simulators, including IsaacGym, IsaacSim, and Genesis. Its key design logic is the separation and modularization of simulators, tasks, and algorithms, which enables smooth transfers between different simulators and the real world with minimum effort (just one line of code change). We leverage this framework to develop [ASAP](https:\u002F\u002Fagile.human2humanoid.com\u002F) and study how to best transfer policies across simulators and the real world.\n\n## IsaacGym Conda Env\n\nCreate mamba\u002Fconda environment, in the following we use conda for example, but you can use mamba as well.\n\n```bash\nconda create -n hvgym python=3.8\nconda activate hvgym\n```\n### Install IsaacGym\n\nDownload [IsaacGym](https:\u002F\u002Fdeveloper.nvidia.com\u002Fisaac-gym\u002Fdownload) and extract:\n\n```bash\nwget https:\u002F\u002Fdeveloper.nvidia.com\u002Fisaac-gym-preview-4\ntar -xvzf isaac-gym-preview-4\n```\n\nInstall IsaacGym Python API:\n\n```bash\npip install -e isaacgym\u002Fpython\n```\n\nTest installation:\n\n```bash\npython 1080_balls_of_solitude.py  # or\npython joint_monkey.py\n```\n\nFor libpython error:\n\n- Check conda path:\n    ```bash\n    conda info -e\n    ```\n- Set LD_LIBRARY_PATH:\n    ```bash\n    export LD_LIBRARY_PATH=\u003C\u002Fpath\u002Fto\u002Fconda\u002Fenvs\u002Fyour_env\u002Flib>:$LD_LIBRARY_PATH\n    ```\n\n### Install HumanoidVerse\n\nInstall dependencies:\n```bash\npip install -e .\npip install -e isaac_utils\npip install -r requirements.txt\n```\n\nTest with:\n```bash\nHYDRA_FULL_ERROR=1 python humanoidverse\u002Ftrain_agent.py \\\n+simulator=isaacgym \\\n+exp=locomotion \\\n+domain_rand=NO_domain_rand \\\n+rewards=loco\u002Freward_g1_locomotion \\\n+robot=g1\u002Fg1_29dof_anneal_23dof \\\n+terrain=terrain_locomotion_plane \\\n+obs=loco\u002Fleggedloco_obs_singlestep_withlinvel \\\nnum_envs=1 \\\nproject_name=TestIsaacGymInstallation \\\nexperiment_name=G123dof_loco \\\nheadless=False\n```\n\u003Cdetails>\n\u003Csummary>Note:\u003C\u002Fsummary>\nThis is ONLY for testing, NOT how we train the locomotion policy in the ASAP paper. But still, you can train a locomotion policy by:\n\n```bash\nHYDRA_FULL_ERROR=1 python humanoidverse\u002Ftrain_agent.py \\\n+simulator=isaacgym \\\n+exp=locomotion \\\n+domain_rand=NO_domain_rand \\\n+rewards=loco\u002Freward_g1_locomotion \\\n+robot=g1\u002Fg1_29dof_anneal_23dof \\\n+terrain=terrain_locomotion_plane \\\n+obs=loco\u002Fleggedloco_obs_singlestep_withlinvel \\\nnum_envs=4096 \\\nproject_name=TestIsaacGymInstallation \\\nexperiment_name=G123dof_loco \\\nheadless=True \\\nrewards.reward_penalty_curriculum=True \\\nrewards.reward_initial_penalty_scale=0.1 \\\nrewards.reward_penalty_degree=0.00003 \n```\n\n\u003C\u002Fdetails>\n\n## IsaacLab Environment\n\n### Install IsaacSim\n1. Download Omniverse Launcher\n2. Install Isaac Sim through launcher\n3. Set environment variables:\n```bash\nexport ISAACSIM_PATH=\"${HOME}\u002F.local\u002Fshare\u002Fov\u002Fpkg\u002Fisaac-sim-4.2.0\"\nexport ISAACSIM_PYTHON_EXE=\"${ISAACSIM_PATH}\u002Fpython.sh\"\n```\n\n### Install IsaacLab\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fisaac-sim\u002FIsaacLab.git\ncd IsaacLab && .\u002Fisaaclab.sh --conda hvlab\nmamba activate hvlab\nsudo apt install cmake build-essential\n.\u002Fisaaclab.sh --install\n```\n\n### Setup HumanoidVerse\n```bash\npip install -e .\npip install -e isaac_utils\n```\n\n## Genesis Environment\n```bash\nmamba create -n hvgen python=3.10\nmamba activate hvgen\npip install genesis-world torch\n```\nInstall dependencies:\n\n```bash\npip install -e .\npip install -e isaac_utils\n```\n\n\n# Motion Tracking Training\n\nTrain a phase-based motion tracking policy to imitate Cristiano Ronaldo's signature Siuuu move\n\n```bash\npython humanoidverse\u002Ftrain_agent.py \\\n+simulator=isaacgym \\\n+exp=motion_tracking \\\n+domain_rand=NO_domain_rand \\\n+rewards=motion_tracking\u002Freward_motion_tracking_dm_2real \\\n+robot=g1\u002Fg1_29dof_anneal_23dof \\\n+terrain=terrain_locomotion_plane \\\n+obs=motion_tracking\u002Fdeepmimic_a2c_nolinvel_LARGEnoise_history \\\nnum_envs=4096 \\\nproject_name=MotionTracking \\\nexperiment_name=MotionTracking_CR7 \\\nrobot.motion.motion_file=\"humanoidverse\u002Fdata\u002Fmotions\u002Fg1_29dof_anneal_23dof\u002FTairanTestbed\u002Fsingles\u002F0-TairanTestbed_TairanTestbed_CR7_video_CR7_level1_filter_amass.pkl\" \\\nrewards.reward_penalty_curriculum=True \\\nrewards.reward_penalty_degree=0.00001 \\\nenv.config.resample_motion_when_training=False \\\nenv.config.termination.terminate_when_motion_far=True \\\nenv.config.termination_curriculum.terminate_when_motion_far_curriculum=True \\\nenv.config.termination_curriculum.terminate_when_motion_far_threshold_min=0.3 \\\nenv.config.termination_curriculum.terminate_when_motion_far_curriculum_degree=0.000025 \\\nrobot.asset.self_collisions=0\n```\n\nAfter training, you can visualize the policy by:\n```bash\npython humanoidverse\u002Feval_agent.py \\\n+checkpoint=logs\u002FMotionTracking\u002Fxxxxxxxx_xxxxxxx-MotionTracking_CR7-motion_tracking-g1_29dof_anneal_23dof\u002Fmodel_5800.pt\n```\n\nThis is the visualization of the policy after traning 5800 iters. The policy is able to imitate the motion of Cristiano Ronaldo's Siuuu move. With more training, the policy will be more accurate and smooth (see the video in the [paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2502.01143)).\n\n\u003Cimg src=\"imgs\u002Fmotion_tracking_5800.gif\" width=\"400px\"\u002F>\n\n\n# ASAP delta action model training\n\nNote that the only difference between the delta action model training and naive motion tracking training is that delta action model needs a motion file with extra keyname `\"action\"` in the motion file, so that the resulting RL policy we are training is able to use the delta action model to `\"control the robot\"` to match the real-world\u002Fsim2sim motions.\n\n\n## Train delta action model\n\n```\npython humanoidverse\u002Ftrain_agent.py \\                                                                                   \n  +simulator=isaacgym \\\n  +exp=train_delta_a_open_loop \\\n  +domain_rand=NO_domain_rand \\\n  +rewards=motion_tracking\u002Fdelta_a\u002Freward_delta_a_openloop \\\n  +robot=g1\u002Fg1_29dof_anneal_23dof \\\n  +terrain=terrain_locomotion_plane \\\n  +obs=delta_a\u002Fopen_loop \\\n  num_envs=5000 \\\n  project_name=DeltaA_Training \\\n  experiment_name=openloopDeltaA_training \\\n  robot.motion.motion_file=\"\u003CPATH_TO_YOUR_MOTION_FILE_WITH_ACTION_KEYNAME>\" \\\n  env.config.max_episode_length_s=1.0 \\\n  rewards.reward_scales.penalty_minimal_action_norm=-0.1 \\\n  +device=cuda:0 \\\n  env.config.resample_motion_when_training=True \\\n  env.config.resample_time_interval_s=10000\n```\n\n## Use delta action model for policy finetuning\n\n\n```\nHYDRA_FULL_ERROR=1 \\\npython humanoidverse\u002Ftrain_agent.py \\\n+simulator=isaacgym \\\n+exp=train_delta_a_closed_loop \\\nalgo.config.policy_checkpoint='\u003CPATH_TO_YOUR_DELTA_A_MODEL>' \\\n+domain_rand=NO_domain_rand_finetune_with_deltaA \\\n+rewards=motion_tracking\u002Freward_motion_tracking_dm_simfinetuning \\\n+robot=g1\u002Fg1_29dof_anneal_23dof \\\n+terrain=terrain_locomotion_plane \\\n+obs=delta_a\u002Ftrain_policy_with_delta_a \\\nnum_envs=4096 \\\nproject_name=DeltaA_Finetune \\\nexperiment_name=finetune_with_deltaA \\\nrobot.motion.motion_file=\"\u003CPATH_TO_YOUR_MOTION_FILE>\" \\\n+opt=wandb \\\nenv.config.add_extra_action=True \\\n+checkpoint=\"\u003CPATH_TO_YOUR_POLICY_TO_BE_FINETUNED>\" \\\ndomain_rand.push_robots=False \\\nenv.config.noise_to_initial_level=1 \\\nrewards.reward_penalty_curriculum=True \\\n+device=cuda:0 \\\nalgo.config.save_interval=5 \\\nalgo.config.num_learning_iterations=1000 \n\n```\n\n\n\n\n\n# Motion Retargeting to Any Humanoid\n\n> [!IMPORTANT]\n> Here we share a generic humanoid motion retargeting pipeline to any humanoid from [PHC](https:\u002F\u002Fgithub.com\u002FZhengyiLuo\u002FPHC). \n\n> [!IMPORTANT]\n> We have provided all the SMPL motions (`ASAP\u002Fhumanoidverse\u002Fdata\u002Fmotions\u002Fraw_tairantestbed_smpl`) and retargtted G1 motions (`ASAP\u002Fhumanoidverse\u002Fdata\u002Fmotions\u002Fg1_29dof_anneal_23dof\u002FTairanTestbed\u002Fsingles`) used in the ASAP paper in this codebase. If you are interested in using these motions G1, you can ignore this section. If you are interested in retargeting other humanoids or other motions, you can follow the steps below to prepare the SMPL shapes and motions.\n\n\nIt has three steps:\n1. SMPL Shape preparation\n2. SMPL Motion preparation\n3. Robot XML and Motion Config preparation\n4. Humanoid-SMPL shape fitting\n5. Humanoid-SMPL motion retargeting\n\n## 1. SMPL Shape preparation\n\nDownload [v1.1.0 SMPL files with pkl format](https:\u002F\u002Fdownload.is.tue.mpg.de\u002Fdownload.php?domain=smpl&sfile=SMPL_python_v.1.1.0.zip) and put it under `humanoidverse\u002Fdata\u002Fsmpl\u002F`, and you should have:\n\n```\n|-- ASAP\n    |-- humanoidverse\n        |-- data\n            |-- smpl\n                |-- SMPL_python_v.1.1.0.zip\n```\n\nThen `cd ASAP\u002Fhumanoidverse\u002Fdata\u002Fsmpl\u002F` and  `unzip SMPL_python_v.1.1.0.zip`, after some copying and moving, you should have:\n\n```\n|-- ASAP\n    |-- humanoidverse\n        |-- data\n            |-- smpl\n                |-- SMPL_python_v.1.1.0\n                |-- models\n                    |-- basicmodel_f_lbs_10_207_0_v1.1.0.pkl\n                    |-- basicmodel_m_lbs_10_207_0_v1.1.0.pkl\n                    |-- basicmodel_neutral_lbs_10_207_0_v1.1.0.pkl\n                |-- smpl_webuser\n                |-- ...\n\n```\n\nRename these three pkl files and move it under smpl like this:\n\n```\n|-- ASAP\n    |-- humanoidverse\n        |-- data\n            |-- smpl\n                |-- SMPL_FEMALE.pkl\n                |-- SMPL_MALE.pkl\n                |-- SMPL_NEUTRAL.pkl\n```\n\n\n## 2. SMPL Motion preparation (AMASS)\nDownload [AMASS Dataset](https:\u002F\u002Famass.is.tue.mpg.de\u002Findex.html) with `SMPL + H G format` and put it under `humanoidverse\u002Fdata\u002Fmotions\u002FAMASS\u002FAMASS_Complete\u002F`.\n\n```\n|-- ASAP\n    |-- humanoidverse\n        |-- data\n            |-- AMASS\n                |-- AMASS_Complete\n                    |-- ACCAD.tar.bz2\n                    |-- BMLhandball.tar.bz2\n                    |-- BMLmovi.tar.bz2\n                    |-- BMLrub.tar\n                    |-- CMU.tar.bz2\n                    |-- ...\n                    |-- Transitions.tar.bz2\n```\n\nAnd then cd ASAP\u002Fhumanoidverse\u002Fdata\u002Fmotions\u002FAMASS\u002FAMASS_Complete\u002F and extract all the motion files by running:\n\n```bash\nfor file in *.tar.bz2; do\n    tar -xvjf \"$file\"\ndone\n```\nThen you should have:\n\n```\n|-- ASAP\n    |-- humanoidverse\n        |-- data\n            |-- AMASS\n                |-- AMASS_Complete\n                    |-- ACCAD\n                    |-- BioMotionLab_NTroje\n                    |-- BMLhandball\n                    |-- BMLmovi\n                    |-- CMU\n                    |-- ...\n                    |-- Transitions\n```\n\n## 3. Robot XML and Motion Config preparation\n\nMake sure you have robot xml and meshes ready at (G1 as example) `humanoidverse\u002Fdata\u002Frobots\u002Fg1\u002Fg1_29dof_anneal_23dof_fitmotionONLY.xml`\nAnd add your config for the robot motion in `humanoidverse\u002Fconfig\u002Frobot\u002Fg1_29dof_anneal_23dof.yaml` with like the following. Remember to link the xml path in the config.\n\n\n## 4. Humanoid-SMPL shape fitting\nRun the following command to fit the SMPL shape to the humanoid.\n```bash\npython scripts\u002Fdata_process\u002Ffit_smpl_shape.py +robot=g1\u002Fg1_29dof_anneal_23dof\n```\nAnd you should have you shape file located at `humanoidverse\u002Fdata\u002Fshape\u002Fg1_29dof_anneal_23dof\u002Fshape_optimized_v1.pkl`\n\nIf you want to visualize the shape, you can run with flag `+vis=True`, then you can have visualization of the fitted SMPL body shape and the humanoid body keypoints like this shape. The blue is the humanoid body keypoints and the orange is the fitted SMPL body keypoint. You can tune the `robot motion` in `humanoidverse\u002Fconfig\u002Frobot\u002Fg1_29dof_anneal_23dof.yaml` to adjust the correspondence, extend links lengths to get better fitted SMPL shape.\n\n\u003Cimg src=\"imgs\u002Fg1_29dof_anneal_23dof_shape.png\" width=\"400px\"\u002F>\n\n## 5. Humanoid-SMPL motion retargeting\nRun the following command to retarget the motion to the humanoid.\n```bash\npython scripts\u002Fdata_process\u002Ffit_smpl_motion.py +robot=g1\u002Fg1_29dof_anneal_23dof\n```\n\n### Visualize motion\nRun\n```bash\npython scripts\u002Fvis\u002Fvis_q_mj.py +robot=g1\u002Fg1_29dof_anneal_23dof +visualize_motion_file=\"humanoidverse\u002Fdata\u002Fmotions\u002Fg1_29dof_anneal_23dof\u002FTairanTestbed\u002Fsingles\u002F0-motions_raw_tairantestbed_smpl_video_side_jump_level4_filter_amass.pkl\"\n```\n\nTo test, and you should have you one single motion file located at `humanoidverse\u002Fdata\u002Fmotions\u002Fg1_29dof_anneal_23dof\u002FTairanTestbed\u002Fsingles\u002F0-motions_raw_tairantestbed_smpl_video_side_jump_level4_filter_amass.pkl`.\n\nIf you want to visualize the motion, you can run\n```bash\npython scripts\u002Fvis\u002Fvis_q_mj.py +robot=g1\u002Fg1_29dof_anneal_23dof +visualize_motion_file=\"humanoidverse\u002Fdata\u002Fmotions\u002Fg1_29dof_anneal_23dof\u002FTairanTestbed\u002Fsingles\u002F0-motions_raw_tairantestbed_smpl_video_side_jump_level4_filter_amass.pkl\"\n```\nYou should have\n\n\u003Cimg src=\"imgs\u002Fg1_29dof_anneal_23dof_motion.gif\" width=\"400px\"\u002F>\n\n\n\n\n# Sim2Sim\u002FSim2Real\n\n## Environment Setup\n\nEnv Installation:\n```\nmamba create -n asap_deploy python=3.10\nmamba activate asap_deploy\n```\n\n\n\nInstall ros2-python\n\n```bash\n# this adds the conda-forge channel to the new created environment configuration \nconda config --env --add channels conda-forge\n# and the robostack channel\nconda config --env --add channels robostack-staging\n# remove the defaults channel just in case, this might return an error if it is not in the list which is ok\nconda config --env --remove channels defaults\n# install the ros2-python package\nconda install ros-humble-desktop\n```\n\nTest Ros2Installation:\n\n```bash\nrviz2\n```\n\nYou should see the UI like this:\n\n\u003Cimg src=\"imgs\u002Frviz.png\" width=\"400px\"\u002F>\n\n\n\nInstall Unitree SDK\n\n```bash\ngit clone git@github.com:unitreerobotics\u002Funitree_sdk2_python.git\ncd unitree_sdk2_python\npip install -e .\n```\n\nminor issue to fix:\n\n```bash\npip install --upgrade numpy scipy\n```\n\n## Sim2Sim\n\n\n\nstart the simulation in the sim2real folder:\n```bash\npython sim_env\u002Fbase_sim.py --config=config\u002Fg1_29dof_hist.yaml\n```\n\nin another terminal, start the policy:\n```bash\npython rl_policy\u002Fdeepmimic_dec_loco_height.py --config=config\u002Fg1_29dof_hist.yaml --loco_model_path=.\u002Fmodels\u002Fdec_loco\u002F20250109_231507-noDR_rand_history_loco_stand_height_noise-decoupled_locomotion-g1_29dof\u002Fmodel_6600.onnx --mimic_model_paths=.\u002Fmodels\u002Fmimic\n```\n\n- click to the policy terminal and press `]` to activate the locomotion policy\n- click to the policy terminal and press `[` to activate the asap policy (phase-based motion tracking policy)\n- click to the policy terminal and press `;` to switch to the asap policy \n- press `i` to make the robot the initial position\n- press `o` to emergence stop the robot\n- press `9` in mujoco viewer to release the robostack\n- press `=` to switch between tapping and walking for the locomotion policy\n- press `w\u002Fa\u002Fs\u002Fd` to control the linear velocity\n- press `q\u002Fe` to control the angular velocity\n- press `z` to set all commands to zero\n\n\nAnd you should be able to play around with some checkpoints from the ASAP paper. Have fun!\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip0-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip1-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip3-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip4-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip5-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"imgs\u002Fasap-sim2sim-clip6-ezgif.com-video-to-gif-converter.gif\" width=\"300px\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C!-- Replace gif1.gif ... gif6.gif with your actual gif filenames and optionally add captions below each if desired -->\n\n\n\n## Sim2Real\n\n`Note from Tairan`: make sure to make the G1 robot to 29dof following this [doc](https:\u002F\u002Fsupport.unitree.com\u002Fhome\u002Fen\u002FG1_developer\u002Fwaist_fastener) and restart the robot after waist unlocking. If you don't know how to log into the Unitree Explore APP, contact unitree support.\n\nEnter Low-Level for g1\n- Open humanoid and wait until the head blue light is constantly on\n- `L2+R2`\n- `L2+A`\n- `L2+B`\n- Connect PC to the G1 by ethernet cable and configure the network following [this document](https:\u002F\u002Fsupport.unitree.com\u002Fhome\u002Fen\u002FG1_developer\u002Fquick_development) \n\nBefore starting the policy, modify the `config\u002Fg1_29dof_hist.yaml` to set `INTERFACE` to `eth0` (if you are using linux), basically the network interface that you are using to connect to the robot with your PC's IP shown as `192.168.123.xxx` in `ifconfig`.\n\nstart the policy:\n```bash\npython rl_policy\u002Fdeepmimic_dec_loco_height.py --config=config\u002Fg1_29dof_hist.yaml --loco_model_path=.\u002Fmodels\u002Fdec_loco\u002F20250109_231507-noDR_rand_history_loco_stand_height_noise-decoupled_locomotion-g1_29dof\u002Fmodel_6600.onnx --mimic_model_paths=.\u002Fmodels\u002Fmimic\n```\n\n\n\n- click to the policy terminal and press `]` to activate the locomotion policy\n- click to the policy terminal and press `[` to activate the asap policy (phase-based motion tracking policy)\n- click to the policy terminal and press `;` to switch to the asap policy \n- press `i` to make the robot the initial position\n- press `o` to emergence stop the robot\n- press `9` in mujoco viewer to release the robostack\n- press `=` to switch between tapping and walking for the locomotion policy\n- press `w\u002Fa\u002Fs\u002Fd` to control the linear velocity\n- press `q\u002Fe` to control the angular velocity\n- press `z` to set all commands to zero\n- press `o` to emergence stop the robot\n\n\n### ‼️Alert & Disclaimer\nDeploying these models on physical hardware can be hazardous. Unless you have deep sim‑to‑real expertise and robust safety protocols, we strongly advise against running the model on real robots. These models are supplied for research use only, and we disclaim all responsibility for any harm, loss, or malfunction arising from their deployment.\n\n\n### Demo code to collect real-world data\nWe provide a demo code to collect real-world data in the `sim2real\u002Frl_policy\u002Flistener_deltaa.py` file. Since MoCap setup is hard to transfer across different robots\u002Flabs, we hope this code can help you to collect data for your own experiments. Contact us (tairanh@andrew.cmu.edu) if you have any questions.\n\n\n\n\n\n# Citation\nIf you find our work useful, please consider citing us!\n\n```bibtex\n@article{he2025asap,\n  title={ASAP: Aligning Simulation and Real-World Physics for Learning Agile Humanoid Whole-Body Skills},\n  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},\n  journal={arXiv preprint arXiv:2502.01143},\n  year={2025}\n}\n```\n\n# License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","ASAP 项目旨在通过将仿真与现实世界物理对齐来学习敏捷人形机器人的全身技能。它利用强化学习技术，结合NVIDIA Isaac Gym和Isaac Sim等先进仿真平台，实现了从模拟到实际环境的有效迁移。项目支持基于阶段的运动追踪训练、ASAP Delta动作模型训练及策略微调，并能够将人类运动数据重定向到任何人形机器人上。适用于需要开发高度灵活且适应性强的人形机器人应用场景，如救援、服务行业以及娱乐领域。",2,"2026-06-11 03:42:49","high_star"]