
Project Overview
This project focused on enabling fully autonomous quadcopter navigation in a GPS-denied environment using only onboard sensing. Our primary goal was to implement and integrate stereo visual-inertial odometry (VIO), an SE(3) controller, and minimum-snap trajectory planning, allowing the quadrotor to navigate and avoid obstacles using real-time onboard state estimation. This was part of a capstone project for MEAM 620 at the University of Pennsylvania.



My Contributions
- Developed a stereo VIO estimator that fused IMU readings with feature-tracked stereo images using a tightly coupled filter.
- Tuned and validated the estimator in a Unity-based simulation environment with realistic noise and frame rates.
- Integrated VIO with an SE(3) geometric controller, modifying control gains and smoothing state estimates to ensure stable flight.
- Implemented a 3D minimum snap trajectory planner and enabled dynamic replanning in obstacle-rich environments.
- Built visual debugging tools to track estimation drift, camera coverage, and trajectory tracking performance.
- Created test cases to validate estimator performance under sensor delay, noisy features, and aggressive maneuvers.
Technologies
Tools: ROS1 · Python · Visual-inertial odometry (VIO) · Extended Kalman Filter (EKF) design · SE(3) geometric control · System integration and tuning
Platform: Ubuntu 20.04 + ROS1
What I Learned
This project taught me how challenging it is to bring a quadrotor from simulation into real flight. I learned the importance of sensor fusion for stable state estimation, the limits of PID tuning under changing flight conditions, and how battery constraints, vibration, and safety concerns shape design decisions. It showed me how to integrate mechanical, electrical, and software components into a single reliable system, and how critical simulation-first testing is before flying hardware.