Bryn Heinemann

All projects

Rocket Booster Attitude Control

ME 418 Lab 2: Rocket Booster Landing. Summer 2026.

Tuned a PD controller (Kp = 1200, Kd = 800) that returns a landing booster to vertical in 3.15 s with no overshoot. Requirement: recover from a 5.7° tilt with at most 1% overshoot, settling in under 5 s. The booster is modeled as an inverted pendulum, 16.4 ft long and 441 lb. Proportional gain alone raised overshoot (66% at Kp = 500, 92% at Kp = 2000), so I added derivative damping. I chose Kp = 1200, Kd = 800 over Kp = 1000, Kd = 600 because it gives up 0.35 s of settling time to remove the 0.1% overshoot, which matters on a landing.

Simulated only: course Python model, no disturbances.

Course simulation, tuned PD (Kp = 1200, Kd = 800). Angle in radians from hanging down, so π (3.14) is upright; the start at 3.04 is the 5.7° (0.1 rad) tilt.
Course simulation, tuned PD (Kp = 1200, Kd = 800). Angle in radians from hanging down, so π (3.14) is upright; the start at 3.04 is the 5.7° (0.1 rad) tilt.

Controller tuning

P only, Kp = 2000: 92% overshoot (75 s run).
P only, Kp = 2000: 92% overshoot (75 s run).
Adding D, Kp = 1000, Kd = 600: overshoot 0.1%, settles in 2.8 s.
Adding D, Kp = 1000, Kd = 600: overshoot 0.1%, settles in 2.8 s.
Tuned PD, Kp = 1200, Kd = 800: angle, angular rate and actuation over a 15 s run
Tuned PD, Kp = 1200, Kd = 800: no overshoot, settles in 3.15 s (15 s run).
Side-by-side booster landing animation from the course simulator: Kp 1200, Kd 800 on the left and Kp 1000, Kd 600 on the right, each with a running time readout.
Same start, same plant: Kp = 1200, Kd = 800 (left) lands cleanly, while Kp = 1000, Kd = 600 (right) settles 0.35 s sooner but overshoots the vertical by 0.1%, too small to see at this scale.
Booster as an inverted pendulum about the engine pivot.
Booster as an inverted pendulum about the engine pivot.
PD settles in 3.15 s; P alone still swings at 15 s.
PD settles in 3.15 s; P alone still swings at 15 s.