It's a library to adapt the [behaviortree](https://github.com/BehaviorTree/BehaviorTree.CPP) library to the use
of [IRI modules](https://gitlab.iri.upc.edu/labrobotica/ros/iri_core/iri_ros_tools).
This library is intendend to expand the [behaviortree](https://github.com/BehaviorTree/BehaviorTree.CPP) library to provide the following new features:
* It provides a way to implement an Asynchronous Action throught a callback function instead of having to create an inherited class.
It provides the possibility of creating asynchronous actions without the need of creating a class. Its *tick*
function is called from the main thread. There isn't implemented any *halt* function.
This is acomplished with the definition of the new class **IriAsyncActionNode**. This class is exactly the same that **SimpleActionNode** provided by the original library but with the possibility of returning the *RUNNING* state. Another difference with the original Asynchronous action is that no *halt* function can be implemented.
* It provides a way to register this new Asynchronous actions.
This is acomplished with the definition of the new class **IriBehaviorTreeFactory**. This class jus implements the *registerIriAsyncAction* function to register any *IriAsyncActionNode* in the same way a *SimpleActionNode* would be registered using *registerSimpleAction*.
* It also provides a set of basic BehaviorTree nodes (BT nodes) and the function to register them.
This is acomplished with the definition of a new class **IriBehaviorTreeBasicNodes** that implements this basic BT nodes and provides a function called *init* to register these BT nodes.
These new features allow us to adapt the use of BehaviorTrees to the IRI framework and to add a BehaviorTree wrapper for the [IRI modules](https://gitlab.iri.upc.edu/labrobotica/ros/iri_core/iri_ros_tools#iri-ros-modules).
Additionally, it provides some basic common BT nodes.