Pybullet implementation of SamCon (SIGGRAPH 2010 paper "Sampling-based Contact-rich Motion Control").
Humanoid cannot track the reference motion (exhibited in transparency) by using PD controllers.

Use SamCon to reconstruct a modified motion which can be tracked by using PD controllers.

pybullet
numpy
json
time
math
tensorboardXWe provide two motion examples at example/walk.txt & run.txt.
To visualize the example, you can follow:
cd SamCon
python test/test_samcon.pyIf you want to perform SamCon on other motion sequences, you can also use the test/test_samcon.py, but you need to make some changes on it.
We use tensorboardX to quantitatively compare the sampled and reference pose.
To compare example/walk.txt & run.txt, you can follow:
cd SamCon/example/tensorboardX
tensorboard --logdir ./info
If you want to perform on your own result, modify and run test/draw_curve.py.
@incollection{liu2010sampling,
title={Sampling-based contact-rich motion control},
author={Liu, Libin and Yin, KangKang and van de Panne, Michiel and Shao, Tianjia and Xu, Weiwei},
booktitle={ACM SIGGRAPH 2010 papers},
pages={1--10},
year={2010}
}
Zhihu tutorial - SamCon: sampling based controller
Github repository - kevinxie4c/samcon