A lightweight and resource-optimized version of the BehaviorTree.CPP library, tailored for environments with restricted resources and where threading is not available. This streamlined version ensures efficient behavior tree execution with a reduced footprint, making it ideal for embedded systems and other constrained environments.
A tree can be created using xml files generated by Groot.
BehaviorTree.CPP | micro_behaviortree_cpp | |
---|---|---|
Node type | ActionNode ConditionNode ControlNode DecoratorNode SubTree |
ActionNode ConditionNode ControlNode DecoratorNode SubTree |
Blackboard | Use separate blackboards for each tier, upper tier blackboards can be shared by configuration |
Use one blackboard for the entire BehaviorTree |
Port type | InputPort OutputPort BidirectionalPort |
No distinction is made for port input/output direction. |
Port declaration | Define and give the providedPorts() function | Not defined in class |
Behavior for ineligible trees | throw an exception | return NodeStatus::FAILURE |
- AlwaysFailure
- AlwaysSuccess
- SetBlackboard
- Fallback
- IfThenElse
- Parallel
- ReactiveFallback
- ReactiveSequence
- Sequence
- SequenceStar
- Switch2
- Switch3
- Switch4
- Switch5
- Switch6
- WhileDoElse
- BlackboardCheckBool
- BlackboardCheckInt
- BlackboardCheckDouble
- BlackboardCheckString
- ForceFailure
- ForceSuccess
- Inverter
- KeepRunningUntilFailure
- Repeat
- RetryUntilSuccessful
- ManualSelector
- Delay
- Timeout
The following macros can be defined to limit functionality and reduce build size.
Disable building behavior trees in XML
Disable building behavior trees with dynamic types
If you enable this macro MBT_DONT_USE_XML will also be enabled