C++ implementation of various contact models and solvers used for robotics simulation.
The contact problem is formulated as a Non-linear Complementarity Problem (NCP):
Several algorithms solving this problem or a relaxation of it are implemented and empirically evaluated. We also benchmark various algorithms for gradient computation: automatic and implicit differentiation.
We use Pinocchio for free dynamics and Delassus computation. Collision detection and its gradients are performed with hppfcl. The QP solver ProxSuite is used in some contact models and to compute derivatives. Automatic differentiation is implemented via CppAD.
If you find this helpful work, please cite the related paper:
@article{lelidec2023contact,
title={Contact Models in Robotics: a Comparative Analysis},
author={Le Lidec, Quentin and Jallet, Wilson and Montaut, Louis and Laptev, Ivan and Schmid, Cordelia and Carpentier, Justin}
}
The following people have been involved in the development of Contact Bench:
- Quentin Le Lidec (Inria): main developer and manager of the project
- Justin Carpentier (Inria): manager of the project
- Wilson Jallet (LAAS-CNRS/Inria): core developer
- Fabian Schramm (Inria): core developer
- Louis Montaut (Inria): core developper