
RomanSlack/jev-drone on GitHub
- Stars
- 164
- Forks
- 21
- Language
- Python
- License
- MIT
- Last push
- 22 Sep 2026
Read from GitHub on . Counts change daily.
Reported by the author
- Calls per flight
- ~110
A typical 65 s flight costs about 110 calls.
github.com - Decision rate
- ~2.5 Hz
sits at ~2.5 Hz
github.com
jev-drone flies a Skydio X2 quadrotor through a five-station obstacle course in the MuJoCo physics simulator using only its onboard camera. A geometric flight controller handles the actual flying; nothing about the flight path is scripted.
Jev sits above that controller at about 2.5 Hz. It takes JSON, not pixels, so it can’t be the perception layer. Classical computer vision turns the depth and segmentation buffers into a compact scene description first: five forward range sectors, the height of whatever is blocking the path, whether its top edge is visible, and where the target is. Jev then answers three typed questions from that scene in one call: a choice of maneuver (hold course, go around a gap left or right, climb, brake, or reacquire the target), a risk score running from clear and open to about to hit something, and a noul question asking whether the target is genuinely lost or just briefly out of view.
Code decides when to call Jev at all. On an open corridor with the target in sight there’s nothing to decide, so no call happens, and an unchanged scene reuses the last judgment. A 50 Hz reflex layer keeps final say over anything safety-critical, for example refusing a climb decision unless the obstruction’s measured height is actually within the aircraft’s climb ceiling. The author reports a typical 65-second flight costs about 110 Jev calls.



