Inspiration

Growing up in the country side of England, when we wanted to scan the farm fields, it took $1,500 to get the surveyor out. On top of that, they used a $4,000 drone that the surveyor needed to be licensed for.

So we built Eagle Eye, an open source software that runs off images captured by a $200 off-the-shelf drone. A farmer can map their entire field, get a map of overall crop health, irrigation span, weed problems, and reap all the benefits of precision agriculture at a low cost. Our solution helps the farmer save thousands of dollars from unused fertilizer and catch problems early. Most importantly, this is an affordable and easy to set up system, as the drone autonomously flies to the field and captures images. Our solution helps the farmer keep have more sustainable farming practices because they understand how to optimize their farming techniques and make targeted farming efforts.

What it does

EagleEye turns the Potensic Atom 2 into a field-scouting tool:

Set up a field with four what3words addresses. Type the four corners and EagleEye draws the field on a satellite map and works out its area. Plan the flight automatically. It builds a back-and-forth route with overlapping photos, estimates flight time, splits long scans into battery-sized parts and writes the mission in the format the drone's own app (Potensic Eve) uses. Join the photos into one map. Photos come straight from the drone's memory card. EagleEye matches them in 3D (structure from motion) and builds one seamless, true-to-scale map of the field. If 3D matching isn't possible, it places each photo by GPS instead. Crop-health and weed maps. The field is coloured red (stressed or bare) to green (healthy), and numbered pins mark the problem patches. A trained weed model outlines likely weeds in purple. Two numbers for the whole field: a crop-health score out of 100 and the percentage of the field with weeds. One click shows which spots need a look and why: thin crop, pale crop or bare patches. Go back for a closer look. One click plans a low flight over each problem patch for close-up photos, which the weed model checks again. Fly to one spot. Type a single what3words address and the drone flies to that square and takes a photo, which EagleEye then analyses. Phone page. It converts what3words addresses into waypoint coordinates for the iPhone version of Eve, which doesn't accept what3words.

How we built it

Desktop app: Electron, Leaflet maps and Node.js. We started from CoFly-GUI, an open-source desktop app for planning DJI drone scans, then upgraded it, rebuilt it for the Atom 2 and redesigned the interface. Image analysis runs in plain JavaScript using sharp (libvips), with no Python or GPU needed: four colour-based plant-health indices (GLI, VARI, NGRDI and NGBDI); problem-patch detection that smooths over about 1.5 m, so soil between crop rows isn't flagged; a field summary that checks the field in 4 m areas. Weed model: a two-stage gradient-boosted tree model trained with scikit-learn on 201 expert-labelled drone photos of cotton (176,880 labelled cells). It uses 36 features per cell, including the crop-row direction and spacing. We exported it to JSON so it runs inside the app without Python. 3D matching: OpenDroneMap in Docker builds the orthomosaic. We re-project it with GDAL and analyse it in 30 m sections using the same code that analyses single photos. Drone link: Potensic publishes no SDK for the Atom 2, so we use Eve's waypoint file format, which the HOT Drone Tasking Manager team reverse-engineered. On Android we push missions over USB with adb; on iPhone we generate coordinates to enter by hand. what3words: the REST API, plus a test mode with sample addresses so the app works without a paid key. Testing: 61 automated tests, including runs on real drone photos.

Challenges we ran into

No way to control the drone. Potensic offers no SDK or remote-control API. We had to work from the reverse-engineered mission format, and Eve deletes mission folders it didn't create, so we overwrite a placeholder mission the user makes in Eve. iPhone vs Android. iOS doesn't let outside software change another app's files, so missions can't be loaded automatically on iPhone. We built a phone page that gives exact coordinates instead. The best weed model was unusable. The published deep-learning weed model for our dataset never had its trained weights released, so we trained our own and benchmarked it honestly against the published numbers. False alarms. Early versions flagged soil between crop rows as "problem areas" and scored the field edge as thin crop. We fixed this with ground-scale smoothing, a canopy rule from published research (Canopeo) and ignoring pixels outside the map. 3D matching on a laptop. OpenDroneMap's map-texturing step ran out of Docker's 4 GB of memory. We added an automatic retry at a coarser resolution that keeps the finished 3D reconstruction. Some datasets, like our Greek cotton photos, don't overlap enough to 3D-match at all, so the app falls back to GPS placement. Misleading scores. On a bare field the crop-health score was only comparing soil colours. EagleEye now says "No crop seen" instead.

Accomplishments that we're proud of

Tested on 365 real drone photos of a cotton field in Greece. The weed map flagged 4.4% of the field; the experts' labels cover about 4.3–4.4%. The whole field was analysed in about 7.5 minutes on a laptop. Better problem-area detection. On synthetic test fields, our method found every planted problem patch with zero false alarms. The original implementation found 2 of 12 and misplaced points by up to 93 m. A weed model that runs anywhere. It reaches 31–36% weed IoU on the dataset's published test splits (the unreleased deep-learning model reports about 44–45%), as 0.9 MB of JSON with no Python at run time. Seamless 3D-matched maps from raw drone photos. On an Ohio farm dataset, the map lined up with satellite imagery. Two numbers a farmer can act on, instead of six technical maps.

What we learned

Clear communication can matter as much as the model. A crop-health score and "show me where to look" is more useful than a perfect index map nobody reads. Comparing a field against itself works across cameras and lighting, but can't detect a field that is evenly stressed. Repeat flights over time fix that. Colour cameras have real limits. Red on the map means "go and look", not a diagnosis; early water stress and nitrogen levels need thermal or near-infrared cameras. Honest benchmarks build trust. We report where our weed model is weaker than the published one, and what we haven't tested yet.

What's next for EagleEye

Real-world flights: test on a real Atom 2 flight, real phones and a live what3words key. Everything so far was tested on public drone datasets and simulated missions. Irrigation check: map wet and dry soil along drip lines, spot blocked drippers and waterlogged areas, and compare with recent rainfall. Changes over time: compare repeat flights to show which areas are getting worse. A deep-learning weed model: train a U-Net on a GPU and run it in the app with ONNX. More crops: collect labelled photos beyond cotton so weed detection works on other fields.

Share this project:

Updates

Submission history