Automatic PID tuning?

While I've managed to tune my PIDs relatively well so far, it seems that things can change significantly based on current flying conditions (mainly wind). Based on these forums it's definitely a source of much frustration and confusion, anything that could be done to reduce or eliminate this I'm sure would go a long way in improving the ardupilot experience.I've found a paper that seems to describe auto tuning, at least in theory:http://www.control.auc.dk/~hr/adapt/auto.pdfIs automatic PID tuning in regards to ardupilot possible/practical?

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • Might be able to play around with fuzzy logic? It's essentially a simplified version of a neural network.

     

    I've seen a few block diagrams of an FLC that monitors the performance of a regular PID. If the response of the PID isn't good enough, the FLC can adjust the PID gains acordingly by incrementing or decrementing them.

     

    This then means you have to figure out what criteria you want the FLC to look at, %overshoot, rise time, settling time, etc. and then figure out which PID gain affects what... which I'm not sure at this moment how to do that exactly.

  • Developer

    Personally I'd love to see an Adaptive Neural Network used.  

    No, I'm not trolling, and no, I'm not suggesting removing the PID loop, and replacing it with an ANN.  Although this would work, tuning it is "hard", requiring a human to manually fly it "well" to start with.

    I think that using an ANN to "tune" a PID loop in-flight would be a pretty reasonable thing to do.

    reasoning:

    * a default set of "good enough to fly with" PID values is generally fairly easy, but getting a "perfect" set is generally not.

    * flying an aircraft  with "default" PIDs for long enough to allow the ANN to "learn", and interactively tune the PID seems reasonable.

    * The "Adaptive" part of a neural net includes using existing performance figures and a measure of how desirable they are in order to train the network.     In this case, the "performance figures" would be the P, I, D values, and the measure of desirability would be "how close the plane is flying to the planned trajectory/path".    So, a bad set of PIDs, which maintain a poor trajectory, would get a low Adaptive response from the ANN, and vice versa...?   

    All this can happen in-flight, all the time, so the longer the plane flies, the more it improves it's own flying skills to the particular airframe characteristics.

     

    Anyone see any problems with this idea?

     

    Buzz.

     

     

  • Interesting document.

    Thanks for posting it  :)

  • 3D Robotics

    It's on our roadmap. 

This reply was deleted.

Activity