Predictive braking is a position control method that stops the robot exactly where intended by measuring and maximizing its real braking performance.
Key benefits:
15% faster: maximizes deceleration, giving more time to accelerate and less time spent slowing down.
Cuts tuning from hours to minutes: automatically characterizes your robot’s braking behavior using empirical data. This eliminates PIDF guesswork and prevents overshoot caused by mis-tuning. Only the proportional gain requires manual adjustment.
Accurate, responsive, and strong: with deceleration already known and maximized, the proportional gain can be set significantly higher without instability. This reduces steady-state error, improves responsiveness, and strengthens corrective and holding forces.
Advanced movement capabilities: treats braking distance as reaction time, enabling instant direction changes, sharp-angle turns at full speed, and natural centripetal correction for curves.
Core Idea:
Instead of relying on a manually tuned derivative term to prevent overshoot, this controller measures how far the robot travels under a small braking voltage. It uses the predicted braking distance to anticipate positional error, effectively treating it as reaction time. This allows the robot to brake precisely when needed, maximizing deceleration and accuracy.
kP * (error - brakingDistance)
Modeling Braking Distance
Braking can be modeled by F = -(Av + B)
Where:
Av term → velocity-dependent braking such as back-EMF, viscous friction, controller resistance
B term → constant friction such as sliding friction and drivetrain losses
So acceleration becomes
a=−(Av+B)
Then stopping distance becomes
d = v/A - B/A^2 * ln(1+(Av)/B)
which can be very closely approximated with Av^2+Bv for FTC velocity ranges.
Using real-world data, a quadratic curve has an accuracy of 99.5%.
Note: FTC deceleration is not symmetric. Applying small positive powers of 0.0001 makes the robot slowly coast, while small negative powers like -0.0001 lock the wheels and brake harshly. Further experimentation includes using a piecewise model with voltage and acceleration to follow any motion profile.
When graphing deceleration across individual trials, the trend is roughly linear/exponential within each run, but the slope changes significantly with initial velocity. For example, applying approximately −2.5 V produces decelerations near −250 in/s² at high speeds but only around −150 in/s² at low speeds. This means that optimal deceleration is not constant.
Velocity profiles assume constant deceleration, which leads to inaccuracies when braking with reverse voltage.
A standard PID controller produces deceleration roughly proportional to velocity (linear in v), but it does not account for the constant −B term observed in measured braking behavior. This is caused by things such as friction, slippage, and voltage. As a result, PID cannot perfectly track the true braking curve across all speeds. To avoid overshoot, the proportional gain must often be reduced, which limits responsiveness.
Some implementations attempt to address this using multiple PIDs—typically one aggressive and one conservative—switched based on error magnitude. However, this approach increases tuning complexity, requires manual calibration, and still fails to directly model the robot’s true braking behavior.
Within a single braking trial, the velocity decay is approximately linear or exponential. However, the slope varies depending on initial velocity, causing braking distance vs initial velocity to be concave up. This happens because the motor provides velocity-dependent braking (back-EMF, viscous friction) combined with a nearly constant friction term. At high speeds, velocity-dependent braking dominates; at low speeds, constant friction dominates, producing slower deceleration.