ゲームエンジンと航空宇宙シミュレーションの間の溝を埋める

航空宇宙ソフトウェアの開発は、長らく高忠実度シミュレーションと開発者の使いやすさ(エルゴノミクス)の間の乖離に悩まされてきました。長年、業界標準は、制御ロジック用の MATLAB/Simulink、物理演算用の Gazebo、オーケストレーション用のカスタム Python スクリプトといった、バラバラなツールを繋ぎ合わせる手法でした。この断片化されたワークフローは、シミュレーションから実世界の飛行への移行にリスクが伴う「脆弱な」スタックを生み出すことがよくあります。

これに対処するため、Elodin は、50万ドルを懸賞金とする自律型ドローンレース競技会、Anduril の AI Grand Prix のために設計されたプラクティス・リグをオープンソース化しました。これは、公式の Virtual Qualifier 1 シミュレーターを待つ参加者のための入門編として意図されていますが、このプロジェクトは、ゲーム業界の直感を取り入れることで、現代的な航空宇宙ツールをどのように構築するかという、より広範な哲学を明らかにしています。

モダンな飛行シミュレーションのアーキテクチャ

Elodin のアプローチは、従来の「繋ぎ合わせ」モデルから、統合された高性能なスタックへと移行します。システムの核となるのは、Rust ECS (Entity Component System) と、nox と呼ばれる JIT コンパイルされた物理コアの組み合わせです。

主要な技術コンポーネント:

  • 物理コア: 型付けされたコンポーネントに対して @el.map 関数を使用する JAX スタイルのコードで記述されています。このアーキテクチャにより、GPU 加速、モンテカルロ・シミュレーション、およびビット単位で決定論的なリプレイが自然に行えるようになります。
  • エディタ: TCP を介して時系列テレメトリデータベース (elodin-db) に接続する 3D エディタです。これにより、開発者は GLB モデル、プロット、カメラフィードを ECS コンポーネントに直接ライブバインドできます。
  • プロセス・オーケストレーション: 小規模なプロセスランナー (s10) により、単一の Python エントリポイントから、フライトコントローラー、レンダリングサーバー、外部エスティメーターを含む必要なインフラストラクチャを起動できます。

AI Grand Prix ハーネスの実装

AI Grand Prix ハーネスは、このスタックの具体的な応用例であり、自律型ドローンレースの特定の制約をシミュレートするように設計されています。このリグは、3 つの主要な要素を 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) が要求されています。
  • 大気モデル: 現在の物理モデルは単一の抗力係数を使用しており、乱流、地面効果、バッテリーの電圧降下(battery sag)などの複雑な効果を省略しています。
  • 光学的な不整合: 公式スペックにはカメラの視野角 (FoV) に関して不一致があります。Elodin は、記載された VFoV 90° ではなく、内部パラメータ(VFoV $\approx$ 58.72°)に従うことを選択しました。

ゲームから航空宇宙へ

このプロジェクトの動機は、ゲーム開発(具体的には The Sims 4)のバックグラウンドに由来します。著者は、ゲームエンジンが、航空宇宙ツールに欠けていることが多い、創発的挙動、決定論的なリプレイ、直感的なエディタといったレベルの洗練(ポリッシュ)を提供していると指摘しています。これらの「ゲームエンジンの直感」を適用することで、Elodin は、有用なシミュレーションを稼働させるための時間を、数週間から数時間へと短縮することを目指しています。

始めたい方は、GitHub でプロジェクトが公開されており、uv, git, および C toolchain が必要です。セットアップ・プロセスは、一連のスクリプトによって合理化されており、Elodin CLI をインストールし、依存関係を同期し、Betaflight SITL をビルドすることで、、開発者がインストールから飛行可能なドローンに到達するまでを数分で完了させることができます。

Sources