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:

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.