Drake

Modules  
Variable definitions  
Constraint types  
Constraints can be categorized as either bilateral ("twosided" constraints, e.g., g(q) = 0) or unilateral ("onesided" constraints, e.g., g(q) ≥ 0).  
Constraint stabilization  
Both truncation and rounding errors can prevent constraints from being exactly satisfied.  
Constraint Jacobian matrices  
Much of the problem data necessary to account for constraints in dynamical systems refers to particular Jacobian matrices.  
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.  
This documentation describes the types of multibody constraints supported in Drake, including specialized constraint types namely pointbased 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 firstorder 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 lowaccuracy 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 accelerationlevel constraints and velocitylevel constraints will be covered in Variable definitions.
References for this discussion will be provided in References.