The BehaviorTreeFactory is used to create instances of a TreeNode at run-time. More...
#include <bt_factory.h>
Public Member Functions | |
BehaviorTreeFactory () | |
const std::unordered_map < std::string, NodeBuilder > & | builders () const |
All the builders. Made available mostly for debug purposes. | |
const std::set< std::string > & | builtinNodes () const |
List of builtin IDs. | |
Tree | createTreeFromFile (const std::string &file_path, Blackboard::Ptr blackboard=Blackboard::create()) |
Tree | createTreeFromText (const std::string &text, Blackboard::Ptr blackboard=Blackboard::create()) |
std::unique_ptr< TreeNode > | instantiateTreeNode (const std::string &name, const std::string &ID, const NodeConfiguration &config) const |
instantiateTreeNode creates an instance of a previously registered TreeNode. | |
const std::unordered_map < std::string, TreeNodeManifest > & | manifests () const |
Manifests of all the registered TreeNodes. | |
void | registerBuilder (const TreeNodeManifest &manifest, const NodeBuilder &builder) |
The most generic way to register your own builder. | |
template<typename T > | |
void | registerBuilder (const std::string &ID, const NodeBuilder &builder) |
void | registerFromPlugin (const std::string &file_path) |
registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro). | |
template<typename T > | |
void | registerNodeType (const std::string &ID) |
void | registerSimpleAction (const std::string &ID, const SimpleActionNode::TickFunctor &tick_functor, PortsList ports={}) |
registerSimpleAction help you register nodes of type SimpleActionNode. | |
void | registerSimpleCondition (const std::string &ID, const SimpleConditionNode::TickFunctor &tick_functor, PortsList ports={}) |
registerSimpleCondition help you register nodes of type SimpleConditionNode. | |
void | registerSimpleDecorator (const std::string &ID, const SimpleDecoratorNode::TickFunctor &tick_functor, PortsList ports={}) |
registerSimpleDecorator help you register nodes of type SimpleDecoratorNode. | |
bool | unregisterBuilder (const std::string &ID) |
Remove a registered ID. | |
Static Public Member Functions | |
template<typename T > | |
static TreeNodeManifest | buildManifest (const std::string &ID) |
Private Member Functions | |
template<typename T > | |
void | registerNodeTypeImpl (const std::string &ID) |
Static Private Member Functions | |
template<typename T > | |
static NodeBuilder | getBuilder (typename std::enable_if< has_default_constructor< T >::value &&has_params_constructor< T >::value >::type *=nullptr) |
template<typename T > | |
static NodeBuilder | getBuilder (typename std::enable_if<!has_default_constructor< T >::value &&has_params_constructor< T >::value >::type *=nullptr) |
template<typename T > | |
static NodeBuilder | getBuilder (typename std::enable_if< has_default_constructor< T >::value &&!has_params_constructor< T >::value >::type *=nullptr) |
Private Attributes | |
std::unordered_map < std::string, NodeBuilder > | builders_ |
std::set< std::string > | builtin_IDs_ |
std::unordered_map < std::string, TreeNodeManifest > | manifests_ |
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Some node types are "builtin", whilst other are used defined and need to be registered using a unique ID.
Definition at line 98 of file bt_factory.h.
Definition at line 19 of file bt_factory.cpp.
const std::unordered_map< std::string, NodeBuilder > & BT::BehaviorTreeFactory::builders | ( | ) | const |
All the builders. Made available mostly for debug purposes.
Definition at line 155 of file bt_factory.cpp.
static TreeNodeManifest BT::BehaviorTreeFactory::buildManifest | ( | const std::string & | ID | ) | [inline, static] |
Definition at line 226 of file bt_factory.h.
const std::set< std::string > & BT::BehaviorTreeFactory::builtinNodes | ( | ) | const |
List of builtin IDs.
Definition at line 165 of file bt_factory.cpp.
Tree BT::BehaviorTreeFactory::createTreeFromFile | ( | const std::string & | file_path, |
Blackboard::Ptr | blackboard = Blackboard::create() |
||
) |
Definition at line 180 of file bt_factory.cpp.
Tree BT::BehaviorTreeFactory::createTreeFromText | ( | const std::string & | text, |
Blackboard::Ptr | blackboard = Blackboard::create() |
||
) |
Definition at line 170 of file bt_factory.cpp.
static NodeBuilder BT::BehaviorTreeFactory::getBuilder | ( | typename std::enable_if< has_default_constructor< T >::value &&has_params_constructor< T >::value >::type * | = nullptr | ) | [inline, static, private] |
Definition at line 253 of file bt_factory.h.
static NodeBuilder BT::BehaviorTreeFactory::getBuilder | ( | typename std::enable_if<!has_default_constructor< T >::value &&has_params_constructor< T >::value >::type * | = nullptr | ) | [inline, static, private] |
Definition at line 272 of file bt_factory.h.
static NodeBuilder BT::BehaviorTreeFactory::getBuilder | ( | typename std::enable_if< has_default_constructor< T >::value &&!has_params_constructor< T >::value >::type * | = nullptr | ) | [inline, static, private] |
Definition at line 282 of file bt_factory.h.
std::unique_ptr< TreeNode > BT::BehaviorTreeFactory::instantiateTreeNode | ( | const std::string & | name, |
const std::string & | ID, | ||
const NodeConfiguration & | config | ||
) | const |
instantiateTreeNode creates an instance of a previously registered TreeNode.
name | name of this particular instance |
ID | ID used when it was registered |
config | configuration that is passed to the constructor of the TreeNode. |
Definition at line 134 of file bt_factory.cpp.
const std::unordered_map< std::string, TreeNodeManifest > & BT::BehaviorTreeFactory::manifests | ( | ) | const |
Manifests of all the registered TreeNodes.
Definition at line 160 of file bt_factory.cpp.
void BT::BehaviorTreeFactory::registerBuilder | ( | const TreeNodeManifest & | manifest, |
const NodeBuilder & | builder | ||
) |
The most generic way to register your own builder.
Definition at line 68 of file bt_factory.cpp.
void BT::BehaviorTreeFactory::registerBuilder | ( | const std::string & | ID, |
const NodeBuilder & | builder | ||
) | [inline] |
Definition at line 110 of file bt_factory.h.
void BT::BehaviorTreeFactory::registerFromPlugin | ( | const std::string & | file_path | ) |
registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro).
file_path | path of the file |
Definition at line 116 of file bt_factory.cpp.
void BT::BehaviorTreeFactory::registerNodeType | ( | const std::string & | ID | ) | [inline] |
registerNodeType is the method to use to register your custom TreeNode.
It accepts only classed derived from either ActionNodeBase, DecoratorNode, ControlNode or ConditionNode.
Definition at line 174 of file bt_factory.h.
void BT::BehaviorTreeFactory::registerNodeTypeImpl | ( | const std::string & | ID | ) | [inline, private] |
Definition at line 246 of file bt_factory.h.
void BT::BehaviorTreeFactory::registerSimpleAction | ( | const std::string & | ID, |
const SimpleActionNode::TickFunctor & | tick_functor | ||
) |
registerSimpleAction help you register nodes of type SimpleActionNode.
ID | registration ID |
tick_functor | the callback to be invoked in the tick() method. |
ports | if your SimpleNode requires ports, provide the list here. |
Definition at line 92 of file bt_factory.cpp.
void BT::BehaviorTreeFactory::registerSimpleCondition | ( | const std::string & | ID, |
const SimpleConditionNode::TickFunctor & | tick_functor | ||
) |
registerSimpleCondition help you register nodes of type SimpleConditionNode.
ID | registration ID |
tick_functor | the callback to be invoked in the tick() method. |
ports | if your SimpleNode requires ports, provide the list here. |
Definition at line 80 of file bt_factory.cpp.
void BT::BehaviorTreeFactory::registerSimpleDecorator | ( | const std::string & | ID, |
const SimpleDecoratorNode::TickFunctor & | tick_functor | ||
) |
registerSimpleDecorator help you register nodes of type SimpleDecoratorNode.
ID | registration ID |
tick_functor | the callback to be invoked in the tick() method. |
ports | if your SimpleNode requires ports, provide the list here. |
Definition at line 104 of file bt_factory.cpp.
bool BT::BehaviorTreeFactory::unregisterBuilder | ( | const std::string & | ID | ) |
Remove a registered ID.
Definition at line 52 of file bt_factory.cpp.
std::unordered_map<std::string, NodeBuilder> BT::BehaviorTreeFactory::builders_ [private] |
Definition at line 232 of file bt_factory.h.
std::set<std::string> BT::BehaviorTreeFactory::builtin_IDs_ [private] |
Definition at line 234 of file bt_factory.h.
std::unordered_map<std::string, TreeNodeManifest> BT::BehaviorTreeFactory::manifests_ [private] |
Definition at line 233 of file bt_factory.h.