|
Icarus
Vehicle Simulation as a Transformable Computational Graph, built on Vulcan and Janus
|
Related: 00_index.md | 01_core_philosophy.md
| Feature | Flat Architecture Benefit |
|---|---|
| Refactoring | Moving a component from "Avionics" to "Payload" is just a string rename. No pointer surgery. |
| Testing | Unit test any component in isolation by mocking the Signal Backplane. |
| Parallelism | Easy to identify independent sub-graphs in the flat list for thread-pool execution. |
| Optimization | Trivially exposes the global f(x,u) function needed for trajectory optimization. |
| Aspect | Hierarchical (Scene Graph) | Flat (IDOA) |
|---|---|---|
| Data Flow | parent->child->doThing() | Backplane signal read/write |
| Ownership | Deep nesting, pointer chains | All components are peers |
| Refactoring | Pointer surgery required | String rename |
| Testing | Must mock parent chain | Mock backplane only |
| Symbolic Mode | Deep branching breaks tracing | Linear execution trace |
| Memory Layout | Scattered across heap | Contiguous state vector |
Aerospace engineers think in block diagrams. IDOA maps directly to this mental model—components are blocks, signals are wires.
CasADi requires a linear execution trace to build symbolic graphs. Deep object hierarchies with virtual dispatch obscure this trace. Flat execution enables clean graph extraction.
Contiguous state vectors are cache-friendly and solver-compatible. No chasing pointers through a scene graph.
Provision once, Stage many times. Memory allocation happens once; each run only resets state and re-wires inputs.
Flat component list with topological sort guarantees execution order. No hidden dependencies or callback ordering issues.
Good fit:
Less suitable: