果蝇 Drosophila 仅有约 10 万个神经元,却能在复杂环境中完成高速飞行、急转弯、 精准着陆与毫秒级的碰撞规避。它的视觉系统里有一类被称为 LGMD(小叶巨型运动探测器) 的神经元, 专门检测视野中“逼近”的扩张光流,并在碰撞前触发逃逸转向——这是自然界最精巧的避障系统之一。
果蝇的复眼由约 800 个小眼组成,对“正面逼近物体造成的视野扩张”极度敏感。LGMD 把这种扩张 编码成单一的碰撞警报信号。
视觉信号经 LIF(泄漏积分-发放)神经元层层处理,发放率即“意图”。偏航、前进、刹车由网络自身 的连接结构决定,而非硬编码 if/else。
解码后的偏航角速度与油门直接驱动无人机,形成“看—想—飞”的实时闭环。画面、网络、控制同频运行。
真正的 LGMD 用“中央增亮 − 周边增亮”判定逼近。自运动(向前飞)会让周边光流远大于中心, 从而被自然抵消,不会误报。
整个系统跑在一个自包含的 index.html 里(Three.js r128 + 自研 SNN)。
每一帧,无人机看到的画面都要走完下面这条从“像素”到“动作”的完整链路。
Three.js PerspectiveCamera(120°) 模拟果蝇宽视场的第一视角,实时渲染城市与障碍场景。
画面渲染到 128² 离屏 RT,每 4×4 像素平均降采样,得到 1024 个“小眼”的亮度阵列。
隐藏层为“方位结构化”连接(中心→LGMD/刹车,左/右视野→偏航),固定随机种子,可完全复现。
YAW_L / YAW_R(左右偏航)、FWD(前进)、BRK(刹车)、LGMD(逼近警报)。
在 16 帧窗口上统计脉冲发放率,解码出偏航角速度 yawRate 与油门 throttle。
解码输出直接驱动无人机运动,下一帧画面随之改变——感知、决策、运动同频滚动。
为什么叫“网络驱动”? 避障不是写死的规则:障碍进入视野 → 对应小眼亮度变化 → 脉冲发放 → 偏航输出。我们只在地图边界保留极少的兜底安全逻辑,真正的飞行行为全部由网络权重“涌现”。
早期版本用一个简单的“整体亮度变化”来触发刹车,前向飞行时容易被自己的运动骗到(误报)。 最新实现(步骤 1+2)换成了生物上更站得住脚的中心-周边对手(center-surround opponent)机制。
netAppr。netAppr≈0,不再误报刹车。loom 警报 → 无人机绕行。lmBase 与上升沿 (lnow−loomPrev) 贴近生物 LGMD 的碰撞预测特性。实测:自由飞行 400 帧,穿模 0、到达航点 >0、运行错误 0;网络避障每千帧约 762–830 帧处于激活状态。 在“贴着墙角擦过”这类几何极限场景下,仅步骤 1+2 仍不足以把残余碰撞降为零——这正是路线图中步骤 3、4 要解决的。
下面的窗口就是完整的 FlyDrones 模拟器(与本站同源部署)。左上角是复眼视野与 LGMD 状态, 中央是 FPV 第一视角。它完全由 SNN 自主驾驶——你只需要看着它飞。
提示:模拟器为 WebGL 实时渲染,建议在桌面浏览器中打开以获得最佳帧率。红框 = LGMD 逼近区,黄虚线 = 自运动主导区。
本模拟器已发布到 IPFS(内容寻址、永久保存、抗审查):
starstack.store/ipfs/QmVv5JRRFK6DB484AeNXCre9jpqoFhie5PnzrxhaJN3g31
最新构建(含步骤 3 CX 绕行 + 步骤 4 MB 学习,与下方 /sim/ 同源):
starstack.store/ipfs/QmU29MrybjHVzeikgY9Y8Xu6P9Q4s7HMrPdGBFgw3vWmyr