Drake
Multibody dynamics constraints in Drake
Collaboration diagram for Multibody dynamics constraints in Drake:

Modules

 Variable definitions
 
 Constraint types
 Constraints can be categorized as either bilateral ("two-sided" constraints, e.g., g(q) = 0) or unilateral ("one-sided" constraints, e.g., g(q) ≥ 0).
 
 Constraint stabilization
 Both truncation and rounding errors can prevent constraints from being exactly satisfied.
 
 Contact surface constraints
 Consider two points pᵢ and pⱼ on rigid bodies i and j, respectively, and assume that at a certain configuration of the two bodies, ᶜq, the two points are coincident at a single location in space, p(ᶜq).
 
 References
 Sources referenced within the multibody constraint documentation.
 

Detailed Description

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.

Drake's constraint system helps solve computational dynamics problems with algebraic constraints, like differential algebraic equations:

ẋ = f(x, t, λ)
0 = g(x, t, λ)

where g() corresponds to one or more constraint equations and λ is typically interpretable as "forces" that enforce the constraints. Drake's constraint system permits solving initial value problems subject to such constraints and does so in a manner very different from "smoothing methods" (also known as "penalty methods"). Smoothing methods have traditionally required significant computation to maintain g = 0 to high accuracy (and typically yielding what is known in ODE and DAE literature as a "computationally stiff system").

We also provide the core components of an efficient first-order integration scheme for a system with both compliant and rigid unilateral constraints. Such a system arises in many contact problems, where the correct modeling parameters would yield a computationally stiff system. The integration scheme is low-accuracy but very stable for mechanical systems, even when the algebraic variables (i.e., the constraint forces) are computed to low accuracy.

This discussion will provide necessary background material in:

and will delve into the constraint solver functionality in:

A prodigious number of variables will be referenced throughout the discussion on constraints. Variables common to both acceleration-level constraints and velocity-level constraints will be covered in Variable definitions.

References for this discussion will be provided in References.