Fibril Simulation の開発
この section は、simulation を利用する側ではなく Fibril Simulation framework 自体を変更する開発者向けです。 Component、runtime lifecycle、state authority、replay semantics などの public contract を変える場合に参照します。
通常の robot simulation を作るだけであれば、この section の内部設計を前提知識にする必要はありません。 利用方法は Getting Started と Guides に分離しています。
設計上の境界
framework は次の境界を保つことを前提にしています。
- MuJoCo active state は一つの execution owner thread だけが所有する。
- Manifest の解釈と model compile は run 開始前に終え、immutable
SimulationPlanへ freeze する。 - 一回の run に属する mutable state は
SimulationInstanceに閉じ込める。 - ROS callback や他 thread からの入力は ingress-only とし、active state を直接変更しない。
- standard virtual hardware は Component として構成し、competition や application 固有 semantics は extension へ分離する。
- trace は原因を追える semantic boundary を保持し、最終 state だけを記録する形式に縮退させない。
読む順番
Architecture は package と主要 abstraction の関係を説明します。
Construction は Manifest から Plan が freeze されるまでを扱います。
Runtime lifecycle は一回の step() に含まれる 13 phase の順序を定義します。
state mutation や threading を変更する場合は State authority and concurrency を先に確認してください。 Component type や plugin boundary を追加する場合は Components and extensions が対象です。
contract を変更した後は Testing and compliance に従い、focused test と architecture acceptance test の両方で根拠を残します。