PDS Controller
What are PDS controllers good for?
A PDS controller is a precise alternative to a traditional PID controller. This controller removes the I term which can cause overshoots when it builds up. It’s extremely advantageous for pathing applications, as the S term helps to break through static friction, thus increasing accuracy and precision. PDS controllers play a huge role in Apex, helping us achieve exemplarily precise pathing.
Overview
This controller contains 3 terms:
- Proportional: Multiplied by the current positional error in inches. This term is responsible for the majority of the robot’s movement.
- Derivative: Multiplied by the change in error since the last update. Helps to reduce oscillation.
- Static: A constant power added to the output that helps the robot to break through static friction. Apex Pathing uses PDS controllers to be as precise and accurate as possible with path following.
Tuning a PDS controller
Typically when tuning a PDS controller, it’s good advice to begin with the static term. Make sure that the P and D terms are both set to 0. (This helps to isolate the static term.) Start really small maybe around 0.0001 and increase it gradually just until your robot is barely moving. This term is supposed to combat friction, but it shouldn’t be so high that it makes your robot move.
After the static term is tuned, you can move on to the P term. The P term does most of the heavy lifting in the controller, and generally when tuning it, generally when tuning it, you want your robot or mechanism to reach the target position or just under it but not to overshoot. (A slight bit of oscilation is okay)
The D term is generally supposed to be a very small number and it’s meant to counteract the oscilation that the P term causes. However, it can also cause extreme oscilation or a slow response time if it’s too large. The D term when tuned just right should help your robot to “snap right to the target position”