FlyDrones 实验总览

把「果蝇的神经形态大脑」当作自主智能体,放进 3D 小镇与家庭场景里驾驶无人机、两辆小车(射线感知 / 纯视觉复眼)与蚂蚁。 本页梳理项目整体架构、汇总全部可在线运行的实验、给出面向开发者的 TokenTown API,并对比两套导航算法的设计哲学与实测表现。

🟢 4 个浏览器实验在线 🧠 果蝇 LIF 脉冲神经网络 ⌨️ 开发者 TokenTown API 🪰 + 🚗 + 👁 + 🐜 四智能体对比 🐍 Python 引擎 开源

一、整体架构 Architecture

所有实验共享同一套「数据 → 算法 → 场景 → 渲染 → UI」分层。下方以 Token Town 实验场(/sim/,同时含无人机与小车)为例说明;轻量 2D 版与小车家庭漫游版是同一套算法的不同规模/渲染实现。

① 数据层 Data
OpenRouter 实时周排行(浏览器端 fetch,CORS 开放)→ 解析 Top12 → 店铺缩放/人潮/LED 自动跟随;断网回落内置快照 OR_SNAPSHOT。
↓
② 算法层 Algorithm(果蝇大脑)
无人机:机载 FPV 相机 128² → 复眼 32²(1024 小眼)→ LIF 中间层 576 神经元 → 5 输出(YAW_L/YAW_R/FWD/BRK/LGMD)→ 16 帧放电率解码 → 方向舵/油门。小车:6 路射线感知 → 3×6 线性果蝇大脑策略 carW(提案)→ 安全反射 + 目标导引外壳 + 曼哈顿航点规划。
↓
③ 场景层 Scene(Three.js r128)
Token Town 4×3 店铺网格(68×54m 街区)+ 背景城市;家庭漫游版为 16×12 户型真实材质。店铺/墙体/边界即碰撞体与传感器目标点。
↓
④ 渲染层 Render
WebGL 主渲染 + 果蝇机载 FPV 离屏 RenderTarget;移轴景深后处理营造微缩模型质感;Web Audio 自包含音效(引擎/到达/撞击)。
↓
⑤ UI 层 UI
算法核心常驻面板(复眼/576 神经元/5 输出三块实时可视化)、榜单/数据卡、视角切换;以及对外暴露的 window.TokenTown 全局 API(见第四节)。

设计原则:单文件自包含、零构建、可离线;数据与算法解耦(换数据源不影响算法);物理常量用世界单位,与模型视觉尺寸解耦(故小车缩到玩具车比例不影响导航)。

二、实验项目索引 Experiments

交接文档涉及的全部「可在浏览器运行的实验」均已上站;底层 Python 引擎作为开源源码提供。

FlyDrones 3D · Token Town

🟢 在线
无人机 · 果蝇 SNN 自主巡店

旗舰演示:果蝇 LIF 脉冲网络驱动无人机巡游 12 家店,实时 OpenRouter Token 用量驱动店铺大小与人潮,左侧常驻算法核心面板。

打开 →

Token Town 实验场

🟢 在线
无人机 + 两辆小车(射线 / 纯视觉复眼)+ 蚂蚁 · 四智能体

同一座小镇同时跑 四个自主智能体:🪰 无人机(复眼 SNN 端到端)、🚗 射线小车(果蝇大脑 carW + 曼哈顿航点)、👁 纯视觉复眼小车(复用无人机同一套 SNN 大脑,仅把输入换成车顶前向 FPV)、🐜 蚂蚁(同一套果蝇大脑权重 carW + 交替三足步态)。可切「🚗 小车 / 👁 视觉小车 / 🐜 蚂蚁」第三人称跟拍;左下角「四智能体控制台」实时显示各自的动作 / 到达 / 碰撞 / 避让(避让中琥珀高亮、碰撞时该行红色闪烁),TokenTown API 同时覆盖四套智能体。

打开 →

巨足者 · Loom 生存战

🟣 新上线
原创岩苔巨人 · 果蝇大脑 × 3 机体 · 性格驱动

全新场景:三个共用同一份果蝇 SNN 权重的机体(🪰 无人机 / 🚗 小车 / 🐜 蚂蚁)在苔藓微缩花园里躲避原创巨人「巨足者 The Loom」的踩踏存活。任务从「到达目标」变为「别被踩死」。三位人类研究员各带 LUMISTAR 性格(INTJ 务实规划师 / ENFP 阳光小太阳 / INTP 天才发明家),其性格真实驱动行为——「鼓励」提升附近机体士气、「谨慎」提供庇护、「好奇」决定靠前程度——观测台视角可与他们对视。右侧面板实时观测每只机体的复眼 / 576 中间神经元 / 5 输出放电率;Micro API 可确定性步进与强制踩踏。

打开 →

轻量 2D 演示

🟢 在线
纯 Canvas · 19 KB · 无 WebGL

同一套「复眼 → LIF → 飞控」闭环的俯视 2D 版,零依赖单文件。适合低配设备或快速对比感知—控制链路。

打开 →

ESP32 小车 · 家庭漫游

🟣 新上线
16×12 户型 · 真实材质 · 就地演化训练

交接文档交付版:果蝇大脑小车在 192㎡ 大户型漫游,含木地板/家具/厨房等真实材质;页面内置「就地演化训练」可重训大脑并写入 localStorage。

打开 →

🐍 底层引擎(Python 源码)

三、开发者 API · TokenTown window.TokenTown

window.TokenTown 在 / 与 /sim/ 页面加载后自动挂载,是「开放给其他开发者」的官方入口:任何同页 JS(包括你自己的书签脚本、嵌入 iframe 的父页、自动化测试)都能直接读取状态、切换视角、确定性步进仿真。所有方法均同步、无外部请求、可在无 GPU 的 headless 环境用 carStep/stepTest 推进。

通用 / 无人机

TokenTown.state()
返回 {flyX,flyY,flyZ,flyYaw,collisions,wpReached,loopCount,spikeTotal,outRate:[YAW_L,YAW_R,FWD,BRK,LGMD],loom,midFrac,fps,dataStatus,...}
TokenTown.route
巡店航点数组(每店一个 Vector3,按店铺顺序)
TokenTown.tour()
返回 {wpIdx,idx,total,loopCount,wpReached,name} 当前巡店进度
TokenTown.setFly(on)
开关无人机巡游
TokenTown.setEye(on)
切换复眼第一人称视角
TokenTown.setZoom(v)
缩放 9..90
TokenTown.focus(i) / focusName(s)
聚焦第 i 家 / 按名聚焦店铺
TokenTown.setDof(on)
开关移轴景深
TokenTown.refresh()
立即重新拉取 OpenRouter 排行
TokenTown.debugPlace(x,y,z,yaw)
调试:把无人机瞬移到指定位姿
TokenTown.stepTest(dt,n)
调试:同步推进 n 步飞控(不依赖 rAF 帧率),返回 {penetrations,collisions,wpReached,loopCount,minClearance,avoidanceFrames,...}
TokenTown.setNeurons(mid)
改果蝇神经元数量(重建网络 MID=mid → MID² 个中间神经元)
TokenTown.neuronCollisionSweep(mids,dt,simSec)
神经元数 × 碰撞 对照实验,返回 [{mid,neurons,collisions,collisionsPerMin,penetrations,wpReached,minClearance,avoidanceFrames}]
TokenTown.DATA
{status,date,total,err,at} 数据源状态
TokenTown.scene/renderer/shops/LABS
底层 Three.js 对象,供高级读取/扩展

小车 car

TokenTown.setCarView(on)
切换小车第三人称跟车视角(与无人机视角互斥)
TokenTown.viewMode()
返回当前视角 'car' | 'fly' | 'iso'
TokenTown.carInfo()
返回 {x,z,yaw,score,hits,goalX,goalZ,active}(score=到达充电站数,hits=撞墙次数)
TokenTown.carStep(dt,n)
确定性步进 n 步小车仿真(不依赖帧率),用于 headless 验证
TokenTown.carCam()
返回跟车相机位姿 {x,y,z}
TokenTown.updateCam()
立即刷新相机(headless 下 rAF 极慢时手动收敛)
TokenTown.resetCar()
重置小车到出生点并重抽目标

