Flight Simulatorでどのように機能するかを説明できます。
まず、プログラマーだけにこの質問をした場合、半分の答えしか得られないので、たぶんhttp://electronics.stackexchange.comにクロスポストする必要があります。
私はロボットを使って仕事をしたことはありませんが、フライトシミュレータでハードウェアを5年間使って、ロボットのアーキテクチャがどのように機能するかを説明しました。
ハードウェアレイヤーがダム
シンプルな入力/出力値を調整し、アナログ信号の補間ブレークポイントを設定できる基本的なインターフェイスが含まれています。「新鮮な」ハードウェアを使用している場合、ほとんどまたはまったくキャリブレーションを行わなくてもすべてが期待どおりに機能しますが、時間が経つにつれて部品は機械的な摩耗を受け、調整する必要があります。
キャリブレーションは、最小値と最大値の間の範囲に区分されたシンプルなテーブルです。これらの入力を測定するために、通常、サーボが使用されます(リニアポテンショメータ、トランスデューサ、加速度計など)。または、計装の場合は、正確さを視覚的に判断し、較正されるまで調整するだけです。
ソフトウェア層は反対です
すべてが複雑で相互接続されているため、いくつかの変数を分離して機能をテストすることが重要です。データを収集できる現実的なシナリオを実行する方がはるかに簡単であるため、シナリオを考えて頭を悩ます必要はありません。テストを実行すると、基本的に現在の出力に対して保存されたデータを測定します。
フライトシミュレータでは、これはQTG(Qualification Test Guide)と呼ばれます。そのコアでは、1つの次元が時間で、もう1つの次元が出力である2Dグリッドにデータをプロットします。
信じられないかもしれませんが、それがモデルの開発方法の本質です。実際の飛行機には大量のセンサーが装備され、制御されたシナリオを実行します。すべてのコントロールは人の介入なしに駆動できるため、テストはコンピューターによって実行され(つまり、シミュレーション自体が実行され)、データが比較されます。
ロボット工学は非常に異なる規模で作成されていますが、原理は同じです。従来のアプローチでは、ハードウェア層とソフトウェア層を完全に切断して、両方を個別にテストできます。ハードウェア入力はサーボを介して収集され、独立したインターフェースを介して設定されます。ソフトウェア入力は、ハードウェアに送信される信号を個別に測定および比較し、既知の「良好な」データに対してプロットすることにより、設定/読み取りできます。
テスト自体は、結果が予測可能で、測定可能で、再現可能である限り、必ずしも複雑である必要はありません。