Reply To: Differential drive PID tuning

PID Tuner Forum Forums General PID Discussion Differential drive PID tuning Reply To: Differential drive PID tuning


Assuming you have setup your hardware correctly, the PID controller does not care about the details of all of it. To tune the PID controller, we just need a simplified “model” for everything that is outside of the PID controller. So for a moment, please forget about your hardware details, and think as if you were the PID controller and know nothing about what is outside.

We are the PID controller, and to know what gains to use, we will try to guess what it is that we need to control. So we will try to obtain that simplified “model” of the outside. The input of such “model” is the output of the PID controller, and the output of the “model” is what we feed as input to the PID controller. In your specific case the input of the “model” is the what gets out of the PID controller, so the TurnSpeed. The output of the “model” is what we are trying to regulate or steer, which your case is the GPSHeading.

I understand that you also use a “Setpoint” (what you call “Aim”) to form the error that is then fed to the PID controller, but we will forget about that “Aim” as well because the “Aim” does not get affected by a change of the TurnSpeed, only the GPSHeading is affected by the TurnSpeed, so the “Aim” is like an external disturbance and is not relevant for our model, because we are only interested in what we can actually control.

So we are the PID controller, how to we model everything that is outside us? Well, we do as any person would do. We make experiments and see what happens. Since the TurnSpeed is the only variable we can manipulate, me make a small change to it and see what happens. We go a little bit up and little bit down and we see how the GPSHeading responds, because that is the variable we want to regulate.

Control theory tells us that if we design that experiment to be a step change on the input (TurnSpeed), we get enough information to create a “model” that is good enough for control (good enough to make a good PID controller tuning).

And this is what the pidtuner tool helps you to do. It takes your step response experiment and makes a “model” of everything that is outside of the PID controller, and then uses that “model” to give you some PID gains that will be good enough to regulate that “model”.

So you give your data to the pidtuner in Step 1 of the tool, then on Step 2 you select a time range in your data where you can select where a step change in the input (TurnSpeed) occurs, so when your click next, the pidtuner can generate some models for you.

Notice that I said before; “to regulate that model”, meaning that the “model” has to resemble reality somehow, for the PID tuning to be successful. That is what you see in the Step 3 of the tool where it says “Select Model”. It compares the output generated by the models that the pidtuner has created for you, against the actual data of your experiment. Your job in that step is to select a model that resembles the actual data. The closest the model output looks like the data, the better. It does not has to be perfect though, there is some room for error in the gain, as long as the relevant dynamics are captured.

If no model resembles your data then you have to get back to any of the previous Steps. Either go back to Step 2 and select a different time range that contains better information about the step response. Or even go to Step 1 and import data from a better experiment. This is what I proposed to you, to make a better experiment by making manual steps in the TurnSpeed. If you want to see how a good experiment looks, take a look at the sample data that the pidtuner has by default. That data is actually from a drone pitch angle response.

Once you have a good model-data match, you can get to Step 4 and get the PID gains that you need. In Step 4 you can simulate how the “model” would respond to a change on the “Setpoint” (for you is the “Aim”). You can use the “Scale Gains” slider to make the PID gains more or less aggressive. Then you can see how much time it would take for the model to reach the desired “Setpoint” (“Aim”). Beware that the more aggressive you tune the PID gains, the less robust it will be. That can be seen in the Bode Plot that is shown also in Step 4, but understanding robustness trade-off against performance and how it relates to the Bode Plot is too complicated to explain here and requires university level of engineering studies. You can get a grasp of it by watching some youtube videos though. If you are interested, checkout the youtube channel of Brian Douglas:

But you really don’t need all that advanced knowledge just to tune your PID, just follow the instructions I gave you for the tool and you should be good to go.