Project Icarus — Flight Simulations

Simulation work for Project Icarus, progressing from 1D PID altitude control to a full 6-DoF quadrotor simulation with Kalman filter state estimation and closed-loop trajectory tracking.

Python · NumPy · Matplotlib 6-DoF Dynamics Kalman Filter PID Control

6-DoF Simulation with Kalman Filter State Estimation

Latest
6-DoF quadrotor simulation animating trajectory tracking through step waypoints

6-DoF quadrotor simulation — Kalman-filtered state estimates drive closed-loop PID control through a sequence of step waypoints.

Key Highlights

  • KF estimate converges to true position despite scattered GPS measurements.
  • Closed-loop controller tracks step waypoints across X, Y, and Z simultaneously.
  • Attitude remains stable through position transitions (<30° max tilt).
  • All four motor RPMs converge to steady-state hover after each waypoint.

Stack

  • Language: Python, NumPy, Matplotlib
  • Dynamics: Nonlinear 6-DoF quadrotor model
  • Estimator: 6-state Kalman filter (position + velocity)
  • Attitude: Complementary filter on simulated IMU
  • Control: Cascade PID — position loop + attitude loop
Kalman filter position estimation: true position vs. KF estimate vs. noisy GPS across X, Y, and Z axes
Kalman Filter — True vs. Estimated vs. GPS

KF estimate (red) tracks true position (blue) closely despite scattered GPS readings (green ×). Altimeter data (orange) fuses with GPS for Z-axis estimation.

Full system telemetry: position tracking, Euler attitude angles, and four motor RPMs over 30 seconds
Full Telemetry — Position, Attitude & Motors

X/Y/Z position tracks step waypoints (dashed) with clean transient response. Euler angles settle to near-zero in hover. All four motor RPMs converge after each commanded waypoint.

1D Vertical Flight Simulation

Earlier Work

The starting point for Icarus simulation — a 1D vertical flight model with PID altitude control, sensor noise, and low-pass filtering used to validate the control approach before extending to 6-DoF.

Key Highlights

  • Modeled three-phase flight profile: ground → 10 m hover → soft landing.
  • Simulated noisy thrust and RPM measurements to evaluate controller robustness.
  • Applied low-pass filtering to reduce thrust oscillations under sensor noise.

Stack

  • Language: Python, NumPy, Matplotlib
  • Control: PID altitude control
  • Modeling: 1D thrust dynamics, noisy sensor measurements
  • Signal Processing: Low-pass filter on thrust commands
View Code on GitHub Hardware Platform