Rigid Body Integrators

The work shown here was done as part of my Ph.D. degree at the Mechanical and Aerospace Engineering Department of the University of California, Irvine. I started my research on rigid body integrators sometime during 2014 and became an integral part of my Ph.D. Thesis.

After working on the Eigenpostures project for a couple of years, it was clear that some integration schemes have a hard time integrating rotations. Some of the motions obtained for human high-divers would show a substantial change in angular momentum. We derived a second order integrator, which would keep the angular momentum variation smaller. However, we later found that the derived integrator, together with many others, had already been derived by Samuel Buss back in 2000.

We implemented a wide range of integrators to work with rigid body dynamics, with special emphasis on the rotational part of the integration, and sought one that was accurate and efficient. A combination of the classic fourth order Runge-Kutta method (for the translational part of the motion), and the Runge-Kutta-Munthe-Kaas method (for the rotational part of the motion), was the most efficient of the algorithms tested. It is a fourth order explicit algorithm and reached higher levels of accuracy for a set computation time.

The use of first order contact resolution algorithms reduced the overall accuracy of the simulations to order one. Even with that being the case, higher order algorithms performed  better than first order algorithms in terms of numerical stability and overall accuracy. In order to test the performance of the different integrators, we set up a simulation of a spinning top. The motion is convenient as it showcases the behavior of the different integrators when dealing with contacts and fast spinning rigid bodies. See an example of integrator comparison on the next video

An area that commonly uses rigid body dynamics integrators is video game industry. However, they prioritize integrators that require a small computation effort and keep energy bounded while accuracy has a lower priority. Semi-implicit Euler is most often the integrator of choice, even though is only first order accurate.

For more information about the work discussed here, see Part II of my Ph. D. Thesis. I am planning to make the code available as a Github repository.