<p align="center"> <img src="https://user-images.githubusercontent.com/17752950/136691724-722d1522-8e24-44fc-85a1-c72e25a49f6b.gif" height="180"> <img src="https://user-images.githubusercontent.com/17752950/136691341-19d558a4-4b52-4abe-b0da-6e841495c4c0.png" height="180"> <img src="https://user-images.githubusercontent.com/17752950/136691348-1c449fed-6fc6-4126-b9ce-303143e4d922.png" height="180"></p>
Up to now, several key features were missing for the impulse-based LCP contact model to support most cases, and LCP solver was not mature enough to ensure smooth continuous dynamics. The impulse contact model now can handle any contact normal, which makes it suitable for uneven grounds. Moreover, a fast random tile ground generator has been added to easily create parametric challenging environments suitable for curriculum learning. Ultimately, the rendering of engine ground profile is now fully integrated in the viewer for panda3d backend. It will automatically renders the actual ground profile during replay of simulations. The minor release tag has been updated to highlight that impulse contact model is no longer experimental.
New features
* [core] Add support of torsional friction and contact normal to impulse contact model.
* [python/generator] Add random tile ground profile generator.
* [python/viewer] Add support of contact frames display.
* [python/viewer] Add method to render floor based on 'HeatMapFunctor'.
* [python/simulator] 'replay' now display the ground profile used by the engine.
* [gym/rllib] Add temporal barrier regularizer to PPO.
Improvements
* [core] Move init of contact solver in reset instead of setOptions.
* [core] Proper default 'stabilizationFreq' for impulse contact model.
* [core] 'engine_options.contacts.stabilizationFreq' only applies to contact constraints.
* [python/viewer] 'update_floor' method in panda3d now expects numpy array instead of callable to fix serialization issues.
* [python/viewer] Speedup rendering of ground profile and improve visual by providing normal to panda3d.
* [python/viewer] Add option to enable/disable display of ground profile meshes.
* [python/simulator] Do not reset camera pose if gui already available.
Patches and bug fixes
* [python/robot] Fix support of URDF model with a single link for automatic hardware config generation.
* [python/viewer] Add support of ipykernel 6 for meshcat backend interactive display.
* [python/dynamics] Mitigate a weird segfault in pinocchio bindings of 'centerOfMass' method.
* [gym/common] Fix automatic telemetry registration of the action.
Miscellaneous
* [gym/envs] Set baumgarte frequency for cassie internal constraints.
* [misc] Enforce scipy>=1.2.0 to fix buggy optimizer.
* [misc] Update 'typing_extensions' required version to fix pylint support for Python 3.6.