Drake
Multibody Dynamics Concepts

## Modules

Terminology and Notation
Drake uses consistent terminology and notation for multibody mechanics.

Spatial Algebra
Multibody dynamics involves both rotational and translational quantities, for motion, forces, and mass properties.

Multibody dynamics constraints
This documentation describes the types of multibody constraints supported in Drake, including specialized constraint types- namely point-based contact constraints that allow Drake's constraint solver to readily incorporate the Coulomb friction model.

## Detailed Description

Translating from the mathematics of multibody mechanics to correct code is a difficult process and requires careful discipline to ensure that the resulting code is correct.

In Drake we use terminology, notation, and abstractions that have been designed specifically to reduce the possibility of errors, based on these observations:

• Good abstractions lead to good code.
• You can't reason properly about spatial algorithms if you treat translation and rotation separately.
• Coded algorithms should be comparable line-by-line against the typeset literature sources from which they are derived.
• We need a shared, unambiguous notation in code that can employ programmers' awesome pattern-matching skills to make errors visible.

In this section we provide general documentation about our terminology, notation, and abstraction choices in a form that can be referenced from code documentation. Much of the information here is most useful for programmers who are writing or reading Drake multibody code. Some comments are specifically targeted to those developers, and formatting compromises have been made so that the information in this section is (mostly) readable from the source code used to generate it (for example, ASCII drawings instead of image files, simple Markdown tables rather than fancy-but-unreadable html ones). However, much of this can be useful to users of the Drake API also so it is included in the external documentation.

Warning
Drake is under development and these concepts have not yet been adopted consistently throughout the code. New code uses these concepts and older code will be retrofitted over time. The documentation here applies to the new MultibodyTree / MultibodyPlant family of classes; there are some differences from the earlier RigidBodyTree family.

Developers: you can link directly to specific discussion topics here from your Doxygen comments; instructions are at the top of the source file used to generate them.

Next topic: Terminology and Notation