Hermes
Simulation Orchestration Platform for Aerospace
Loading...
Searching...
No Matches
hermes.modules.icarus_module.IcarusModule Class Reference
Collaboration diagram for hermes.modules.icarus_module.IcarusModule:

Public Member Functions

None __init__ (self, str module_name, Path config_path, str|None prefix=None)
None bind_shm (self, SharedMemoryManager shm)
list[SignalDescriptorget_signal_descriptors (self)
list[str] input_signals (self)
list[str] output_signals (self)
None stage (self)
None step (self, float dt)
None reset (self)
dict[str, Any] introspect (self)

Protected Member Functions

None _parse_schema (self, dict[str, object] schema)
list[str] _get_execution_order (self, list[dict[str, Any]] components)

Protected Attributes

 _name = module_name
 _prefix = prefix or module_name
 _config_path = Path(config_path)
SharedMemoryManager|None _shm = None
 _sim = _icarus.Simulator(str(self._config_path))
list _input_signals = []
list _output_signals = []

Detailed Description

Hermes module wrapping an Icarus 6DOF simulator.

Construction creates and stages the Icarus simulator so that
signal names can be discovered before Hermes shm is allocated.

Constructor & Destructor Documentation

◆ __init__()

None hermes.modules.icarus_module.IcarusModule.__init__ ( self,
str module_name,
Path config_path,
str | None prefix = None )
Create and stage the Icarus simulator for signal discovery.

Args:
    module_name: Hermes module name (used as signal prefix)
    config_path: Path to Icarus YAML config (e.g. rocket_ascent.yaml)
    prefix: Signal prefix override; defaults to module_name

Member Function Documentation

◆ _get_execution_order()

list[str] hermes.modules.icarus_module.IcarusModule._get_execution_order ( self,
list[dict[str, Any]] components )
protected
Get component execution order from schema component order.

◆ _parse_schema()

None hermes.modules.icarus_module.IcarusModule._parse_schema ( self,
dict[str, object] schema )
protected
Classify signals from Icarus schema as inputs or outputs.

Inputs: component inputs without ``wired_to`` (externally controllable).
Outputs: all component outputs.

◆ bind_shm()

None hermes.modules.icarus_module.IcarusModule.bind_shm ( self,
SharedMemoryManager shm )
Bind shared memory after it has been created.

Args:
    shm: The shared memory manager with signals already allocated.

◆ get_signal_descriptors()

list[SignalDescriptor] hermes.modules.icarus_module.IcarusModule.get_signal_descriptors ( self)
Return signal descriptors for shm allocation.

All Icarus signals are f64.  Inputs are writable; outputs are
published (read-only from Hermes' perspective).

◆ input_signals()

list[str] hermes.modules.icarus_module.IcarusModule.input_signals ( self)
Unwired input signal names (Icarus-local names).

◆ introspect()

dict[str, Any] hermes.modules.icarus_module.IcarusModule.introspect ( self)
Return Icarus internal component topology and metadata.

Uses the Icarus introspection graph API which provides typed edges:
- **route**: explicit SignalRouter connections
- **resolve**: implicit dependencies via Backplane::resolve()

◆ output_signals()

list[str] hermes.modules.icarus_module.IcarusModule.output_signals ( self)
Output signal names (Icarus-local names).

◆ reset()

None hermes.modules.icarus_module.IcarusModule.reset ( self)
Reset Icarus to initial conditions and re-sync outputs.

◆ stage()

None hermes.modules.icarus_module.IcarusModule.stage ( self)
Sync initial Icarus values to Hermes shm.

The Icarus simulator is already staged (done in __init__).
This just copies initial output values into shared memory.

◆ step()

None hermes.modules.icarus_module.IcarusModule.step ( self,
float dt )
Advance Icarus physics by dt seconds.

1. Read input signals from shm → Icarus
2. Step Icarus
3. Write output signals from Icarus → shm

Member Data Documentation

◆ _config_path

hermes.modules.icarus_module.IcarusModule._config_path = Path(config_path)
protected

◆ _input_signals

hermes.modules.icarus_module.IcarusModule._input_signals = []
protected

◆ _name

hermes.modules.icarus_module.IcarusModule._name = module_name
protected

◆ _output_signals

hermes.modules.icarus_module.IcarusModule._output_signals = []
protected

◆ _prefix

hermes.modules.icarus_module.IcarusModule._prefix = prefix or module_name
protected

◆ _shm

SharedMemoryManager | None hermes.modules.icarus_module.IcarusModule._shm = None
protected

◆ _sim

hermes.modules.icarus_module.IcarusModule._sim = _icarus.Simulator(str(self._config_path))
protected

The documentation for this class was generated from the following file: