  Whether rigid or compliant, contact interactions are inherent to robot
motions, enabling them to move or manipulate things. Contact interactions
result from complex physical phenomena, that can be mathematically cast as
Nonlinear Complementarity Problems (NCPs) in the context of rigid or compliant
point contact interactions. Such a class of complementarity problems is, in
general, difficult to solve both from an optimization and numerical
perspective. Over the past decades, dedicated and specialized contact solvers,
implemented in modern robotics simulators (e.g., Bullet, Drake, MuJoCo, DART,
Raisim) have emerged. Yet, most of these solvers tend either to solve a relaxed
formulation of the original contact problems (at the price of physical
inconsistencies) or to scale poorly with the problem dimension or its numerical
conditioning (e.g., a robotic hand manipulating a paper sheet). In this paper,
we introduce a unified and efficient approach to solving NCPs in the context of
contact simulation. It relies on a sound combination of the Alternating
Direction Method of Multipliers (ADMM) and proximal algorithms to account for
both compliant and rigid contact interfaces in a unified way. To handle
ill-conditioned problems and accelerate the convergence rate, we also propose
an efficient update strategy to adapt the ADMM hyperparameters automatically.
By leveraging proximal methods, we also propose new algorithmic solutions to
efficiently evaluate the inverse dynamics involving rigid and compliant contact
interactions, extending the approach developed in MuJoCo. We validate the
efficiency and robustness of our contact solver against several alternative
contact methods of the literature and benchmark them on various robotics and
granular mechanics scenarios. Our code is made open-source at
https://github.com/Simple-Robotics/Simple.
