We've covered an awful lot of ground in this particular lecture, so let's summarise some of the most important points.
In the last lecture, we considered a very simplistic control case. We called it independent joint control and we ignored facts like gravity, but in a real robot such as the PUMA robot, shown here in this particular configuration, we can imagine the torque that must be required at the shoulder joint and at the elbow joint in order to stop the robot collapsing under the effect of gravity.
So this was the robot joint control we had for the independent control case and we modified that. We introduced the disturbance torque, and this might be due to non-linear friction or it might be due to gravity. This is the disturbance force TD.
And then we looked at the effect that the disturbance torque has on the joint position and it can be significant, so it's something that we need to deal with.
We then considered a very simple case: a single motor attached to a link, and the link has got mass. If a joint is controlled by a PD controller, a pretty typical sort of controller for a robot joint, then we saw that the effect of gravity is to deflect the joint, introducing a positioning error. The joint angle is not the desired joint angle. And the amount of that error is inversely proportional to the controller gain P, so if we want to make the error very small, we need to use a very high gain. But we saw that there is some consequences with increasing the gain, in particular, increased overshoot in our joint control system.
So another strategy that we looked at then is to introduce an integral term. This is a term that ramps up while there is a positioning error, increasing the torque in the joint until the error is eliminated.
Another strategy we looked at is feedforward control. And here, we assume that we can estimate the disturbance torque and in the case of gravity, that's most certainly the case. So, we estimate what gravity should be and multiply it by a gain and introduce it into the output of our controller, and that cancels out the actual disturbance.
This is a technique that works well even if our estimate is not too precise. Partial cancellation of disturbance is better than no cancellation at all.
Next we considered the dynamic parameters of a serial link manipulator. We've looked at this simple robot earlier when we were studying kinematics. Now we want to understand the dynamics of this.
So we've indicated the center of mass of each of the links, and we described the position of the center of mass of each link with respect to the link coordinate frame and the inertia of each link. The mass is a scalar, the position of the center of mass is a three-element vector, and the inertia is a three by three matrix, it's a symmetric matrix, so it actually has only six unique elements. So each link is therefore described by ten dynamic parameters.
The dynamics of moving bodies is described by a number of mathematical techniques. And we used a combination of Newton's second law, F equals MA and Euler's equation for rotational motion. Together, we call this a Newton-Euler method.
And we then described a very efficient computer algorithm, the recursive Newton-Euler algorithm, which we can use in MATLAB to compute joint talks as a function of Q, Q dot, and Q double dot.
We didn't go into the details of the recursive Newton-Euler method. You can find the details in many textbooks and you can look at the code provided with Toolbox.
The expressions for robot joint talk as a function of Q, Q dot, and Q double dot are actually quite complicated but they can be factorised and expressed in a very concise matrix equation. So the torque applied to the joint comprises an inertial term, a Coriolis and centripetal term and gravity term. We then spend a little bit of time investigating in detail each of these terms.
When it comes to control of a particular robot joint, things are much more complicated than they were in the independent joint control situation. Then, we had only to deal with the first two terms. Now we have to deal with torques that are due to acceleration of all the other robot's joints, the velocity of all the robot's other joints, and the influence of gravity.
With some mathematical manipulation, we can get this down to a fairly concise equation, which looks like this. And the bottom line is that the inertia of the robot joint is a function of the configuration of the entire robot, it's no longer a constant.
We have the viscous friction term and we have the disturbance torque term, which is due to acceleration and velocity of all the other robot's joints. Time varying inertia is a bit of a problem because it makes it hard to tune the control system to get the best possible settling time and overshoot.
The disturbance torque means more work for the joint controller. It has to be very high performance so that it can reject the disturbance torque and perform accurate path following.
Some techniques to help eliminate these rigid body dynamic effects other introduce a gearbox. It reduces the configuration-dependent inertia, which makes the inertia almost independent of robot configuration and it greatly attenuates the disturbance torque. A gearbox is a cheap trick and most robots include a gearbox anyway to amplify the torque of high-speed electric motors.
We can also apply a computational technique called torque feedforward control or computed torque control. Effectively, what we're doing here is trading mechanical complexity and cost - for instance, the addition of a gear box - with computation. The computation is getting cheaper and cheaper year on year.
We can rearrange the rigid body equations of motion into this form. We can get an expression for Q dot dot - the join acceleration - in terms of the torque that I applied to a robot.
I can integrate the acceleration to get velocity, integrated again to get position, and now what I have is the forward dynamics of the robot manipulator. This is a function which gives me the motion of the robot as a function of torque. And this is really useful when I want to simulate the robot motion in a real world setting with a controller that I design.
We recap the important points from this masterclass.
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.