The Manipulator Equation: Inertia, Coriolis, Gravity
Learning Objectives
- Write the manipulator equation and say which parts are unique (, and the vector ) and which part is a choice (the matrix ).
- Build from Christoffel symbols, and show by a run that is skew-symmetric for this choice and not for other valid choices.
- Separate skew-symmetry from the energy identity , which every valid satisfies.
- State the physical effect of the inertia, centrifugal, Coriolis and gravity terms by simulating them one at a time, and predict how each scales with speed.
Context & Motivation
lagrangian-dynamics-of-an-open-chain-robot produced the two joint torques of a planar arm as long expressions. Controllers, simulators and stability proofs need them in one standard shape, where every term has a name and a matrix. That shape is the manipulator equation. It looks unique, but one of its matrices is not, and a property used in control proofs holds only for a particular choice of it. The second half of the lesson turns each term off and on in simulation, because "Coriolis term" means little until you see what the arm does without it.
Core Theory
The standard form
is the symmetric positive definite mass matrix, so . collects gravity. collects everything quadratic in velocity. Conventions differ between sources. Modern Robotics writes it first with a velocity vector, , and then, as it notes is also common, with a Coriolis matrix: exactly the form above. Tedrake's Underactuated Robotics notes write , with gravity on the right, so , and with a matrix that maps control inputs to generalized forces. Check the sign of the gravity term before copying formulas between the two.
For the two-link arm, with and , the velocity terms of the previous lesson are
Modern Robotics calls terms in centripetal and terms in with Coriolis; Asada's notes speak of the same terms as centrifugal effects, the name used below. So joint 1 feels a Coriolis term and a centrifugal term from joint 2, and joint 2 feels a centrifugal term from joint 1.
The matrix C is a choice
Only the vector is fixed by the dynamics. Any matrix that produces it is valid. Two choices for the two-link arm:
Multiplying either by gives the vector above. A third one appears in print: Tedrake's notes give a for the simple double pendulum and remark that the choice was not unique.
The first one is the Christoffel choice. With the Christoffel symbols of the first kind
which is Equation (8.19) of Modern Robotics. For the two-link arm only and depend on , through , and SymPy applied to the assumed arm () returns , , , , the matrix above.
Skew-symmetry, and the weaker identity
Proposition 8.1 of Modern Robotics: with defined by (8.19), is skew-symmetric. For the two-link arm, , and
The first is skew-symmetric; the second has a nonzero diagonal and is not. Tedrake's notes likewise state the property only for an appropriate choice of .
A weaker statement holds for every valid . Differentiate the kinetic energy and substitute the dynamics:
The rate of change of kinetic energy must equal the power of the torques that are not gravity, , so for every that gives the right . Skew-symmetry is the stronger claim for every vector . Modern Robotics uses the property in Section 11.4.2.2, to show that PD control with gravity compensation drives an arm to rest at its setpoint.
Worked Examples
Example 1: two valid matrices at one state
At and rad/s, . Computing by a central difference of along (step s), independently of the formula:
textC = [[ 0.0707, -0.0707], [ 0.1414, 0.0000]] C' = [[ 0.1414, 0.0707], [ 0.1414, 0.0000]] Mdot = [[ 0.1414, 0.0707], [ 0.0707, 0.0000]] Mdot-2C = [[ 0.0000, 0.2121], [-0.2121, 0.0000]] Mdot-2C' = [[-0.1414, -0.0707], [-0.2121, 0.0000]]
Both give N m, the velocity terms of Example 1 in the previous lesson.
Example 2: the property by a run
Draw states with numpy.random.default_rng(7), uniform on and uniform on rad/s, plus a random vector from the same generator's standard_normal(2), in the order , , for each state. Again comes from a central difference:
textstate max|S+S^T|, C max|S+S^T|, C' qdot'S qdot, C qdot'S qdot, C' x'S x, C x'S x, C' 1 2.4e-10 0.529 6.8e-11 6.8e-11 5.4e-11 -0.174 2 1.2e-10 0.428 8.4e-11 8.4e-11 1.8e-11 -0.086 3 6.5e-11 0.058 -7.9e-14 -7.9e-14 4.5e-11 -0.051
Here for each choice, and the residuals near are the finite-difference error in . The Christoffel passes both tests. passes the energy identity along and fails skew-symmetry for a general .
Tedrake's double-pendulum matrix, taken as printed, with point masses and lengths (his angles are measured from the downward vertical, which changes gravity but not or ), at rad and rad/s, gives
Its matches the Christoffel form of the same model, so the matrix is valid, satisfies the energy identity, and is not skew-symmetric.
Example 3: one term at a time
All runs use the assumed arm of the previous lesson, (motion in a horizontal plane) unless stated, and scipy.integrate.solve_ivp with DOP853, rtol=1e-10, atol=1e-12.
Inertia: pushing one joint moves the other. At rest at , apply N m. Then and : joint 2 accelerates backward with no torque of its own, as link 1's acceleration drags the base of link 2 sideways. After 0.2 s, . With the off-diagonal entries of set to zero and everything else kept, .
Centrifugal: spinning joint 1 flings the elbow open. Drive joint 1 at a constant rad/s and leave joint 2 free (), starting at at rest. With , joint 2 obeys , negative for in . The elbow swings open, passes the straight position at s, and swings to on the other side, like a pendulum whose "gravity" is the centrifugal field. With the velocity terms removed, stays at . Holding the elbow at instead takes N m.
Coriolis: folding the elbow speeds up the shoulder. Drive joint 2 from to at rad/s (1.047 s) and leave joint 1 free () with rad/s. As the elbow folds, falls from 1.203 to 0.510 . Since does not depend on and , the momentum , the angular momentum about joint 1, must be conserved:
textvelocity terms in tau_1 qdot_1 at end (rad/s) p_1 start p_1 end both (full model) 3.716 1.7628 1.7628 Coriolis 2h qd1 qd2 only 2.358 1.7628 1.0700 centrifugal h qd2^2 only 1.858 1.7628 0.8148 none 1.000 1.7628 0.3772
Only the full model conserves . This is the effect Modern Robotics compares to a spinning skater who pulls in her arms. Neither part alone conserves : the Coriolis part alone gives about half of the speed-up and the centrifugal part alone about a third, and the two do not simply add, because each one changes and with it the other.
Gravity: what has to be held. Now , at rest with the arm horizontal, . With the arm starts with and after 0.2 s is at . With , which is N m at this pose, the simulated arm stays at for 2 s with zero velocity.
Example 4: how the terms scale with speed
Move from to along , with gravity, and evaluate each term along the path (2001 samples). Peak magnitudes in N m:
textduration T |M qdd| j1, j2 |C qd| j1, j2 |g| j1, j2 |tau| j1, j2 1.0 s 14.60, 3.72 4.35, 2.11 19.18, 3.92 26.59, 7.21 0.5 s 58.42, 14.88 17.39, 8.43 19.18, 3.92 70.40, 18.28
Halving the duration doubles every velocity and quadruples every acceleration, so the inertia and velocity terms grow by exactly 4 while gravity, which depends only on , does not change. In this motion gravity is the largest term at s and inertia is the largest at s, and the velocity terms grow with the square of the speed.
Common Misconceptions & Pitfalls
- " is a unique matrix." Only is unique. Example 1 had two valid matrices, and Tedrake's notes print a third.
- " is always skew-symmetric." Only for the Christoffel choice (or another choice built to have the property). and Tedrake's matrix fail in Example 2.
- " proves skew-symmetry." It holds for every valid , because it is energy balance.
- "Coriolis and centrifugal effects are fictitious, so they cost nothing." In joint coordinates they are real torque demands: 1.8 N m to hold the elbow in Example 3.
- "The off-diagonal of is small enough to ignore." A torque on joint 1 alone accelerated joint 2 at .
- "Gravity is the big term." Only at low speed. In Example 4, halving the duration made the inertia term at joint 1 three times the gravity term.
- "The signs are standard." Some sources put gravity on the right as .
Summary
The manipulator equation puts the dynamics in a standard form in which , and the vector are fixed but the matrix is not. The Christoffel choice makes skew-symmetric, as the runs confirmed to the finite-difference error of , while an equally valid and the printed in Tedrake's notes are not. Every valid satisfies , which is energy balance. Simulated one at a time, the inertia coupling moved a joint that had no torque, the centrifugal term flung a free elbow open while joint 1 spun, the velocity terms sped the shoulder from 1.0 to 3.7 rad/s as the elbow folded, conserving angular momentum, which neither the Coriolis nor the centrifugal part did alone, and gravity was cancelled exactly by . Halving a motion's duration multiplied the inertia and velocity terms by 4 and left gravity unchanged.