Skip to content

Benchmarking contact models and solvers from robotics simulators.

License

Notifications You must be signed in to change notification settings

Simple-Robotics/ContactBench

Repository files navigation

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published