视觉小车 eyeCar

TokenTown.setEyeCarView(on)
切换纯视觉复眼小车第三人称跟车视角(与无人机/射线小车/蚂蚁视角互斥)
TokenTown.eyeCarInfo()
返回 {x,z,yaw,score,active,collisions,goalX,goalZ,outRate[5],loom};outRate 为 5 通道放电率 [偏左,偏右,前进,刹车,LGMD],loom 为复眼 looming 预警
TokenTown.eyeCarStep(dt,n)
确定性步进 n 步复眼小车仿真(每步渲染一次车顶 FPV 并跑 SNN),用于 headless 验证
TokenTown.eyeCarCam()
返回跟车相机位姿 {x,y,z}

蚂蚁 ant

TokenTown.setAntView(on)
切换蚂蚁第三人称跟拍视角(贴地低机位,与无人机/小车视角互斥)
TokenTown.antInfo()
返回 {x,z,yaw,score,hits,goalX,goalZ,active,legs,antennae,scale}(score=到达目标数,legs=足数 6,antennae=触角数 2,scale=模型等比缩放 0.45)
TokenTown.antStep(dt,n)
确定性步进 n 步蚂蚁仿真(不依赖帧率),用于 headless 验证
TokenTown.antGait()
读取六足 / 双触角实时姿态角与步态相位,用于验证交替三足步态(tripod gait)是否在动
TokenTown.antCam()
返回跟拍相机位姿 {x,y,z}

四智能体控制台 ui

TokenTown.agents()
一次性读取四个智能体的实时状态:{fly:{...}, car:{...}, eyeCar:{active,score,collisions,avoid,avoiding,loom}, ant:{...}} —— 碰撞与避让情况的主要数据来源;eyeCar 与 car 并列,可对比两种感知范式在同任务上的表现
TokenTown.refreshHud()
立即刷新控制台(绕开 8Hz 刷新节流);无头测试或需要即时读数时调用
TokenTown.footprints()
返回场景静态障碍包围盒:{shops:[{min,max}], props:[{min,max}]} —— shops=12 家店铺建筑,props=街道障碍(行道树/路灯杆/长椅/路边停车/街道家具)。引擎对三个智能体都施加了「不得进入」的硬约束,可直接复用来自定义第四个智能体或做离线路径规划

快速上手

// 1) 读取无人机 + 小车实时状态
const s = TokenTown.state();
console.log(s.flyX, s.flyY, s.collisions, s.outRate); // 飞控放电率诊断量

// 2) 切到小车第三人称视角,并确定性步进 400 步仿真(不依赖帧率)
TokenTown.setCarView(true);
TokenTown.carStep(0.05, 400);
const car = TokenTown.carInfo();      // {x,z,yaw,score,hits,goalX,goalZ}
console.log('到达充电站', car.score, '撞墙', car.hits);

// 3) 神经元数量 × 碰撞 扫描(无人机)
const sweep = TokenTown.neuronCollisionSweep([8,16,24,32,48], 0.05, 30);
console.log(sweep); // 每项含 collisions / collisionsPerMin / penetrations ...

// 4) 调试:把无人机瞬移到镇中心上空
TokenTown.debugPlace(0, 2.6, 0, 0);

所有方法均为同步、纯前端、无外部依赖,因此天然「对开发者开放」:直接在你自己的页面里 <iframe src="https://flydrones.tech/sim/"></iframe> 后用 iframe.contentWindow.TokenTown 编程控制即可。

四、无人机算法 vs 小车算法 Comparison

两套导航都源自「果蝇的神经形态大脑」,但落地哲学截然不同:无人机走端到端生物启发,小车走生物提案 + 经典规划兜底。下面从感知、网络、决策、世界模型、实测五个维度对比。

