Thinking in Optimal Control

An interactive essay series — from a falling point mass to a six-degree-of-freedom rocket landing. Every page is a runnable Pluto.jl notebook with real solvers behind it.
01The Anatomy of an Optimal Control Problem
Landing a 1-D spacecraft with InfiniteOpt.jl: decision variables, dynamics, boundary conditions, path constraints, an objective — and what happens when the objective can't tell solutions apart.
02Nonconvexity and the Lossless Trick
Rocket engines can't throttle to zero, so the feasible set grows a hole. A one-variable lift repairs it — losslessly, under fine print you can check in one line. Find the boundary where the check fails.
03Landing on Mars in 3-DoF
The full Blackmore 2013 powered-descent problem: the log-mass trick, glide-slope cones, two independent solution routes that agree to 0.1 kg — and a landing you can fly with sliders.
04Six Degrees of Freedom: When Convexity Runs Out
Attitude dynamics are bilinear and no lossless lift exists — so convex optimization becomes the inner loop of successive convexification. Watch it converge iteration by iteration, plus an honest account of every bug that produced "SCvx doesn't converge."
05Free Final Time
Planned — fuel(tf) is a curve worth optimizing: wrapping a line search around the convex solver, and when tf can be a decision variable.
06When Discretization Lies
Planned — a transcription-diagnostics post-mortem: the full story of the "2.61 gap" that nearly condemned a perfectly good method.
▶ Each page has an Edit or run button (top right) that launches the actual notebook on the free Binder service — boot takes several minutes and the public infrastructure has good and bad days; the page itself and its sliders work without it.
Built with Pluto.jl, InfiniteOpt.jl, JuMP, Ipopt and Clarabel · re-solved from scratch by CI on every commit · site source · research code