Control Systems
What is feedforward control?
Feedforward control adds to the output what you already know the system needs, before any error appears. Feedback measures the result and corrects the error after it shows up. A drone that knows its weight can put in hover thrust straight away rather than sagging until a feedback loop notices. Good controllers use feedforward for the part they can predict and feedback for everything else.
Feedback alone has to sag
A proportional controller only pushes when there's an error. Ask it to hold a drone up with no help:
To make the 9.8 units of thrust that cancel gravity, the error has to be 9.8 ÷ Kp. With Kp 2 that's 4.9 m: the drone hangs nearly 5 m below its target, and the only way to shrink the sag is a bigger gain, which brings back swinging. An integral term would remove it eventually, but slowly.
Put in what you know
Gravity isn't a surprise. Add it to the output directly:
That 9.8 is feedforward. Now the drone hovers on target with zero error, and the P and D terms only handle what changes: gusts, steps and swings.
Live experiment
A parcel on the way
A drone holds 10 m behind a 200 ms sensor lag with a PD loop, Kp 2 and Kd 2, and at 8 s picks up a parcel that raises its load to 13. With nothing fed forward it hangs 4.9 m low; feed 9.8 forward and it sags 1.6 m at the pickup; feed the measured load forward and it holds.
“Know the load” is lesson 3 of 6 in Lag Lagoon, Control Systems World 2. Free with an account. Lessons unlock in order, so you’ll do the 9 before it first.
Go further. If the drone has a scale that measures its load, feed the measurement forward instead of a fixed 9.8:
Pick up a parcel that raises the load to 13, and the thrust rises by 3.2 the same instant the scale reports it. With a fixed 9.8, the P term had to find that 3.2 by sagging 1.6 m; with the measured load, the height barely moves.
Where you'll meet it
A 3D printer's hotend feeds forward the extra heat a fast print will need. A motor speed controller feeds forward the drive a given speed usually takes, so the loop only trims. Cruise control can feed forward the gradient from a map before the hill arrives. A robot arm feeds forward the torque its own weight needs at each angle. In every case the rule is the same: if you can measure or predict a demand, supply it directly, and let feedback clean up.
Free lesson
Now build it yourself
Each lesson comes in three short parts: see the idea, try it on a live board, then build it yourself, with quick checks as you go.
“Know the load” is lesson 3 of 6 in Lag Lagoon, Control Systems World 2. Free with an account. Lessons unlock in order, so you’ll do the 9 before it first.
Or start from the very first lesson, no account neededPractice questions
Three quick questions from the lessons. Pick an answer to check it.
Show the answer
Answer: Feed it forward: thrust = load + the P and D terms. A measured load is knowledge. Feeding it forward means the loop doesn't have to find the parcel by sagging.
- Why not “Add it to the error”? The load isn't an error. Adding it there makes the controller react to a weight as if the drone were off target.
- Why not “Use it as the target”? The target is where the drone should be. Using the load as a target makes no physical sense.
- Why not “Ignore it”? Ignoring a measured load throws away knowledge; the loop then has to discover the load by sagging.
Show the answer
Answer: The thrust rises by 3.2 at once and the height barely moves. The scale reports 13 the same step, and the feedforward supplies it immediately. No error has to build up.
- Why not “Nothing changes”? The load term changes the moment the scale reads 13, so the thrust does change, by 3.2.
- Why not “The drone climbs”? The thrust rises by exactly the extra load, 3.2, so the drone holds its height rather than climbing.
- Why not “The drone sags then recovers”? Sagging first is what happens when only feedback handles the load. Here the measured load is added the same step.
Show the answer
Answer: What you already know the drone needs, like its load. Known load in directly; feedback handles the rest.
- Why not “The error”? The error is feedback's input, used by the P, I and D terms, not feedforward's.
- Why not “The error's rate”? The error's rate is the D term's job, which is also feedback.
- Why not “Nothing”? Feedforward adds something real: the push the system is known to need, before any error appears.
“Know the load” is lesson 3 of 6 in Lag Lagoon, Control Systems World 2. Free with an account. Lessons unlock in order, so you’ll do the 9 before it first.
Questions people ask
What is the difference between feedforward and feedback control?
Feedback measures the result and corrects the error after it appears. Feedforward puts in an output based on something known or measured in advance, like a load or a setpoint change, before any error shows up. Good controllers use both.
Is feedforward the same as open-loop control?
It's open loop in that it doesn't check its own result, but it's usually added on top of a feedback loop. Feedforward does the predictable part of the job; feedback catches whatever the prediction missed.
Can feedforward replace the integral term?
Often it removes most of the work the integral would do, because the steady push is already supplied. A small integral is still useful for whatever the feedforward gets wrong, like a load that's slightly off.
Related topics
- Open-loop vs closed-loop controlSet and hope, or measure and correct: the idea behind every controller.
- PID control explainedWhat the P, I and D terms each do, shown on a drone climbing to 10 m.
- What is integral windup, and how do you stop it?When the motors max out, the I term keeps counting, and pays it back as overshoot.
- Bang-bang (on-off) control vs PIDFully on or fully off: the thermostat's controller, its band, and its limits.