Skip to content

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 の両方で根拠を残します。