In Chapter 8, we study the dynamics of open-chain robots. For example, the forward dynamics
problem is to calculate the joint accelerations theta-double-dot given the current joint positions
theta, the joint velocities theta-dot, and the forces and torques tau applied at each
joint. The forward dynamics is useful for simulation.
The inverse dynamics problem is to find the joint forces and torques tau needed to create
the acceleration theta-double-dot for the given joint positions and velocities. The
inverse dynamics is useful in control of robots.
Robot dynamics is necessary not just for simulation and control, but also for the analysis of
robot motion planners and controllers, as we'll see in chapters 9 through 11.
In this book we study two approaches to solving the forward and inverse dynamics problems.
The first is the Lagrangian formulation, a variational approach based on the kinetic
and potential energy of the robot. The second approach is the Newton-Euler formulation,
which relies on f equals m_a applied to each individual link of the robot. The focus of
Chapter 8 is primarily on the Newton-Euler formulation, because it uses some of the geometric
tools we have already developed, and it results in an efficient recursive algorithm for calculating
the inverse dynamics.
In this video, though, we start with the Lagrangian formulation, due to its conceptual simplicity.
The key object in the Lagrangian formulation is the Lagrangian L. The Lagrangian for a
mechanical system is its kinetic energy minus its potential energy. The potential energy
P depends only on the configuration theta, while the kinetic energy K depends on theta
and theta-dot.
I won't derive the Lagrangian equations of motion, which you can find in many textbooks
on mechanics. I'll just state the result: the vector of joint forces and torques tau
is equal to the time derivative of the partial derivative of L with respect to theta-dot
minus the partial derivative of L with respect to theta. The joint forces and torques tau
are dual to the joint velocities theta-dot, meaning that tau dotted with theta-dot represents
the power consumed or produced by the joints.
We can write this vector equation in its components as shown here, where tau_i is the i-th element
of the n-vector tau.
Let's apply the formulation to a 2R robot in gravity. The lengths of the links are L_1
and L_2, and all the mass of the robot is concentrated in point masses m_1 and m_2 as
shown. We need to calculate the kinetic and potential energy of the two-point masses,
so first we calculate the position of mass_1, given by the coordinates x_1 and y_1. We can
take the derivative to get the velocity of m_1. We can do the same for mass_2, deriving
its position and velocity. With this information, we can calculate the kinetic energy of link_1
as one-half m_1 v_1-squared, where v_1-squared is just x_1-dot-squared plus y_1-dot-squared.
Applying our earlier derivation, the kinetic energy simplifies to one-half m_1 L_1-squared
theta_1-dot-squared. We can similarly calculate the kinetic energy of link_2. The potential
energy of each mass depends only on its height, or its y-coordinate.
Now we can calculate the Lagrangian as the sum of the kinetic energies minus the potential
energies of the links, and express the joint torques in terms of the derivatives of the
Lagrangian. This is tedious to do manually, but let's look at how we would calculate the
derivatives for one particular component of the Lagrangian, which I'll call L_comp. The
impact of this component of the Lagrangian on the torque at the second joint is tau_2comp.
If we take the partial derivative of L_comp with respect to theta_2-dot, we get m_2 L_1
L_2 theta_1-dot cosine of theta_2, and if we take the time derivative of that, we get
the expression you see here. Now we can subtract the partial derivative of L_comp with respect
to theta_2 to get this expression. The last two terms cancel, so the final torque at joint
2 due to L_comp is m_2 L_1 L_2 theta_1-double-dot cosine theta_2.
If we do these calculations for all the terms in the Lagrangian, we get these equations
of motion. Even for a simple 2R robot, the equations are rather complicated. Notice that
some terms are linear in the joint acceleration theta-double-dot, some terms do not depend
on the joint acceleration but instead depend on a product of joint velocities, like theta_1-dot
times theta_2-dot or theta_2-dot-squared, and some terms have no dependence on the joint
velocities or accelerations. With this observation, we can write the vector equation of motion
in this form: tau equals M of theta times theta-double-dot plus c of (theta, theta-dot)
plus g of theta, where the matrix M and the vectors c and g are shown here. We call M
the mass matrix. For a robot with n joints, this matrix is n-by-n, and for our 2R example
it is 2-by-2. We call the vector c a velocity-product term, since it is composed of terms with a
theta_i-squared or a theta_i times theta_j in it. Finally, we call the vector g the gravity
term, since it depends on gravity. We call this a gravity term under the assumption that
the potential energy comes only from gravity, but if there were springs at the robot joints,
those springs would also contribute to the potential energy and therefore to g of theta.
Overall, this equation looks like f equals m-a plus a gravity force, except that the
accelerations of the masses depend not only on the joint accelerations but also products
of the joint velocities. These velocity-product terms appear because the joint coordinates
are not inertial coordinates. We will explore velocity-product terms in more detail in the
next video.
There is one more term we could add to the right-hand side, the Jacobian transpose times
F_tip, where F_tip is the wrench that the end-effector applies to the environment. We
learned about this term in Chapter 5. In the next video we'll take a closer look
at velocity-product terms.