What is the merit of using a dual PID loop where the outer loop is given a position setpoint and outputs a velocity, then a seperate PIDF loop takes that velocity and outputs the power to the drivetrain. This is mainly to enable more aggressive braking.
Please try to address that, then give suggestions for alternate methods of robot control.
What you’re describing is called “cascading control,” and it often provides better control (faster/smoother response, fewer issues with nonlinearity) than a single loop. It can also be much easier to tune provided you have already tuned the inner loop for other purposes, such as velocity control on a drive (and, in my opinion, it can still be easier to tune on-balance even if you haven’t).
One reason cascading control can outperform a single loop is that the inner loop can often account for smaller errors on a much shorter time-scale than the outer loop. For example, if you wish to write a control loop to turn your robot to a certain angle based on feedback from a gyro, a single loop cannot directly account for the errors in wheel velocity - it can only account for the error in angular position that they introduce when they accumulate over time. A cascaded system, on the other hand, can eliminate these errors before they ever accumulate.
By the same token, however, you should not use cascading control when the two loops might both attempt to correct the same error - the loops can end up “fighting” each other in such a situation, leading to instability.
Thanks for your reply, nice to get an overview of why that works. Also thanks for putting a name to it, I’ll be able to do more research now. We are looking into ways to control our robot better for MARC and IRI. Do you know about any good resources to learn more about robot control and sensor stuff?
(Like where do college students learn about PIDs and what not, because it probably isn’t from chief delphi threads).