An event-driven, asynchronous, behavioral state machine library for real-time ROS applications written in C++.
SMACC is an event-driven, asynchronous, behavioral state machine library for real-time ROS (Robotic Operating System) applications written in C++. It is designed to allow programmers to build robot control applications for multicomponent robots in an intuitive and systematic manner, addressing the lack of C++ libraries for task-level behavioral state machines in ROS.
Robotics engineers and developers working on complex, multi-component robotic systems in ROS environments who need real-time performance and systematic state machine design.
Developers choose SMACC for its robust C++ implementation, compile-time validation, orthogonality support for complex robots, and seamless ROS integration, making it ideal for industrial and real-time robotic applications.
An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS (Robotic Operating System) applications written in C++
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports ROS topics, services, and actions out of the box, ensuring tight integration with the robotic operating system ecosystem for immediate use in ROS applications.
Leverages Boost Statechart for static state machine checking, reducing runtime errors and testing effort, aligning with the philosophy of letting the compiler handle validation.
Implements Harel statecharts with orthogonals, enabling intuitive coding for complex robots with multiple hardware components, such as mobile bases and arms, as highlighted in the features.
Offers a growing collection of pre-built state machines that compile and run, like sm_dance_bot, accelerating development by providing jumpstart examples for common robotic behaviors.
Includes the SMACC1 Runtime Analyzer for visualization and debugging of ROS1 state machines, free for individual and academic use, though it is closed source.
The SMACC1 Runtime Analyzer is proprietary, limiting transparency and community-driven improvements, which may hinder customization and trust in open-source environments.
Primarily supports ROS1 distributions like Melodic and Noetic per the CI table, with less emphasis on ROS2, making it less suitable for projects transitioning to newer ROS versions.
Requires deep knowledge of C++, ROS, Boost StateChart, and state machine concepts, making it challenging for beginners or teams without prior experience in these areas.
SMACC is an open-source alternative to the following products: