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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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 brainREADME 전문 보기 ↗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.