Bonsai - Bielefeld Sensor Actuator Interface
Bonsai is a multi layered Java (and Kotlin) framework for behavior modelling of complex systems It serves as an abstraction layer between the robots hardware and the robot behavior. With Bonsai, when deploying on another robot you should be able to only reimplement the sensor and actuator interface while the actual robot behavior is agnostic to the robot hardware and can remain unchanged.
You can read the published paper here and here
When using Bonsai, robot behavior consists of Sensors, Actuators and Skills. Sensors offer information about the outside world while Actuators are used to activate parts of the robot system. Skills use Actuators and Sensors to to a single task.
Robotic behavior can then be implemented using some kind of behavior modeling or control logic. The behavior model can be modeled e.g. using Behavior Trees or state machines. It controls which skills should be used in which sequence. Bonsai implements the SCXML Engine which is a XML-based language for describing finite state machines in the SCXML standard and executes state-based behavior.
Note
Within this documentation, we will sometimes refer the behavior model as SCXML, robot behavior code or just state machine.