This expression should be pretty familiar to you by this point. This is the rigid body equations of motion of a serial link robot manipulator. We have an inertia term; Coriolis and centripetal term; gravity term; the torque applied the robot; joint acceleration; and joint velocity.
This expression is also known as the inverse dynamics. We can think of it as a function that maps the motion of the robot Q, Q-dot and Q-dot-dot, to the torque that needs to be implied to the robots' joints. We take this expression and re-arrange it. We end up with an expression for Q-dot-dot, and we can integrate Q-dot-dot with respect to time to get Q-dot, the joint velocity and we can integrate it again to get the joint position.
This set of equations is referred to as the forward dynamics. This is a function that maps the torque that we applied to the robot to the joint position, velocity and acceleration. So, these forward dynamics are used to simulate robot motion. If I know the torques and forces that I'm going to apply to the robot manipulator and then I can compute Q, Q-dot and Q-dot-dot as a function of time.
Let's have a look at how we can use the four dynamics to simulate the motion of a complex 6 axis robot like the Puma 560. I'm going to start by loading a model of the Puma 560 into my workspace as we've done a number of times before and I'm going to invoke a simulink model that is provided with the Robotics Toolbox, and this is what it looks like. It's quite a simple model. It contains a robot with no Coulomb friction, and connected to an animation or plotting block. And the robot is driven by zero torques. So if you imagine a robot sitting in a normal configuration and I turn off all the joint torque, the robot is going to collapse under its own weight.
So, I can run that simulator and here we see the Puma robot and it's collapsing under gravity, and because of the joint friction, the energy is rapidly dissipated and the robot is left in a downward pointing configuration.
So far we have worked out the torques on a robot’s joints based on joint position, velocity and acceleration. For simulation we want the opposite, to know its motion given the torques applied to the joints. This is called the forward dynamics problem.
This content requires an understanding of undergraduate-level engineering; for example, dynamics, classical control theory - PID, poles, zeros, probability theory - random variables and Bayes’ rule.
This content requires an understanding of undergraduate-level mathematics; for example, linear algebra - matrices, vectors, complex numbers, vector calculus and MATLAB programming.