# Overview

Impact and friction behaviors are modeled, along with the system’s dynamics, as a nonlinear complementarity problem (NCP). This model simulates hard contact without requiring system-specific solver tuning. Additionally, contacts between a system and the environment are treated as a single graph node connected to a rigid body (see below). As a result, the simulator retains efficient linear-time complexity for open-chain mechanical systems.

Three contact models are implemented in Dojo:

`ImpactContact`

enforces frictionless contact,`NonlinearContact`

enforces contact with a non-linear cone of friction (second-order cone),

`LinearContact`

enforces contact with a linearized cone of friction (pyramidal cone).

All 3 of these contact models implement hard contact i.e., no interpenetration. This means that for both the nonlinear and linearized cones, we concatenate the constraints resulting from friction with the impact constraints.

### Implementation

Dojo currently supports contact constraints occurring between a sphere and the ground i.e., a horizontal half-space of altitude 0.0. Each spherical contact is attached to a single `Body`

.

To create a new point of contact, we need to define:

- the
`Body`

to which the contact constraint is attached - radius of the sphere defining the spherical contact
- coefficient of friction (except for
`ImpactContact`

)

### Example

For the Quadruped model shown in the picture below, we defined 12 contacts spheres show in red:

- 4 for the feet,
- 4 for the knees,
- 4 for for the hips.