User Tools

Site Tools



BehaviorTree.CPP is a C++ framework to design, execute, monitor and log robotics behaviors, using Behavior Trees.

Authors Davide Faconti, Eurecat
License MIT


Hierarchical Finite State Machines are often used to design the behaviors of a robot. The purpose of this abstraction is to have a better Separation of Concern (Computation vs Coordination) and Separation of Roles (Component Developer vs Behavior Developer). This library provides an alternative to HFSM based on BehaviorTrees. Unlike most of the other implementations which use scripting languages such as Lua or Python, this library is implemented in C++. Nevertheless, behaviors can be modified and loaded at run-time without the need for recompiling the user’s application. The framework provides multiple tools to help the user design, compose and debug robots behaviors.


BehviorTree.CPP provides multiple tools to help the user design, compose and debug robots behaviors to the Behavior Developer. State transitions can be recorded on file or be published in real-time to allow tools such as Groot to visualize them in a human friendly way.

Relation to other RobMoSys Tools

The BT.CPP library is completely Middleware independent. In the context of RobMosys, it was demonstrated how a generic execution engine can load a specific plugin which is meant to interact with the SmartMDSD Toolchain.

This plugins contains the interface with software components or the more abstract concept of “skills”. In other words, reading the file manifest containing the available skills, the engine can register the corresponding Actions programmatically at run-time, freeing up the user from both manual code writing and the need for code generation.

Further Resources

baseline:environment_tools:behaviortree.cpp · Last modified: 2019/05/20 10:49