SIGGRAPH 2021: Discovering Diverse Athletic Jumping Strategies
We suspect there are bugs in linux gcc > 9.2 or kernel > 5.3 or our code somehow is not compatible with that. Our code has large numerical errors from unknown source given the new C++ compiler. Please use older versions of C++ compiler or test the project on Windows.
This project has C++ components. There is a
cmake project inside
Kinematic folder. We have setup the CMake project so that it can be built on both linux and Windows. Use
cmake-gui or visual studio to build the project. It requires
Install the Python requirements listed in
requirements.txt. The version shouldn't matter. You should be safe to install the latest versions of these packages.
To visualize training results, please set up our simulation renderer.
- Clone and follow build instructions in UnityKinematics. This is a flexible networking utility that will send raw simulation geometry data to Unity for rendering purpose.
[UnityKinematics build folder]/pyUnityRendererto this root project folder.
- Here's a sample Unity project called SimRenderer in which you can render the scenes for this project. Clone SimRenderer outside this project folder.
- After building UnityKinematics, copy
[UnityKinematics build folder]/Assets/Scripts/APIto
SimRenderer/Assets/Scripts. Start Unity, load SimRenderer project and it's ready to use.
We have included a pre-trained model in
results/vae/models/13dim.pth. If you would like to retrain the model, run the following:
This will generate the new model in
results/vae/test**/test.pth. Copy the
.pth file and the associated
.pth.norm.npy file into
presets/default/vae/vae.yaml under the
model key to use your new model.
python train.py runup
presets/custom/runup.yaml to change parts of the target take-off features. Refer to Appendix A in the paper to see reference parameters.
After training, run
python once.py runup no_render results/runup***/checkpoint_2000.tar
to generate take-off state file in
npy format used to train take-off controller.
env.highjump.initial_state to the path to the generated take-off state file, like
results/runup***/checkpoint_2000.tar.npy. Then change
env.highjump.wall_rotation to specify the wall orientation (in degrees). Refer to Appendix A in the paper to see reference parameters (note that we use radians in the paper). Run
python train.py jump
to start training.
Start the provided SimRenderer (in Unity), enter play mode, the run
python evaluate.py jump results/jump***/checkpoint_***.tar
to evaluate the visualize the motion at any time. Note that
env.highjump.initial_wall_height must be set to the training height at the time of this checkpoint for correct evaluation. Training height information is available through training logs, available both in the console and through tensorboard logs. You can start tensorboard through
python -m tensorboard.main --bind_all --port xx --logdir results/jump***/