橋接遊戲引擎與航太模擬之間的差距

航太軟體的開發長期以來一直受到高保真模擬與開發者易用性之間鴻溝的困擾。多年來,業界標準涉及將不同的工具拼湊在一起——使用 MATLAB/Simulink 進行控制邏輯、使用 Gazebo 進行物理模擬,以及使用自定義的 Python 腳本進行編排。這種碎片化的工作流程通常會導致一個「脆弱」的技術棧,使得從模擬到現實世界飛行的過渡充滿風險。

為了應對這一點,Elodin 開源了一個為 Anduril 的 AI Grand Prix(一場獎金 50 萬美元的自主無人機競賽)設計的練習平台。雖然其目的是作為等待官方 Virtual Qualifier 1 模擬器的參賽者的入門指南,但該專案揭示了透過借用遊戲產業的直覺來構建現代航太工具的更廣泛哲學。

現代飛行模擬器的架構

Elodin 的方法從傳統的「拼湊」模式轉向統一、高性能的技術棧。系統的核心是建立在 Rust ECS (Entity Component System) 之上,並結合了一個名為 nox 的 JIT 編譯物理核心。

關鍵技術組件:

  • 物理核心: 使用 JAX 風格的程式碼編寫,透過對類型化組件使用 @el.map 函數。這種架構允許自然地進行 GPU 加速、蒙地卡羅模擬以及位元級別的確定性重放。
  • 編輯器: 一個透過 TCP 連接到時序遙測數據庫 (elodin-db) 的 3D 編輯器。這允許開發者將 GLB 模型、圖表和攝影機畫面直接與 ECS 組件進行即時綁定。
  • 流程編排: 一個小型流程運行器 (s10) 允許單個 Python 入口點來啟動必要的基礎設施,包括飛行控制器、渲染伺服器和外部估計器。

實作 AI Grand Prix 平台

AI Grand Prix 平台是此技術棧的一個具體應用,旨在模擬自主無人機競賽的特定限制。該平台以 1 kHz 的步調在鎖步迴圈中將三個主要元素連接在一起:

  1. 6-DOF 物理: Elodin 處理剛體物理、馬達動力學、阻力、地面約束以及多速率感測器(IMU、氣壓計、磁力計)。
  2. 真實飛行控制: 該平台並非模擬飛行控制器,而是使用真實的 Betaflight SITL (Software-In-The-Loop) 版本。這確保了當開發者在模擬器中調整控制器時,他們調整的是將在物理硬體上運行的完全相同的 PID 迴圈。
  3. 自動駕駛求解器: 一個由參賽者編寫的 Python 函數,用於接收感測器更新並返回 RC 指令。為了符合官方競賽規範,該求解器無法訪問 GPS、深度或馬達 RPM。

挑戰與權衡

構建具代表性的模擬需要應對技術不一致性的雷區。Elodin 在其目前的實作中指出了幾點注意事項:

  • 坐標系: 該平台目前使用 ENU (East-North-Up) 世界狀態,而官方競賽規範要求使用 NED (North-East-Down)。
  • 大氣建模: 目前的物理模型使用單一阻力係數,省略了複雜的效應,如湍流、地面效應和電池壓降。
  • 光學不一致性: 官方規範中關於攝影機視野 (FoV) 存在差異。Elodin 選擇遵循內參 (VFoV $\approx$ 58.72°) 而非規定的 VFoV 為 90°。

從遊戲到航太

這個專案的動機源於遊戲開發(特別是 The Sims 4)的背景。作者指出,遊戲引擎提供了一種拋光度——湧現行為、確定性重放和直觀的編輯器——這在航太工具中往往是缺失的。透過應用這些「遊戲引擎直覺」,Elodin 旨在將運行實用模擬器所需的時間從數週縮短到數小時。

對於想要開始的人來說,該專案可在 GitHub 上獲取,並需要 uv, git, 和一個 C 工具鏈。設置過程透過一系列腳本進行簡化,藉由安裝 Elodin CLI、同步依賴項並構建 Betaflight SITL,讓開發者可以在幾分鐘內從安裝到操控飛行中的無人機。

Sources