展場模式:讓觀眾用自己的手機打開 /play 就能丟食物、戳觸角、切除迴路,大螢幕會同步反應。另外 /duel 是並排對照競技場:同一個亂數種子、同一張場地,完整大腦對上被切掉一條迴路的大腦,兩隻一起跑給觀眾看。
灰色=牆(兩端圓角),紅點=食物,黃色昆蟲的六隻腳會跟著步態擺動、淡色表示抬起。觸角顏色:綠=正常、橘=前方 15 公分內有牆(迫近感)、紅=碰到。藍線=最近 30 秒軌跡。視野固定,只有昆蟲跑出場地時才會擴大。
由左到右:觸角機械感覺與迫近偵測 → 兩側興奮度(積分+指數衰減)→ 中央複合體的行為閘(三選一,黃框是贏家)→ 轉向量 → 下行神經元 → 腹神經索的節律產生器(CPG)→ 左右三足組的振幅。每個節點下方是即時數值,連線上的數字是傳出的訊號強度、越粗越強。顏色:觸角紅=碰到、迫近橘、興奮度紅色越深越高、轉向左藍右橘、飢餓橘、多巴胺綠、生理時鐘黃、閘門灰底黃框=贏家。
| 模型節點 | 真實細胞類型 | 神經區 | 數量 | 說明 |
|---|
跟小地圖同一份資料的立體呈現:地面格線、牆、食物、六足昆蟲。腳的膝蓋依真實馬達角度擺動,抬起的腳會離地。滑鼠拖曳可旋轉視角,滾輪縮放;相機自動跟隨昆蟲。本機 PyBullet 視窗只有在電腦上才有,這個在雲端也看得到。
左/右觸角撞擊:模擬該側觸角被碰到,大腦立即啟動避障反射(實體與虛擬同步)。食物重生:把食物隨機放到新位置。暫停:凍結大腦與馬達,實體保持姿勢。滑桿放開時才生效,所有觀看者共用同一隻昆蟲。
關掉一條迴路,看行為怎麼壞掉:這就是神經科學裡的「損傷實驗」。關避障→撞牆不轉;關趨味→找不到食物;關迫近感→更容易楔住;關承諾→轉向來回擺盪;關飢餓→動機不變;關習慣化→每次撞都全力反應;關多巴胺→不會獎懲調整;關雜訊→路線僵硬;關生理時鐘→活動度恆定。開關立即生效,所有人共用。
選一個參數與幾個數值,每個數值自動跑固定秒數、重複 N 次(每次隨機雜訊不同),記錄每分鐘覓食次數與撞牆數,顯示平均 ± 標準差與誤差棒,做成報告可用的對照表。跑完會把參數還原;「匯出報告」會把結果、參數快照與數位雙生一致率寫成 Markdown/CSV/JSON(本機在 runs/ 目錄,雲端可從 /run/ 下載)。
| 數值 | n | 覓食/分 (平均±SD) | 撞牆 (平均±SD) |
|---|
果蠅腦是脈衝神經網路:神經元平常安靜,活性越高發射越密。這裡把模型裡 12 個節點的活性用 Poisson 過程轉成脈衝(最高 100 Hz),每一列一個神經元、每一點一次發射,右側是最近 1 秒的發射率。可以看到觸角一碰就密集發射、興奮度慢慢稀疏、贏家閘持續放電。
三條色帶由上到下:模式(藍=直走、綠=趨味、紅=避障且承諾右轉、深紅=避障且承諾左轉、紫=脫困)、左觸角(黃=接觸、橘=迫近)、右觸角;白色直線=吃到食物。下方曲線:紅/橘=左/右興奮度、黃=轉向量(中線為 0,上為右)、綠虛線=食物角度誤差(±180° 縮到滿幅)。由上而下就是「刺激 → 決策 → 結果」。
M5Stack:收到實體韌體心跳時亮綠(雲端展示沒有實體,恆為紅)。PyBullet:物理模擬運作中。WebSocket:瀏覽器與大腦的即時連線,括號內是同時觀看人數。t 是模擬經過的秒數。
羅盤:黃色箭頭是身體航向(永遠朝上),紅色箭頭是食物方向;兩者夾角就是「角度誤差」,正值=食物在左。氣味:食物散出高斯氣味場,兩根觸角尖端各聞到一個濃度,大腦只用「左減右」決定轉向(嗅覺趨性,關掉嗅覺才退回理想羅盤)。迫近=觸角尖端 15 公分內有牆;接觸=觸角碰到。
五條驅力互相競爭,最強的接管轉向,優先順序固定:避障(反射)> 社交(雄性看到同類)> 趨味(氣味或羅盤)> 記憶(蕈狀體記得的好地方)> 直走。承諾條:避障一旦選邊,會維持到興奮度消退或時效到期才換邊。
果蠅沒有 GPS。牠在橢圓體的 16 個楔形上維持一個活動小丘(bump),小丘的位置就是牠自己認為的朝向。P-EN 神經元把身體轉動量推著小丘沿環移動,看得到地標時小丘被拉回校正,看不到就盲飛並慢慢漂移 —— 漂移是真果蠅也有的特性,不是程式錯誤。外圈亮起來的格子=該楔形的活性,藍線=環估計的朝向,黃線=真實朝向,兩者夾角就是誤差。
同樣的刺激,不同的內在狀態會做出不同決策。飢餓:沒吃到食物會慢慢上升,放大趨味、提高冒險;吃到食物就下降並釋放多巴胺(獎勵,暫時再放大趨味)。撞牆會累積懲罰訊號,放大避障。習慣化:同側觸角反覆被碰,反應逐次變小,休息後恢復。生理時鐘:一「天」600 秒、早晚兩個活動高峰,活動度只調探索雜訊。
場地切成 4×3 個「位置細胞」。吃到食物時多巴胺把目前格子的價值寫高(綠),撞牆則寫低(紅),價值以 2 分鐘時間常數慢慢淡忘。沒有氣味也沒有目標時,大腦會往價值最高的格子探索(記憶驅力)。這是紀錄裡說「虛擬果蠅沒有」的後天學習,黃框=目前所在格子。
加入第二隻昆蟲後,兩隻都能感知對方的方位與距離(費洛蒙/視覺)。同樣的輸入,依性別走不同迴路:雄性遇到雌性 → 求偶追逐;雄性遇到雄性 → 攻擊逼近;雌性 → 忽略。這對應 2026 年雄性全中樞神經系統連接組(MaleCNS)的發現:多數神經元類型雌雄同型(8,069 種相同、138 種有差異、289 種雄性專有),性別差異集中在高階腦中樞,只靠少數「開關」神經元切換求偶/攻擊等行為。第二隻沒有覓食驅力,純粹當社交對象。
模式:FORWARD 直走、TAXIS 朝食物趨近(氣味或羅盤)、MEMORY 往記憶中的好地方探索、COURT 求偶追逐、AGGRESS 攻擊逼近、AVOID 觸角受刺激的避障反射、ESCAPE 卡住時的脫困動作。turn 轉向量:−1 全力左轉、+1 全力右轉、0 直行。興奮度:觸角受刺激後的神經活性,碰撞時跳到 1,之後依時間常數指數衰減;哪一側高就往另一側轉。
六顆馬達的角度隨時間的變化(中立 90°)。兩組三腳相位相差 180°,一組著地推進時另一組抬起前收,這就是昆蟲的三足步態。轉彎時內側那一組振幅縮小甚至停住。
脊髓層的節律不需要大腦下指令:相位持續旋轉,六隻腳依相位表輸出。三足步態時藍點與橘點永遠相差 180°;四足波步態時分成三組相差 120°。大腦唯一能改的是左右振幅(下方兩條):轉向量為正時右側縮小,身體就向右彎。
步頻低於 1 Hz 自動換成四足波步態(tetrapod):三對對角腳相差 120°、隨時有四隻腳著地,像真果蠅慢走時一樣。把步態頻率滑桿拉到 1 以下就能看到。
同一顆大腦同時驅動實體與虛擬昆蟲,兩邊的觸角撞擊應該在同一時刻發生。這裡把實體微動開關事件與虛擬觸角事件在 0.5 秒內同側配對:一致率=配對數 ÷ 所有事件數,延遲=兩者時間差。雲端展示沒有實體,面板會顯示「無實體連線」;本機 twin 模式才有數據。
自動跑操作手冊 §6 的檢查清單:心跳、觸角狀態回報、送馬達指令後控制器是否還活著(電流突波會讓 M5Stack 重啟)、校正指令、最後請你按左右觸角各一下。結果會寫進事件日誌與匯出報告。雲端沒有實體會直接顯示失敗。
把過去某一輪錄下的遙測載回儀表板重播:小地圖、神經狀態、時間軸等面板會顯示當時的資料。可暫停、拖時間軸。評審問「那一刻大腦在想什麼」時可以倒回去看。回放時不會動到即時模擬。
抵達食物:吃到食物的次數(食物會隨機重生)。平均抵達秒數:從上一個食物走到下一個的平均時間。撞擊總數:觸角碰撞事件數,同側 0.5 秒內只算一次。路徑長:累積走過的距離。
最新在最上面。hit_sim 虛擬觸角撞牆、hit_web 網頁按鈕、hit_gui 3D 視窗按鈕、hit_hw 實體開關、food_reached 吃到食物、escape 脫困動作、reset 卡住太久傳回起點、param_change 調參、ablation 迴路開關、experiment_* 實驗、pause/resume 暫停與繼續。