感知—决策链路

机载 FPV 128²→ 复眼 32²=1024→ LIF 中间层 576→ 5 输出 + 16帧解码→ 方向舵/油门 无人机(纯视觉端到端)
6 路射线→ 3×6 线性 carW→ 安全反射 + 目标导引→ 曼哈顿航点→ 转向/前进 小车(提案 + 几何外壳)
维度🪰 无人机(Drone)🚗 小车(Car)
生物原型果蝇复眼 → LIF 脉冲神经网络自主飞行果蝇大脑线性策略 + 几何外壳
感知模态视觉:机载 FPV 相机 128² → 复眼 32²(1024 小眼)近距测距:6 路射线(前 / 左 / 右 + 世界边界)
网络结构复眼 1024 → 中间层 576 (LIF) → 5 输出(含 LGMD 碰撞神经元)→ 16 帧放电率解码6 特征 → 3×6 线性权重 carW argmax(前 / 左 / 右)
决策范式端到端 SNN 输出直接驱动方向舵/油门;CX 中央复合体绕行 + MB 蘑菇体在线学习塑形混合:SNN 提案 + 安全反射外壳 + 曼哈顿街道航点规划
世界模型无显式地图,纯感知涌现;航点由「按店径向推到街道」生成显式曼哈顿街道图(航点=街道交叉口 xs∈{-30..30}/zs∈{-22.5..22.5})
目标循环巡遍 12 家店(按序 + 回绕)到达 14 个充电站(街道交叉口)
避障机制网络主导:复眼方位角通道 (YL−YR) + LGMD looming 预警 + CX 持续侧向偏航绕行几何主导:正前将撞 → 锁定更空侧绕行(迟滞防横跳);cosA 判前后 / sinA 判左右
碰撞表现学习开后 MID=24 碰撞 4→1(约 4×),穿模=0玩具车比例下实测 撞墙=0,到达 12 个充电站
跨尺度泛化在原生小镇尺度标定,泛化好线性策略训练于 10×7 房间,在 68×54 小镇失效 → 依赖外壳兜底才恢复
计算量每帧 FPV 渲染 + 1024→576 SNN + 16 帧解码(最重)6 射线 + 3×6 矩阵乘(极轻)
可解释性低(黑箱 SNN);有「神经元数×碰撞」扫描可观测高(决策分支可逐步追踪:感知→提案→外壳→航点)

4.1 射线小车 vs 纯视觉复眼小车 同底盘对照

这是本实验最干净的一组控制变量:同一副四轮底盘、同一座 Token Town、同一批充电站目标,唯一变量是「感知—大脑接入方式」。🚗 射线小车用 6 路测距 + 线性大脑 carW + 几何外壳;👁 视觉小车把无人机的复眼 SNN 大脑直接搬上地面,只把输入从「机载俯视 FPV」换成「车顶前向 FPV」,控制律从舵量/油门重映射为左右轮差速。

车顶 FPV 128²→ 复眼 32²=1024→ LIF 中间层 576→ 5 输出 + 16帧解码→ 差速转向 纯视觉复眼小车(与无人机同大脑,仅换输入模态)
维度🚗 射线小车(Ray Car)👁 纯视觉复眼小车(Eye Car)
感知模态6 路射线测距(前/左/右 + 世界边界),标量距离车顶前向 FPV 128² → 复眼 32²(1024 小眼),稠密视觉
大脑6 特征 → 3×6 线性 carW argmax复用无人机 SNN:复眼 1024 → LIF 576 → 5 输出(含 LGMD)→ 16 帧解码
控制映射SNN 提案 + 安全反射 + 曼哈顿航点 → 转向/前进端到端 SNN 输出 → 差速转向((YL−YR)·增益 作偏航,前向率 作油门)
目标导引曼哈顿航点(剩余距离大轴优先,消除振荡)同射线小车:曼哈顿航点 + 偏置注入 SNN 输出通道
避障几何主导:正前将撞 → 锁定更空侧绕行网络主导:复眼方位角通道 (YL−YR) + LGMD looming 预警 + 差速偏航;建筑硬约束兜底滑移
穿模/碰撞撞墙=0(几何外壳保证)穿模=0(建筑 AABB 硬约束 + 角点双轴推出 + 世界边界 clamp)
到达表现稳定到达 14 个充电站,速度≈2–3 u/s(偏保守)稳定到达充电站,速度≈4–5 u/s(前向偏置更高)
可解释性高(决策分支逐步可追)低(黑箱 SNN),但「复眼面板」可实时观测输入/中间层/5 输出放电率
计算量极轻(6 射线 + 3×6 矩阵乘)较重(每帧 FPV 渲染 + 1024→576 SNN + 16 帧解码,与无人机同)
跨尺度线性策略原训练于小房间,需曼哈顿外壳兜底才在小镇可用直接复用无人机已在小镇定标的大脑,无需重训即全镇通用

