And also computationally impossible for a space endeavor of any size until the late 90’s (citation needed here and would love to hear from someone with experience).
I looked into it and, yes, this looks basically correct with a caveat: it’s computationally very expensive to get those first stages to land on their own at a convenient, precisely chosen location. We’ve been doing propulsive landings for decades with e.g. the Apollo moon landers and the Viking Mars probes, the latter of which had to be fully autonomous because of speed-of-light delays. Landing a big long rocket is a bit harder because of its somewhat unwieldy shape, but inverted pendulum control problems are definitely not a new thing.
So where does it get computationally hard? There are two parts to it. The first part is computing a trajectory and a flight plan—when you should fire up the engines, which way you should be pointing them, what the aerodynamic control surfaces should be doing—which should get you to the desired landing location. This is a tricky optimization problem, with a bunch of annoyingly non-convex control constraints. The second hard part, and the reason you can’t just precompute the flight plan on a really big computer before launching the rocket, is that you need to adjust the plan in realtime. There will inevitably be unpredictable deviations from the original plan caused by things like wind or variation in atmospheric density. If you don’t compensate for them, those deviations will add up; the Curiosity Mars rover, for example, was a big improvement over its predecessors because its predicted landing zone was an ellipse that only measured 20 km by 7 km.
The algorithm (PDF) that I hear SpaceX is using does require some pretty serious processing power if you’re going to be recomputing your entire flight plan several times per second. A version suitable for realtime use wasn’t flight-tested until the early 2010s.
I looked into it and, yes, this looks basically correct with a caveat: it’s computationally very expensive to get those first stages to land on their own at a convenient, precisely chosen location. We’ve been doing propulsive landings for decades with e.g. the Apollo moon landers and the Viking Mars probes, the latter of which had to be fully autonomous because of speed-of-light delays. Landing a big long rocket is a bit harder because of its somewhat unwieldy shape, but inverted pendulum control problems are definitely not a new thing.
So where does it get computationally hard? There are two parts to it. The first part is computing a trajectory and a flight plan—when you should fire up the engines, which way you should be pointing them, what the aerodynamic control surfaces should be doing—which should get you to the desired landing location. This is a tricky optimization problem, with a bunch of annoyingly non-convex control constraints. The second hard part, and the reason you can’t just precompute the flight plan on a really big computer before launching the rocket, is that you need to adjust the plan in realtime. There will inevitably be unpredictable deviations from the original plan caused by things like wind or variation in atmospheric density. If you don’t compensate for them, those deviations will add up; the Curiosity Mars rover, for example, was a big improvement over its predecessors because its predicted landing zone was an ellipse that only measured 20 km by 7 km.
The algorithm (PDF) that I hear SpaceX is using does require some pretty serious processing power if you’re going to be recomputing your entire flight plan several times per second. A version suitable for realtime use wasn’t flight-tested until the early 2010s.