FASP
August 27, 2026


About the project
FASP (Fire Aerial Spread Prediction) is a vision-based wildfire detection, mapping, and spread-prediction pipeline, built with two teammates as a university project. A PyBullet-simulated drone flies over a procedurally built biome carrying a stereo camera rig; a YOLO model spots fire and dry vegetation in the video feed, stereo depth turns those detections into real-world ground coordinates, a custom tracker fuses them into stable geolocated fire footprints over time, and a physics-based spread model forecasts how each fire will grow using live weather data. The whole thing is watchable on a Leaflet map in the browser, updating in real time as the simulated drone flies.
Features
- YOLO-based detection of fire and dry vegetation in the simulated camera feed
- Stereo depth estimation (block-matching disparity + patch-median sampling) to range each detection in 3D and project it onto the ground
- Custom cell-grid fire tracker with gain/decay accumulation, TTL, and track merging that turns noisy per-frame detections into stable, geolocated fire polygons
- Camera-footprint reasoning that only “forgets” a cell within the detector’s trusted range, so out-of-range frames don’t wrongly erase a live fire
- Wildfire spread prediction using the Rothermel fire-spread model, driven by live wind/humidity/temperature from the Open-Meteo API and estimated fuel moisture
- Live browser map (Leaflet.js) showing tracked fire and dry-vegetation polygons, the drone’s position, and predicted spread at 15/30/60-minute horizons, re-anchorable to any real-world lat/lon
- Built-in accuracy evaluation harness that scores detection and tracking against PyBullet’s segmentation-buffer ground truth
- Keyboard-controlled drone simulation (PyBullet) with adjustable altitude and a live stereo/depth debug view
Tech stack
Vision & simulation: Python, PyTorch/YOLO for detection, OpenCV for stereo processing and depth visualization, PyBullet for the drone and world simulation. Prediction & mapping: Rothermel fire-spread model, Open-Meteo weather API, a custom GeoJSON-producing fire tracker, Leaflet.js served over a lightweight Python HTTP server.
What I learned
FASP was my final project. This project pushed me through a full perception-to-prediction pipeline instead of a single isolated model: detection, stereo geolocation, multi-frame tracking, and physics-based forecasting all had to agree with each other in real time. Building the accuracy harness against PyBullet’s ground truth taught me to validate with actual numbers instead of eyeballing results. Our detector currently runs about 93% recall at 100% precision, and tracked fires stay within roughly 4.5 m of their true position on average. I also got real experience wiring an external weather API into a physical fire-behavior model (Rothermel) and turning that into a live, shareable map.