This repository collects Udacity FCND projects for Backyard Flyer, Motion Planning, Controls (C++), and Estimation (C++). Below is a short summary of each project, where to find the detailed README and report, and visual highlights (GIFs) included from each project's results/ folder.
-
Backyard Flyer
-
3D Motion Planning
-
Location:
Planning/FCND-Motion-Planning -
Files:
README.md,Report.md,motion_planning.py,planning_utils.py -
Summary: Implements grid & graph A* planning, reading global home from
colliders.csv, converting between geodetic and local coordinates, supporting diagonal moves (cost = √2), and waypoint pruning. -
Grid (No Diagonal) Grid (Diagonal) 

Graph (No Diagonal) Graph (Diagonal) 

-
-
Controls (C++)
-
Location:
Controls/FCND-Controls-CPP -
Files:
README.md,Report.md,src/QuadControl.cpp,config/QuadControlParams.txt -
Summary: Full 3D controller implementation (body-rate, roll/pitch, altitude with integrator, yaw, motor mixing). See
Report.mdfor gain tables and scenario results. -
Visuals:
Intro Attitude 

Position Non-idealities & Robustness 

-
-
Estimation (C++)
-
Location:
Estimation/FCND-Estimation-CPP -
Files:
README.md,Report.md,src/QuadEstimatorEKF.cpp,config/QuadEstimatorEKF.txt -
Summary: Extended Kalman Filter implementation for pose estimation (IMU integration with quaternions, prediction step, magnetometer and GPS updates). See
Report.mdfor step-by-step rubric mapping. -
Visuals:
Sensor Noise Attitude Estimation 

Prediction Step Covariance Prediction 

Magnetometer Update GPS Update 

Final Evaluation 
-
-
Backyard Flyer
- Implemented state transitions and callbacks for
arming_transition(),takeoff_transition(),waypoint_transition(),landing_transition(), anddisarming_transition()(seeIntroduction to Automonous Flight/FCND-Backyard-Flyer/Report.md). - Flight: the script commands the vehicle to fly a square and land near the start point.
- Implemented state transitions and callbacks for
-
Motion Planning
- Reads
colliders.csvfirst line to setglobal_homeand converts between global/local coordinates. - Start and goal are computed from geodetic coordinates; A* supports 8-connectivity (diagonals cost √2).
- Path pruning implemented to cull unnecessary waypoints (see
Planning/FCND-Motion-Planning/Report.md).
- Reads
-
Controls (C++)
- Body rate, roll/pitch, altitude (with integrator), yaw, and motor mixing implemented in
src/QuadControl.cpp. - Tested across multiple scenarios; gains and results in
Controls/FCND-Controls-CPP/Report.md.
- Body rate, roll/pitch, altitude (with integrator), yaw, and motor mixing implemented in
-
Estimation (C++)
- Sensor noise quantification, quaternion-based IMU integration, EKF predict/update, magnetometer and GPS updates implemented in
src/QuadEstimatorEKF.cpp. - Performance and plots in
Estimation/FCND-Estimation-CPP/Report.md.
- Sensor noise quantification, quaternion-based IMU integration, EKF predict/update, magnetometer and GPS updates implemented in
-
Browse each project folder for its specific README with setup and run instructions:
Introduction to Automonous Flight/FCND-Backyard-Flyer/README.mdPlanning/FCND-Motion-Planning/README.mdControls/FCND-Controls-CPP/README.mdEstimation/FCND-Estimation-CPP/README.md
-
GIFs used in this main README are references to the images in each project's
results/directories. If you move files, update paths accordingly.
