[Math] In-depth example or implementation of adaptive control (direct/indirect MRAC)

adaptive controlcontrol theoryexamples-counterexamples

I have seen some examples where adaptive control is used to counter sudden changes in a system with great success. Since I find the subject quite interesting, I would like to learn how to actually implement an adaptive control loop, with the end goal being to write a flight controller for a quadcopter (this is something for the future though). I have found some quite good theoretical text-books on the matter, but not really any good in-depth examples or implementations. The methods that seems most interesting to me are the direct and indirect MRAC.

So in short: Where can I find a good in-depth example/implementation of an adaptive control loop?

Best Answer

I would begin with the excellent book by Gang Tao: http://www.amazon.com/Adaptive-Analysis-Learning-Processing-Communications/dp/0471274526/ref=sr_1_1?ie=UTF8&qid=1365779105&sr=8-1&keywords=gang+tao+adaptive+control

You can very easily implement his algorithms in MATLAB/Simulink. For instance, the adaptive dead-zone and backlash algorithms are fairly straightforward.


Shiyu's answer, regrettably, contains a number of false assertions.

In any physical system, you are going to encounter parametric uncertainty. Consider a control actuator in a vehicle. You can spend millions of dollars attempting to identify what the free-play in the actuator will be. Then, you'll drive the vehicle, and the actuator will wear, and that free-play gap will change. Then, you'll bring it in for maintenance, and that gap changes again.

Then, the next vehicle rolls off the assembly line, and it will have a different operational/maintenance history, and have entirely different characteristics. Therefore, any parameter you identify experimentally will be obsolete, and using that value as a ground-truth for your parameterized system could actually be harmful.

MRAC is designed to identify and adapt to these parameters. Therefore, the controller will adapt to whatever the parameter happens to be. Furthermore, in many algorithms, convergence is guaranteed!

Model-building is a necessary step in any control scheme. MRAC allows you to use those same models for your adaptive controller. In fact, adaptive control schemes can sit on top of extant control laws without the need to modify the stable controller at all.

MRAC is not used in flight controls not because it is too slow or too risky; it's because Validation and Verification (V&V) is so expensive and difficult. But for a remote-controlled quadrotor, an adaptive controller is a completely suitable approach. The algorithms are real-time algorithms, so there is no need for multiple iterations per time step. If you have a simple linearized model, all you'll need is to be able to clear a few matrix-vector multiplications in each time step. That's not terribly difficult. Obviously, it depends on the dimensionality of your model, but your quadrotor model shouldn't be that complex.

Related Question