Navigation State Machine Library - umrover/mrover-ros GitHub Wiki

After using Smach as the library for defining and running our navigation state machine last year, a number of issues with smach motivated the ideation and implementation of a new state machine library built specifically to address Smach's shortcomings with a focus on reducing potential runtime errors and cleaning up cluttered code.

Problems in Smach

Separation of transitions and states

Representation of transitions and states with strings

Persistent State Objects

No direct control over entry and exit behavior

Feature bloat

Key Design Points of the new library

States return the next state as an object (no strings)

States are not persistent

onEnter(), onLoop(), onExit() interface

How it works

How to use it

Create a State

Create a State Machine

Run the State Machine

Introspection Messages

Log Level