Lie Group Formulation of Articulated Rigid Body Dynamics

It has been usual in most old-style text books for dynamics to treat the formulas describing linear(or translational) and angular(or rotational) motion of a rigid body separately. For example, the famous Newton’s 2nd law, f = ma, for the translational motion of a rigid body has its partner, so-called the Euler’s equation which describes the rotational motion of the body. Separating translation and rotation, however, causes a huge complexity in deriving the equations of motion of articulated rigid body systems such as robots. In Section 1, an elegant single equation of motion of a rigid body moving in 3D space is derived using a Lie group formulation. In Section 2, the recursive Newton-Euler algorithm (inverse dynamics), Articulated-Body algorithm (forward dynamics) and a generalized recursive algorithm (hybrid dynamics) for open chains or tree-structured articulated body systems are rewritten with the geometric formulation for rigid body. In Section 3, dynamics of constrained systems such as a closed loop mechanism will be described. Finally, in Section 4, analytic derivatives of the dynamics algorithms, which would be useful for optimization and sensitivity analysis, are presented.1 1 Dynamics of a Rigid Body This section describes the equations of motion of a single rigid body in a geometric manner. 1.1 Rigid Body Motion To describe the motion of a rigid body, we need to represent both the position and orientation of the body. Let {B} be a coordinate frame attached to the rigid body and {A} be an arbitrary coordinate frame, and all coordinate frames will be right-handed Cartesian from now on. We can define a 3× 3 matrix R = [xab, yab, zab] (1) where xab, yab, zab ∈ <3 are the coordinates of the coordinate axes of {B} with respect to {A}. A matrix of this form is called a rotation matrix as it can be used to describe the orientation(or rotation) of a rigid body, relative to a reference frame. Since the columns GEAR (Geometric Engine for Articulated Rigid-body simulation) is a C++ implementation of the algorithms presented in this article. (http://www.cs.cmu.edu/~junggon/tools/gear.html)