飛控的「自主」共 56 項,只有一項是為了把握機會
ArduPilot 的 ModeReason 列舉就是「機上自主決策」的完整清單:56 個值裡 43 個是飛機自己決定的,其中 21 個是偵測到危險,而只有 SOARING_THERMAL_DETECTED 一項是因為發現機會。至於 end-to-end,PX4 主線那個 mc_nn_control 的 tensor arena 只有 10 KB、Kconfig 預設 n,ArduPilot 主線一個都沒有。
ArduPilot 的 ModeReason 列舉就是「機上自主決策」的完整清單:56 個值裡 43 個是飛機自己決定的,其中 21 個是偵測到危險,而只有 SOARING_THERMAL_DETECTED 一項是因為發現機會。至於 end-to-end,PX4 主線那個 mc_nn_control 的 tensor arena 只有 10 KB、Kconfig 預設 n,ArduPilot 主線一個都沒有。
把 Skybrush 那套開源燈光秀韌體 9,199 行搜遍 neighbour、collision、swarm,沒有任何一架飛機知道別架的存在——兩百架之間同步的全部內容,是一個 GPS 週內秒加一個毫秒偏移,防撞是在地面的編排軟體裡算完的。而資安檢測規範第 7 章那個群飛專章,十二個項目的「遙控無人機」欄從頭到尾都是「-」,測的是交換器與路由器。
在 SITL 裡把無人機飛到 28 公尺,再打開模擬器內建的 GPS 干擾,約 7 秒後飛控自己宣告 EKF 失效、切成 LAND、降落上鎖——它沒有飛走,也沒有墜毀。而讀 PX4 原始碼會發現 EKF2_GPS_CHECK 的 12 道閘門裡,第 11 位的「干擾」偵測預設是關的:估計器自己就抓得到干擾,詐騙卻只能靠接收機告訴它。
把兩套都 clone 下來各 build 一次之後,有三件事跟原本的認知不一樣:ArduPilot 的 EKF3 檔頭直接寫著推導來自 PX4/ecl,兩套在最難的那一層是同源的;PX4 近一年的提交來自公司網域(Auterion 一家 380 筆),ArduPilot 來自個人信箱且一個人佔 37%;而真正決定選哪個的不是效能,是 BSD-3 vs GPLv3 與你要改的是哪一層。