← Kybernetes

Land the Booster

A falling rocket, a gimballed engine, gusty wind and a fuel tank that lightens as you burn. Fly it by hand first (←→ gimbal, ↑↓ throttle). You will crash. Then watch three controllers do it: a cascade of PID loops with a feedforward that knows the rocket's weight, LQR on the lateral dynamics and a bang-bang suicide burn that spends the least fuel of all, with the thinnest margin.

Who's flying?

←/→ gimbal the engine, ↑/↓ throttle, R new drop. Tip: kill sideways drift early, keep the tilt tiny and get vertical speed under 3 m/s before the ground arrives.

Mission

Flight data

Altitude–
Descent rate–
Drift–
Tilt–
Fuel–

Last attempt

–
Touchdown speed–
Drift / offset–
Tilt at contact–
Fuel remaining–
Attempts / landings0 / 0

Crash a few by hand. Feel how the gimbal fights the tilt while the ground keeps coming, then hand it to 🪜 Cascade.

Three ways down

Cascade: loops inside loops

A fast inner loop holds the tilt, a slower outer loop steers the position by requesting tilt and a third loop flies the descent rate. Each loop only has one job. The rule that makes it work: every inner loop must be much faster than the loop that commands it.

Feedforward: don't make PID lift the rocket

The throttle needed to hover is no mystery: it's m·g / Tmax, and the flight computer knows the mass at every instant as fuel burns. Command that directly and let feedback correct only the small errors. Feedforward does the heavy lifting; feedback does the housekeeping.

Bang-bang: the suicide burn

Gravity losses accrue every second you thrust, so the cheapest landing is to fall, then brake once, at full power, as late as possible. Optimal-control theory says the fuel-minimal input only ever sits at its limits. It works, and it's one gust of bad luck from not working. Margins cost fuel; that's the trade.