结论:同一底盘下,射线方案轻、白盒、零撞但慢;复眼方案重、黑盒、更快且零穿模,并天然继承了无人机在小镇尺度已定标的避障能力。两者并存恰好构成「几何测距 vs 生物视觉」在同一任务上的端到端对照——也是把果蝇 SNN 从空中搬到地面的最直接证据。

核心结论

1. 同一套「果蝇大脑」,两种工程化路线。 无人机把网络当唯一控制器,靠 SNN 涌现的方位角通道 + CX/MB 在线塑形实现避障与巡店;小车把网络当提案生成器,再由确定性几何外壳(安全反射、目标导引、曼哈顿航点)保证「必定到达、几乎不撞」。

2. 为什么小车需要外壳? 小车线性策略 carW 训练于 10×7 小房间,直接放进 68×54 小镇会卡墙(1710 次撞击、0 到达)。加上曼哈顿航点 + 安全反射后,整车漫游全镇、0 撞击。这说明:纯端到端策略的跨尺度泛化是瓶颈,显式规划兜底能立刻补上。

3. 无人机为何能端到端? 它的 SNN 在小镇尺度内完成定标(含 LGMD 真 looming、CX 绕行、MB 学习),且任务(沿街巡店)几何约束弱、容错高;残差碰撞来自贴楼巡航擦碰(几何受限),而非感知失败。

4. 性能取舍。 无人机算力重但自主性强、无需地图;小车算力极轻、可解释、零撞墙,但依赖街道网格这一先验。两者互补,正好构成「生物启发端到端 vs 生物提案+经典规划」的对照样本。

5. 第三智能体:蚂蚁(同一套果蝇神经元)。 蚂蚁按真实身体比例建模(头/中躯/腹柄/腹端 + 6 足各三节 + 肘状触角 + 复眼 + 上颚),但决策复用与小车完全相同的果蝇大脑权重 carW,外挂同样的安全反射 + 目标导引 + 曼哈顿航点。实测:到达目标、撞墙 0、六足呈交替三足步态(两组三足相位差 π)。这构成一个有力的控制变量实验——形态不同(六足 vs 四轮)、大脑相同,行为同样可靠,说明该「果蝇神经元 + 几何外壳」组合对本体形态不敏感,具备迁移性。

6. 第四智能体:纯视觉复眼小车(SNN 大脑跨模态迁移)。 👁 视觉小车是「把无人机大脑搬到地面」的最直接证据:同一套复眼 SNN 权重、同一套 LIF/解码参数,仅把输入从机载俯视 FPV 换成车顶前向 FPV,控制律从舵量/油门重映射为差速转向。它在小镇尺度无需重训即零穿模、稳定到达充电站,速度与避障能力直接继承自已在空中定标的无人机大脑。结合第 4.1 节的对照,Token Town 现在同时提供「🪰 端到端视觉 / 🚗 几何测距提案 / 👁 同大脑视觉地面化 / 🐜 同大脑六足化」四组可并跑、可切换、可由 TokenTown API 统一采样的控制变量样本。