State machine library for intelligent FRC robot control.
demo.mp4
(Above: the state machine, visualized in shrinkwrap, automatically scoring coral)
The state machine is a control paradigm that sits on top of existing commands and subsystems. It allows for complex behaviors to be expressed in a way that is easy to understand and maintain.
It is made up of 2 main components:
- States: The individual states that the robot can be in. Each state has its own set of commands and triggers associated with it that run only while the robot is in that state. States can also have children.
- Transitions: The conditions that cause the robot to move from one state to another. These can be based on time, sensor input, or more complex logic.
The currently active state must be a "leaf" state, that is, one that has no children. If you attempt to transition directly to a parent state, it will recursively use entrance conditions and transitions to determine which leaf state to activate.
Add the folowing to the repositories section of your build.gradle:
maven {
url = uri("https://maven.pkg.github.com/nab138/Oxidation")
credentials {
username = "3044-Packages-Bot"
password = "\u0067\u0068\u0070\u005f\u0038\u0055\u0068\u0037\u0061\u004f\u0062\u0049\u004a\u0041\u005a\u0045\u0059\u0073\u0041\u0055\u0033\u0063\u0041\u0037\u004f\u0065\u0070\u0037\u0053\u0074\u0073\u0058\u0058\u0059\u0031\u004e\u006e\u0056\u0030\u004a"
}
}Then add this line to the dependencies section:
implementation 'me.nabdev.oxidation:oxidation:0.0.0'- See FRC Team 3044's 2025 Robot Code for a complete example