# Rolling test

Rolling test is for testing frictional contact behaviors. In this test, we simulated simple system of primitive ball and box shaped objects and investigated the trajectory of the objects.

The test focuses on:

- The quality of the friction cone (linear or elliptic)
- The accuracy of frictional contact simulation
- The speed of many primitive shaped objects simulation

## Test scenario

The setup of the test is as follows:

- static ground
- 10 kg box on the ground
- 25 number of 1 kg balls on the box
- the friction coefficient
- 0.8 for ball-box pair
- 0.4 for box-ground pari
- 150 N force applied to box in the xy direction

- ERP = 0 and CFM = 0
- dt = 0.001
- Metric: error obtained by comparing velocity of objects in simulation and analytical solution

## Tested solver list

- Rai
- Bisection method

- Bullet
- Sequential Impulse

- ODE
~~Dantzig~~- LCP PGS

- MuJoCo
- PGS
- CG
- Newton

- Dart
- Dantzig
- LCP PGS

Note that ODE Dantzig solver fails when ERP is set to zero: the box goes into the ground as this video.

## Results

We investigated the speed-accuracy curve of each engines: how the accuracy of the fricitional contact simulation changes over the number of solver iteration.

As expected, the pushing force resulted in no motion in ODE and Dart that is due to their pyramid shaped friction cone. As the same size force is applied to y direction, the objects move.

MuJoCo has jittery trajectory that leads to the large error. This is due to the soft contact model of MuJoCo that has inherent constant vibrating motion. The objects oscillate significantly as the time step size increases.

Although RaiSim's accuracy is saturated by a numerical error of the solver, the error is negligible. Remarkably, Bullet performed exceptionally in terms of the accuracy of the solver.

Besides, RaiSim is notably fast than other for the simulation. Note that the following plot describes the speed of the simulation with default solver parameters.