首頁 / 全靠感測器飛 · 部分成立

全靠機上的感測器飛

這一頁是飛行回放。

機身歪了幾度
水平速度

實線 = 真正的值虛線 = 推算程式以為的值兩條線貼得越近,推算得越準

0.00 s

虛線走廊左右各寬 5 公尺,終點在沿路線 20 公尺處。粗點 = 正在急轉閃避(急閃);✕ = 撞上、飛出走廊或掉高度;旗 = 抵達。

100 個場景的總成績

100 個場景怎麼結束每條加起來是 100 場抵達撞柱飛出走廊掉高度
直接拿正確答案(拿來比的上限)
全部用感測器推算(真機的處境)
看原始表格
機身歪幾度的來源未抵達撞柱飛出走廊掉高度歪幾度估錯多少(中位數)速度估錯多少(中位數)
直接拿正確答案(拿來比的上限)5337160—0.096 m/s
全部用感測器推算(真機的處境)61431531.59°0.098 m/s

事先寫好的判定標準是:比「直接拿正確答案」多失敗不超過 10 場,掉高度不超過 5 場。實際是多 8 場與 3 場,通過。兩邊飛的是同樣的 100 個場景,一場對一場比較。

影片:同一套推算程式,一次成功、一次崩掉

機身歪了幾度

左上是從後面跟拍無人機的 3D 畫面,黃線是走廊的邊界。左下是腦看到的兩眼相機畫面。右邊每個點是一顆神經細胞,亮起來表示它正在放電(送出訊號);這裡畫的是這次用到的那一部分腦,共 11,485 顆。畫面底部第一行是機身歪了幾度估錯多少,以及真正歪了幾度。第二行是方向估錯幾度,以及偏離走廊多遠。兩支影片都是「全部用感測器推算」,1× 真實時間。

抵達的一場 機身歪了幾度,全程估錯都壓在 2° 內。畫面上看得到,真正的傾斜衝到 20–40° 時,推算仍跟得上。閃過 21 次柱子後抵達終點。100 場裡有 39 場是這個樣子。
機身歪了多少估錯到不可收拾、掉高度的一場 7.6 秒時機身已歪到 62°,推算程式卻還以為只差 3°。接著誤差衝到 250°,墜毀。同一個場景,直接拿正確答案時是抵達的。100 場裡有 2 場是這個樣子。
場景
機身歪幾度的來源

飛控拿真值姿態(下面叫「直接拿正確答案」)=模擬器直接把「你現在歪了幾度」的正確答案交給飛控。這是成績的上限,真機(真的無人機)不可能有。

全部用感測器估計(下面叫「全部用感測器推算」)=飛控拿不到答案,只能靠陀螺儀(量轉動的感測器)、加速度計(量加速的感測器)、光流感測器(從畫面的移動看出自己動多快)、測距感測器(量距離)自己推算。這才是真機的處境。控制領域把這種推算叫「估計」。感測器的讀數本身有雜訊,靜止時也會多算一點誤差,所以推算出來的值一定帶誤差。這一頁的重點就是誤差有多大、什麼時候會失控。

像是有人在旁邊一直報「你歪了 23 度」,對上閉著眼睛只靠身體感覺判斷。這一系列實驗做的事,就是把「模擬器報答案」一個一個換成「自己感覺」。機身歪了幾度是最後一個,也是最難的一個。

文字說明

這一頁在講什麼

這一頁是飛行回放。無人機朝指定的方向穿過柱子林,路線兩旁用虛線畫出一條走廊。閃柱子由真腦(照真果蠅的接線)負責。之前還剩一樣東西是模擬器直接給正確答案的:機身歪了幾度。這一關把它也拿掉。負責控制飛行的程式(飛控)要用到四個量:方向、高度、速度、機身歪了幾度。現在四個全部由人寫的程式,用機上的感測器推算。

推算程式怎麼做的

推算程式怎麼做的

陀螺儀量機身轉多快,再把讀數一直累加。加速度計量到的是空氣阻力,阻力和速度成正比(−k×速度),所以可以從它反推速度,再從速度推回機身歪了幾度。加速度計靜止時也會多算的誤差,另外用一個反應很慢的程式來估。光流感測器的讀數只給這個程式用,不直接拿來算機身歪了幾度。前一版讓光流直接參與算機身歪了幾度,結果有 22 個場景在急閃時估錯到不可收拾。高度用測距感測器(ToF)量。方向用陀螺儀加上看天空認方向的羅盤(靠天空的偏振光,也就是太陽光在天空形成的固定圖樣,昆蟲靠它認方向)。

這個結果有四個限制,要一起講

  • 機身歪了幾度這一關,是在模擬裡加了空氣阻力之後才成立的(阻力和速度成正比)。沒有阻力時,這件事在物理上就做不到:四軸無人機歪著機身等速飛的時候,機上的加速度計量不到自己在歪。沒有阻力的模擬裡試了四次,全部失敗。四次的做法是:加速度計互補濾波、只用陀螺儀累加、光流輔助的濾波器、速率模式飛控。最嚴重的一次 100 場全部翻機。加了阻力之後,加速度計才「看得到」機身歪了,但還是又失敗兩次:第五次是速度愈估愈偏,第六次是急閃時偶爾會把機身歪了多少估錯到不可收拾。第七次才是這裡看到的版本。
  • 推算程式事先知道阻力有多大(阻力係數),也知道加速度計靜止時多算的誤差大概落在多大的範圍(標準差)。這比真的機器寬鬆。
  • 沒有在真機上試過,全部是模擬。
  • 100 場裡仍有 2 場把機身歪了多少估錯到不可收拾(上面影片裡崩掉的那一場就是其中之一,最大估錯到 250°)。100 場裡還有 7 場機身歪超過 60°。直接拿正確答案時,這兩個數字都是 0。

腦做了什麼、沒做什麼

腦只負責一件事:看到柱子逼近時,決定往左閃還是往右閃(每場約 13–22 次)。認方向不是腦做的。要朝哪個方向飛、現在偏了多少,是另一段人寫的程式用陀螺儀加看天空認方向的羅盤算的。

本來的計畫是讓腦自己認方向。果蠅腦裡真的有一個指南針迴路:腦裡有一圈神經細胞(所在的區域叫中央複合體),頭轉到哪個方向,這一圈上就有一個活動亮點跟著轉,蒙住眼睛也還記得住。我們用真腦試著重現它。判定標準是三件事都要做到:跟得上轉動、蒙眼後記得住、蒙眼後還能繼續轉。人工調整參數試了四條路,用梯度學習(讓電腦自己調整參數的方法)試了一條,沒有一組同時做到三項。所以方向只好交給人寫的程式,腦在這裡沒有參與認方向。細節見腦內指南針那一頁。

這 4 個場景怎麼挑的

從正式那一批的 100 場裡挑:2 個是兩種做法都抵達,1 個是直接拿正確答案時抵達、但用感測器推算時撞柱,1 個是用感測器推算時把機身歪了多少估錯到不可收拾、掉高度。重飛一次的結果,和正式結果每個場景都相同。

文字說明

給想查原始紀錄的人:這一頁對應實驗 M4g3,屬於 M4 線。按鈕上的 seed 就是場景編號。100 個場景是 seed 4100–4199;抵達的影片是 seed 4103,崩掉的影片是 seed 4139。