Managing Subsystem Implementations
SUAVE’s managed/managing separation means any managing subsystem can be plugged in as long as it satisfies the ROS 2 interface requirements. This page lists all known implementations — both those shipped in this repository and external ones built by the community.
Built-in implementations
These are included in the SUAVE repository and available out of the box.
None (suave_none)
A pass-through managing subsystem that performs no adaptation. Useful as a lower-bound baseline when comparing adaptation strategies.
Launch: ros2 launch suave_none suave_none.launch.py
Random (suave_random)
Applies adaptations at random intervals without analysing the system state. Useful as a random baseline to verify that structured adaptation adds value over chance.
Launch: ros2 launch suave_random suave_random.launch.py
Metacontrol (suave_metacontrol)
Uses MROS2, the ROS 2 implementation of the Metacontrol framework. The system is modelled in an OWL ontology (TOMASys) with SWRL rules encoding adaptation logic. The reasoner infers which function design best satisfies the current quality attribute requirements and issues the corresponding system_modes reconfiguration.
Launch: ros2 launch suave_metacontrol suave_metacontrol.launch.py
Behavior Tree (suave_bt)
Implements adaptation logic as a BehaviorTree.CPP behavior tree. Each condition node reads diagnostics and each action node calls a system_modes reconfiguration service. The tree structure makes the adaptation policy explicit and easy to inspect or modify.
Launch: ros2 launch suave_bt suave_bt.launch.py
External implementations
These repositories implement a managing subsystem for SUAVE and are maintained separately.
ROSA (suave_rosa)
ROSA is a knowledge-based self-adaptation framework for ROS 2. Its knowledge base is implemented with TypeDB, a strongly-typed graph database with a native inference engine. ROSA subscribes to /diagnostics, reasons over the knowledge base to select the appropriate adaptation, and issues reconfigures the managed system directly, by-passing system_modes. The suave_rosa repository provides the ROSA managing subsystem configured for SUAVE.
Planta (suave_planta)
Planta is a PDDL-based managing subsystem. The adaptation problem is captured in an ontology based on pddl-TOMASys (a modified version of the ontology used by the Metacontrol implementation), which is then automatically translated into PDDL. PlanSys2 is used to plan, execute, and re-plan adaptations at runtime.
Adding your own
See the Extending SUAVE page for the interface requirements and launch file conventions needed to connect a new managing subsystem.