AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A fruit fly connectome as a drone pilot. Camera -> fly eyes -> spiking brain -> descending neurons -> drone. Live 3D demo in your browser.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A fruit fly's wiring diagram is flying this drone.
Recorded from the live browser demo : the swat game. Simulation running MiniFly, see the honest part .
166k neurons in the MaleCNS connectome it loads
~25M neuron-to-neuron connections after typical filtering
6 descending neurons read as stick commands
4 drone platforms + simulator
0 lines of flight code inside the brain檢視完整 README ↗In 2026 the complete central nervous system of a male fruit fly was published: MaleCNS v1.0, about 166,000 neurons reconstructed by HHMI Janelia, Cambridge, MRC LMB and Google Research, free under CC-BY. People have plugged it into DOOM, Mario, trading bots and walking robots.
FlyDrones gives it wings. It turns a drone camera (or your hand in front of a webcam) into activity on the fly's own visual neurons, runs the connectome as a spiking network, and reads out the descending neurons a real fly uses to steer its wings as flight commands for a real drone.
spikecalls.github.io/FlyDrones. No install. A 3D bedroom, a blue quadcopter with a fly riding on top, and the whole loop running live in your browser: a ray-cast drone camera, per-cell optic flow, 850 spiking neurons, the descending-neuron read-out, the safety governor and the drone physics.
Play
| what you do | what happens inside | |
|---|---|---|
S | SWAT IT: swing a fly swatter at the drone | the swatter expands on the camera → LPLC2 + LC4 → giant fiber DNp01 fires → the drone jumps. Too fast and it gets swatted. Every dodge makes the next swing faster |
| click | the Brain panel: stimulate any neuron group | poke DNg02 L and watch it yaw, poke LPLC2 and watch it escape |
| click | the fly | it buzzes (it is only the mascot, the pilot is the simulated brain) |
1-6 | hand gestures: palm, fist, left, right, rush, drop | optic-flow illusions, see below |
| USE MY HAND | your webcam and MediaPipe hand tracking drive the same illusions | |
| CHAIR RUN | the drone cruises at a chair, looming makes it brake and dodge | |
N C M | day / night, orbit / chase / drone camera, sound |
| key | gesture | what the fly sees | what the brain does |
|---|---|---|---|
1 | open palm | scene drifts up, as if sinking | T4c → VS → DNg02 L+R up → climb |
2 | fist | still scene | DNg02 back to rest → hold |
3 4 | hand left / right | scene rotates | HS → DNg02 L vs R → optomotor turn |
5 | rush at it | expansion on both eyes | LPLC2 + LC4 → giant fiber DNp01 → escape |
6 | drop hand | scene drifts down, as if rising | T4d → LPi ⊣ DNg02 → descend |
When the drone really climbs, its camera sees real downward flow, which cancels the illusion, so the loop settles on its own.
| time | hand | what the brain does | drone |
|---|---|---|---|
| 2.5 s | open palm | VS → DNg02 L+R up | climbs 1.0 → 1.7 m |
| 4.5 s | fist | DNg02 back to rest | holds ~1.8 m |
| 9.5 s | fist moved right | right DNg02 > left (optomotor) | yaws right |
| 13.5 s | hand rushes in | LPLC2/LC4 → giant fiber DNp01 + DNp03 | escape burst |
| 15.5 s | hand dropped | DNg02 drops | descends |
defaults.yaml and docs/SCIENCE.md, with the paper it leans on.flydrones calibrate.git clone https://github.com/SpikeCalls/FlyDrones.git
cd FlyDrones
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[vision]"
flydrones demo --live # simulated room + scripted hand, live dashboard
flydrones demo --record my_demo.gif # or save it
flydrones swarm --live # one connectome, three pilots
flydrones inspect # poke every input group, watch the motor neurons
No camera, drone or GPU needed for any of the above.
| stage | neurons (cell types) | role in the real fly | FlyDrones signal |
|---|---|---|---|
| eyes | R1-R6 | photoreceptors | brightness per ommatidium cell |
| motion | T4a/T5a · T4b/T5b · T4c/T5c · T4d/T5d | direction-selective cells: front-to-back, back-to-front, up, down (Maisak et al. 2013) | per-cell optic flow (numpy Lucas-Kanade) |
| looming | LPLC2, LC4 | detect approaching objects, drive the giant fiber (Ache et al. 2019) | expansion of the flow field |
| balance | haltere afferents | gyroscope organs | drone IMU yaw rate |
| lift & steering | DNg02 L/R | population that sets wing-stroke amplitude; left/right act independently (Namiki et al. 2022) | throttle = L+R, yaw = R−L |
| evasive turns | DNp03 L/R | looming-evoked flight saccades (Curr. Biol. 2025) | yaw away from the threat, brakes cruise |
| escape | DNp01 (giant fiber) | escape takeoff | short climb / drop / brake reflex |
The simulator is event-driven: each step only touches the synapses of neurons that actually spiked. Details in docs/ARCHITECTURE.md.
| gesture | illusion | expected response |
|---|---|---|
| open palm | scene drifts up | climb |
| fist | still scene | hold |
| hand dropped / gone | scene drifts down | descend to the safety floor and hold |
| hand left / right | scene rotates | turn toward it |
| hand rushes at the camera | expansion | giant-fiber escape |
Hand tracking uses MediaPipe if installed (pip install -e ".[gestures]"), otherwise an OpenCV skin-colour detector.
Everything below is a dry run (commands printed, nothing sent) until you add --send.
| drone | install | run | notes |
|---|---|---|---|
| DJI / Ryze Tello | pip install -e ".[tello,gestures]" | flydrones fly --drone tello --input both --live | easiest start; its camera becomes the fly's eyes |
| Crazyflie 2.x + Flow deck | pip install -e ".[crazyflie,gestures]" | flydrones fly --drone crazyflie --input gesture | 27 g; webcam hand as the eyes |
| ArduPilot / PX4 (real or SITL) | pip install -e ".[mavlink]" | flydrones fly --drone mavlink --mavlink udpin:0.0.0.0:14550 | GUIDED / OFFBOARD velocity setpoints |
| Betaflight / INAV quad | flash firmware/esp32_msp_bridge | flydrones fly --drone esp32 --input gesture | ESP32 Wi-Fi → MSP RC override |
Setup and wiring for each drone: docs/HARDWARE.md. Step-by-step guide: docs/GUIDE.md.
pip install -e ".[data]"
flydrones download malecns # ~1.2 GB from Janelia's public bucket (CC-BY)
flydrones build-brain --out data/malecns_brain.npz
flydrones inspect --brain data/malecns_brain.npz
flydrones calibrate --brain data/malecns_brain.npz --out readout_malecns.json
flydrones demo --brain data/malecns_brain.npz --config configs/malecns.yaml
build-brain keeps connections with ≥ 3 synapses, signs them by predicted neurotransmitter and resolves every input/output group by cell type and side. Exact counts depend on the filters. For reference, DOOMFLY reports 166,700 neurons and 25,582,938 directed connections after its own filtering.
For a faster model, keep only neurons within a few synapses of both the eyes and the descending neurons: flydrones build-brain --core-hops 3.
flydrones swarm copies one connectome into three independent brains: same wiring, separate spikes. We give each drone a different job, and the brain decides the rest. Output of the run above:
fly-1 hover job -> holds ~1.0 m, 0 collisions
fly-2 cruise at chair -> 2 giant-fiber escapes, gets past the chair, 0 collisions
fly-3 hand dropped -> descends to the 0.3 m safety floor and holds
| brain | neurons | connections | speed (2-vCPU cloud VM, numpy) |
|---|---|---|---|
| MiniFly (synthetic) | 850 | 4,928 | 6-11× real time with camera + dashboard |
| same size as MaleCNS (random graph benchmark) | 166,700 | 25.6 M | 0.62× real time, dt = 0.5 ms |
A desktop CPU is faster. The control loop adapts dt to wall time and warns if the brain falls behind. Use --core-hops or run on a faster machine for real-time full-brain flight. Measure yours with flydrones bench --brain ....
src/flydrones/
brain/ connectome.py (MaleCNS loader, groups, subgraphs) · lif.py (simulator) · synthetic.py (MiniFly)
senses/ retina.py (optic flow, looming) · gestures.py (hand -> illusions) · encoder.py · webcam.py
motor/ decoder.py (descending neurons -> commands) · command.py
drones/ sim.py · tello.py · crazyflie.py · mavlink.py · udp_bridge.py (ESP32/MSP)
safety.py limits, ceiling, floor, geofence, watchdog, battery
runtime.py the closed loop
calibrate.py fit the read-out on your connectome
viz/ live dashboard and GIF recorder
cli.py `flydrones ...`
docs/index.html + docs/live/ the browser demo (three.js, JS port of the engine)
firmware/esp32_msp_bridge/ Arduino sketch: UDP -> MSP_SET_RAW_RC
configs/ tello, crazyflie, mavlink SITL, esp32, malecns
docs/ GUIDE · HARDWARE · SCIENCE · ARCHITECTURE · CONNECTOME_DATA · SAFETY · FAQ
examples/ small scripts to poke neurons, write your own decoder, replay a video
tests/ pytest suite (simulator, retina, decoder, safety, protocol, MaleCNS loader)
tools/ export the browser brain, check the JS engine against Python
Drones cut fingers. The brain is a research model and can do unexpected things.
--send.max_flight_s.Read docs/SAFETY.md before the first real flight.
See ROADMAP.md. Ideas and PRs are welcome: CONTRIBUTING.md.
Related projects that inspired this one: DOOMFLY (MaleCNS plays DOOM) · flybrain (FlyWire on a Tello) · flybrain-robot-bridge · Eon fly-brain · NeuroMechFly / FlyGym · flybody · awesome-fly.
Code: MIT. Connectome data keeps its own licence (MaleCNS: CC-BY 4.0), see THIRD_PARTY.md. If you use FlyDrones in a paper or video, please credit the connectome authors and cite this repo.