YASMIN Factory

YASMIN Factory provides a powerful framework for creating state machines from XML definitions. It enables declarative state machine construction by parsing XML files and dynamically instantiating states from both Python and C++ implementations.

Key Features:

  • XML-Based Definition: Define entire state machines including nested hierarchies in XML format
  • Multi-Language Support: Integrate Python and C++ states in the same state machine
  • Plugin Architecture: Dynamic loading of C++ states via pluginlib and Python states via importlib
  • Hierarchical Composition: Support for nested State Machines and Concurrence states

Usage Example

The YASMIN Factory node provides a convenient way to execute state machines directly from XML files without writing any additional code. This is particularly useful for:

  • Rapid testing: Quickly test state machine definitions without compilation
  • Configuration-based deployment: Deploy different behaviors by simply changing XML files
  • Non-programmer friendly: Allow team members to modify robot behaviors without coding
  • Version control: Track state machine changes through XML file versioning

You can launch a state machine defined in an XML file using the yasmin_factory_node:

ros2 run yasmin_factory yasmin_factory_node --ros-args -p state_machine_file:=/path/to/file.xml