  Physics simulation is ubiquitous in robotics. Whether in model-based
approaches (e.g., trajectory optimization), or model-free algorithms (e.g.,
reinforcement learning), physics simulators are a central component of modern
control pipelines in robotics. Over the past decades, several robotic
simulators have been developed, each with dedicated contact modeling
assumptions and algorithmic solutions. In this article, we survey the main
contact models and the associated numerical methods commonly used in robotics
for simulating advanced robot motions involving contact interactions. In
particular, we recall the physical laws underlying contacts and friction (i.e.,
Signorini condition, Coulomb's law, and the maximum dissipation principle), and
how they are transcribed in current simulators. For each physics engine, we
expose their inherent physical relaxations along with their limitations due to
the numerical techniques employed. Based on our study, we propose theoretically
grounded quantitative criteria on which we build benchmarks assessing both the
physical and computational aspects of simulation. We support our work with an
open-source and efficient C++ implementation of the existing algorithmic
variations. Our results demonstrate that some approximations or algorithms
commonly used in robotics can severely widen the reality gap and impact target
applications. We hope this work will help motivate the development of new
contact models, contact solvers, and robotic simulators in general, at the root
of recent progress in motion generation in robotics.
