Intelligence in the air. Analysis on the ground.
AEOS runs two layers of intelligence. In the air, the Jetson Orin NX processes every camera frame in real time — flagging disease, weeds, and obstacles before the data ever reaches the ground. After landing, your ground servers take over: orthomosaics are stitched, NDVI maps are generated, and the AI server runs deep crop analysis. One flight. Two layers. Full picture.
See your crops the way the drone sees them.
Live video from the OAK-D Pro camera streams to the ground station during every flight. What you see in the dashboard is exactly what the drone sees — AI detection overlays included, in real time.
Disease, weeds, pests — flagged in flight, not in post.
The onboard neural network identifies crop problems frame by frame at altitude. No cloud, no internet, no waiting. Detections appear in the ground station seconds after the drone spots them — with GPS coordinates attached.
Disease & Weed Signatures
80-class YOLOv6-nano model identifies disease patterns, weed presence, and vegetation anomalies at 3 Hz. Each detection is tagged with GPS-referenced lat/lon and 3D spatial coordinates.
Human & Animal Priority
Person detections receive maximum semantic cost (10) and trigger a stop override regardless of depth readings — YOLO beats geometric sensors when class cost ≥ 7 or detection is closer than the rangefinder.
Live Thumbnail Stream
Ground station receives detection events with JPEG thumbnail crops, confidence score, class label, and 3D position. Up to 100 detections are held in the DetectionFeed panel for operator review.
| Class | Semantic Cost | Inflate Radius | Behaviour |
|---|---|---|---|
| person | 10 (max) | 3.0 m | STOP override — beats all depth readings |
| car / truck / bus | 8–9 | 4.0–5.0 m | STOP if within stop_distance_m |
| dog | 8 | 2.0 m | High-priority avoid |
| cat / bird | 5–7 | 1.5 m | Lateral shift or slow |
| static structures | 1–3 | 1.5 m | Geometric avoidance via voxel map |
| default (unknown) | 4 | 1.5 m | Standard margin |
It builds a 3D map of your field as it flies.
Depth sensors and camera frames are fused in real time into a live 3D occupancy map the drone uses for safe navigation. Obstacles are identified and avoided before the operator even sees them on the dashboard.
| Zone | Volume | Resolution | Memory | Use |
|---|---|---|---|---|
| Inner (drone-centred) | 20 × 20 × 10 m | 0.25 m | 0.49 MB | Reactive avoidance, person detection, doorway resolution |
| Outer (world-fixed) | 100 × 100 × 50 m | 0.5 m | 7.63 MB | A-Star path planning, mission routing |
- 26-connected 3D neighbours (face + edge + corner)
- Euclidean heuristic · searches FREE voxels only
- OCCUPIED and UNKNOWN cells blocked (configurable)
- Obstacles inflated by 1.5 m safety margin before planning
- Semantic cost overlay: g(n) = distance + semantic_cost
- Corridor detection via distance-transform medial axis
- ~100 ms on 200 × 200 × 100 outer grid with 10 % occupied
Look before you fly into tight spaces.
Before entering crop rows or confined areas, AgroExplorer hovers and scans all directions, building a complete picture of what surrounds it. It only proceeds when the path is clear.
45° increments · 27° overlap between captures (72° HFOV vs 45° step) = full 360° coverage guaranteed.
Each step: rotate + settle + depth-capture → 3 s per heading. Drives yaw via MAV_CMD_CONDITION_YAW (param 115).
Every capture integrates the current OAK-D depth frame into the VoxelMap. State machine: idle → rotating → settling → capturing → complete.
Optional 360° scan fires before each inspection waypoint to ensure full local coverage before close-in approach.
OAK-D Depth
10 Hz · 3D voxel primaryOAK-D YOLO
3 Hz · semantic costmapTFMini Forward
10 Hz · FORWARD sectorTFMini Ground
10 Hz · terrain AGLHereFlow
10 Hz · EKF flowUM982 RTK
5 Hz · world anchorPixhawk EKF
20 Hz · NED pose9-Sector Map
25 Hz · reactiveFrom raw flight data to NDVI maps, orthomosaics, and 3D canopy models.
Every mission generates survey data that the ground processing server turns into actionable outputs — georeferenced maps, vegetation health indices, and 3D crop structure — ready after landing.
RGB Field Map
The ELP 16MP downward camera captures high-resolution RGB frames across the entire survey area. OpenDroneMap stitches them into a georeferenced orthomosaic at 3–7 mm/px ground sampling distance — every row visible, every anomaly located.
Vegetation Health Indices
A NIR-modified second camera (850nm longpass) pairs with the RGB camera to compute NDVI and GNDVI across the whole field. Healthy vegetation maps green; stressed or bare zones show yellow and orange — guiding targeted intervention.
Stereo Depth Structure
OAK-D Pro stereo depth maps canopy height, volume, and row gaps in 3D during flight. Plant height anomalies (lodging, stunted growth) are flagged automatically. Canopy volume × NDVI gives an onboard biomass estimate.
| Index | Formula | What It Detects | Cameras Needed |
|---|---|---|---|
| NDVI | (NIR − Red) / (NIR + Red) | Overall vegetation health | RGB + NIR |
| GNDVI | (NIR − Green) / (NIR + Green) | Chlorophyll in dense canopy | RGB + NIR |
| SAVI | 1.5 × (NIR − Red) / (NIR + Red + 0.5) | Vegetation health on bare soil | RGB + NIR |
| ExG | 2×Green − Red − Blue | Excess green proxy (RGB only) | RGB |
| NDRE (Phase 4) | (NIR − Red Edge) / (NIR + Red Edge) | Early nutrient stress, precise chlorophyll | RGB + NIR + Red Edge |
A 3D record of every mission.
After landing, AEOS stitches keyframe imagery into a coloured 3D mesh — a permanent visual record of the field you can navigate, annotate, and share with your agronomist. Coming in Phase 6 of the AEOS roadmap.
Triggered on motion
RGB frame + camera pose captured when drone moves >1 m OR rotates >10° OR >50 new voxels occupied OR every 5 s. JPEG Q80 at 416 × 416 ≈ 30 KB/frame. ~200–400 keyframes per 10-minute flight.
Parallel RGB grids
Inner 80 × 80 × 40 × 3 = 0.73 MB, outer 200 × 200 × 100 × 3 = 11.4 MB. Delta stream extended to 12 bytes/voxel (x, y, z, state, r, g, b). Coloured voxels visible live in the 3D map viewer.
Marching cubes PLY/OBJ
MeshBuilder loads voxel grid + keyframe manifest, Gaussian smooth (σ=0.5), marching cubes → triangles, project vertices to best keyframe, sample RGB. ~20–50 K triangles; ~5–15 s compute. Three.js viewer in ground station.
Draw your survey on the map. The drone does the rest.
Click waypoints on a live satellite view, set altitude and speed, and submit. AgroExplorer validates the plan onboard and executes it to the metre — covering every row, every time.
Three autonomous modes, one platform
High-altitude orthomosaic and NDVI/NDRE grid coverage
Wide safety margins · terrain following · automated lawnmower pathLow-altitude close-inspection with 360° scan at each waypoint
Tight margins · OAK-D depth on full alert · hover + multi-spectral captureA-Star planned routes through crop rows, alleys, and confined passages
Lateral avoidance · path-planned intermediate waypoints from voxel mapAn AI co-pilot that knows your field.
Ask Athena what the drone is doing, what it detected, or what to do next. It answers from live telemetry instantly — and escalates to a full AI model for complex questions without any delay to the operator.
Keyword matching for operator commands and status queries
e.g. "battery?", "RTL now", "what mode?" — instant response, no model callOn-device language model for complex agronomic questions and mission planning
Runs on Jetson Orin NX · no external API required · low-latency reasoningClaude cloud API for deep agronomic analysis, anomaly explanation, and full-context answers
Operator-configurable · authority levels: waypoints / commands / missions / safety- Voice input (push-to-talk) and text chat in the operator console
- Real-time telemetry awareness — knows battery, GPS, link state, mission progress
- Reads and generates mission YAML for waypoint planning requests
- Action approval flow — proposes commands for operator confirmation before execution
- Health alerts: audio beep at battery 15 % warn, 5 % critical
- EMCON integration — Athena respects emission-control restrictions
- Configurable authority levels: operator decides what Athena can autonomously action
- Separate WebSocket to Athena service on port 8200