I did some research and implemented a self learning PID algorithm. It is located in my cloned repo http://code.google.com/r/litho23-ardupilot/. I really like how it turned out. I hope you all are able to use it with success i'm lacking hardware right now to do further testing.
For those looking at the repo it is in the libraries/PID/ location.
I couldn't figure out how to add a parameter to the EEPROM memory so it is 95% implemented.
At least it was doing something. Thanks for trying it. I tried something similar and it went nuts for awhile, but after a long simulated test flight it seemed to stabilize. Or it was all in my head. I'm trying to think of a better way to test the 'goodness' of this method. Perhaps it is just too slow to for our application. I'll try running it in MATLAB /Simulink with a 50Hz rate and see how it does.
Matt: I think its a worthwhile effort. PID tuning is a pain in the ass for everyone, so if we could have a functional adaptive PID system it would make things a bit easier. Right now I am working on an offline auto PID tuning solution (among other things like auto approach). I think it would be way sexier to have an adaptive PID controller, but it boils down to what works best in the end. I hope you find a way to get it working!
What I just said doesn't make sense.. disregard :-)
Out of curiosity, were you able to use the SITL in the cloud?
I figure out how the SITL stuff works I just haven't gotten around to playing with a ArduCopter version of my code yet. Stay tuned :)
These are the results from my MATLAB / SIMULINK test. I used a simple transfer function of 1/s+10 with a step input. I did have to add a rate limiter to the derivative because it was exploding when it first got hit with a step.
I haven't added a rate limiter to the code, but i'm going to. I also need to find a way to monitor values inside my SLPID while i'm doing HIL or SITL tests.
How's this project going ? Is it ready to use yet ?
Matt how are u grabbing the individual PID gain values? I thought the SLPID controller sums it all up into a single plot?
I have integrated the SLPID model with a UAV's state space matrix. So far, it isn't working. The SLPID isn't able to stabilize the responses of the MIMO system. it does wonders on a SISO transfer function... but that's it.