All projects

ASTRO Lab · Autonomous Terminal Descent Control

Lunar Lander Terminal Descent Control

As part of a two-person controls team, I developed and tuned real-time LQR and multi-loop PID controllers for a six-degree-of-freedom lunar lander. The controllers commanded main-engine thrust and gimbal angles to track an SCvx-generated trajectory through autonomous descent and landing.

  • Python
  • LQR
  • Multi-Loop PID
  • SCvx Guidance
  • Space Teams Pro
Autonomous-descent video
Autonomous terminal descent and landing in Space Teams Pro.
LQR + PID Controllers developed and tested
6-DOF Vehicle simulation
Main engine Thrust and gimbal control
Autonomous Descent and landing

Project context

Tracking a High-Energy Descent to Landing

This ASTRO Lab project supported doctoral research in autonomous lunar landing. The simulated vehicle began from a high-altitude, high-velocity state and followed an SCvx-generated reference trajectory to a terrain-selected landing area that avoided unsafe surface features. Guidance could update during flight, while the control system continuously tracked the latest reference through touchdown.

My role

Developing the Tracking Controller

Working with one other controls engineer, I developed, integrated, and tuned both an LQR controller and a multi-loop PID controller. Each converted position and attitude tracking errors into commands for main-engine thrust and gimbal angles. The SCvx guidance and terrain-mapping components belonged to the broader research effort; my responsibility was the feedback-control layer that made the lander track the supplied trajectory in real time.

System architecture

Guidance Reference to Engine Commands

The terminal-descent stack separates trajectory generation from feedback control. The controller receives the current reference, evaluates tracking error, and commands the gimbaled main engine.

Inputs

Mission and Terrain

Define the vehicle state and safe landing region.

Guidance

SCvx Trajectory

Generate and update the terminal reference states.

Control

Tracking Controller

Compare the reference and current states using LQR or PID.

Actuation

Thrust and Gimbal

Command engine magnitude and thrust-vector direction.

Simulation

6-DOF Vehicle

Update vehicle motion and the measured state in real time.

Controller development

Comparing LQR and Multi-Loop PID

Both controller architectures tracked position and orientation error and generated the main-engine commands required to follow the SCvx reference trajectory.

State feedback

Linear-Quadratic Regulator

The LQR controller used a unified state-feedback structure to calculate corrective thrust and gimbal commands. Achieving the desired tracking behavior proved difficult because the gain selection required extensive balancing across coupled vehicle states.

The approach remained technically viable, but the implemented tuning did not match the performance of the final PID system.

Final implementation

Multi-Loop PID Control

Multiple coordinated PID loops controlled the lander's translational and rotational tracking errors. The architecture allowed individual responses to be tuned iteratively within the integrated six-degree-of-freedom simulation.

After repeated gain adjustment and testing, the PID controller produced more reliable trajectory tracking and landing performance in the tested scenarios.

Selected approach Multi-loop PID

Practical simulation performance—not the controller name alone— determined the final architecture.

Actuation and integration

Turning Tracking Error into Six-DOF Motion

The terminal-descent controller operated in real time and used the gimbaled main engine as the vehicle's only control actuator.

01

Thrust Magnitude

The controller adjusted main-engine thrust to manage descent, velocity tracking, and touchdown behavior.

02

Gimbal Angles

Gimbal-angle commands redirected the thrust vector to create lateral force and rotational control moments.

03

Real-Time Physics

The commanded force vector and moments were applied to the lunar-gravity, six-degree-of-freedom vehicle simulation.

04

State Feedback

Updated vehicle states closed the loop and drove the next set of corrective commands.

Testing and result

Repeated Autonomous Descent and Landing

The integrated controller was evaluated under different initial conditions and disturbances. Across the completed test cases, the lander tracked the reference trajectory and successfully reached the surface.

  1. 01

    Initialize

    Set the vehicle state, descent scenario, and disturbance case.

  2. 02

    Track

    Continuously calculate error from the SCvx reference states.

  3. 03

    Correct

    Update thrust magnitude and gimbal angles in real time.

  4. 04

    Land

    Complete terminal descent and reach the selected surface area.

Landing result or trajectory-tracking plot
Terminal-descent tracking and autonomous landing result.

What I learned

Controller Tuning and Real-Time Integration

The most difficult work was tuning the controllers inside the integrated nonlinear simulation. LQR provided a strong theoretical structure, but achieving the desired practical tracking behavior proved difficult. The multi-loop PID architecture required many tuning iterations but ultimately delivered more reliable results.

The project reinforced that successful control design depends on more than selecting a control law. Actuator mapping, coordinate frames, real-time communication, simulation integration, and repeated testing were all essential to autonomous landing.

Return to all projects