Simple-Robotics / ContactBench

Benchmarking contact models and solvers from robotics simulators.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contact Bench

C++ implementation of various contact models and solvers used for robotics simulation.

The contact problem

The contact problem is formulated as a Non-linear Complementarity Problem (NCP):

$$ \begin{align} &c = G \lambda + g \\ &\mathcal{K} \ni \lambda \perp c + {\Phi}(c) \in \mathcal{K} \\ \end{align} $$

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.

Requirements

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.

Citing this work

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}
}

Credits

The following people have been involved in the development of Contact Bench:

About

Benchmarking contact models and solvers from robotics simulators.

License:BSD 2-Clause "Simplified" License


Languages

Language:C++ 75.6%Language:Python 23.0%Language:CMake 1.4%