Indirect Adaptive Control

In my robot control class, we learned about sliding mode controllers and how they were able to handle model uncertainty.  In theory, these types of controllers can work incredibly well when compared with linear controllers.  However, when I implemented the controller for a laboratory exercise, I was disappointed to see that there was only a minor improvement.  Despite a great deal of time working to properly tune the gains, I was unable to obtain results nearly as good as the simulations.

To a certain extent, this is expected:  real systems rarely work as well as simulation.  But I was determined to see it do better.  So, I developed it as an indirect adaptive controller.  That is, I developed an adaptive controller, which is able to automatically adjust gains and parameter estimates.  This controller can converge to a tracking error of 0, even if the parameters it find are incorrect.  The question for me was whether using these parameters, which were wrong, in the sliding mode controller could improve performance.

The image below shows the joint errors (in degrees) for the robot with the sliding-mode controller, and the adapted sliding-mode controller.  In each case, the end effector's commanded trajectory was a circle.  Each color is a different joint error.  While the error was not eliminated completely, it was reduced significantly


The image below shows how the end effector deviated from its desired position.  The desired is shown in red, and the actual is shown in blue.  In both cases, most of the red is difficult to see because it is followed so precisely.  However, towards the bottom left of the circle, the adapted sliding-mode controller has a significantly better performance.

From this project, I developed the following skills:

1)      Critical thinking for developing technical methods
2)      Nonlinear control
3)      Cross application of knowledge