Packages Overview
The YASMIN project is organized into several packages, each serving a specific purpose. The packages are divided into three main categories:
Core
The core packages provide the fundamental building blocks for creating state machines and integrating with ROS 2.
yasmin
The core library containing the base classes for State, StateMachine, Blackboard, and other fundamental components. It provides the logic for FSM execution independent of ROS 2.
yasmin_ros
Provides ROS 2 specific implementations and integrations. It includes specialized states for:
- ActionState: For interacting with ROS 2 Actions.
- ServiceState: For calling ROS 2 Services.
- PublisherState: For publishing to ROS 2 Topics.
- MonitorState: For subscribing and monitoring ROS 2 Topics.
- GetParametersState: For reading ROS 2 parameters into the blackboard at runtime.
- TfBufferState: Creates a shared tf2 buffer and transform listener and stores them in the blackboard so that subsequent states can perform transform lookups without duplicating listener infrastructure.
- RosSerializeCppState / RosDeserializeCppState: C++ states that serialize and deserialize ROS 2 interface instances to and from raw byte arrays, enabling cross-language data exchange through the blackboard.
-
RosSerializePyState / RosDeserializePyState:
Python equivalents of the serialization states, using
rclpy.serializationand supporting any installed ROS 2 interface type.
yasmin_msgs
Contains the ROS 2 message definitions used by YASMIN for communication and visualization.
Tools
The tools packages provide utilities for visualization, design, and XML-based configuration of state machines.
yasmin_viewer
A web-based visualization tool that allows you to monitor the state of your FSM in real-time. It subscribes to the FSM status topics and displays the active state and transitions.
yasmin_factory
Enables the creation of State Machines from XML configuration files. This allows for separating the FSM structure definition from the code logic.
yasmin_editor
A graphical editor for designing YASMIN state machines. It allows you
to visually create states, transitions, and export them to XML for use
with yasmin_factory.
yasmin_cli
A command-line interface for managing YASMIN state machines defined in XML files. Provides commands to list, inspect, validate, run, test, and edit state machines. Integrates with the factory plugin system.
yasmin_pcl
Predefined states for Point Cloud Library (PCL) operations, including filtering (voxel grid, pass-through, crop box, outlier removal), segmentation, and point cloud I/O (PCD/PLY file read/write, ROS PointCloud2 conversion).
yasmin_plugins_manager
Scans installed ROS 2 packages to discover YASMIN state plugins
registered via pluginlib. Collects plugin metadata from
plugins.xml manifests for use by the Factory and CLI
tools.
Demos
Example packages that demonstrate how to use YASMIN features in real-world scenarios.
yasmin_demos
Contains a collection of examples and demos showcasing various features of YASMIN in both C++ and Python. This is a great place to start learning by example.
YASMIN