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.