You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This __C++ 14__ library provides a framework to create BehaviorTrees.
13
+
This __C++ 17__ library provides a framework to create BehaviorTrees.
14
14
It was designed to be flexible, easy to use, reactive and fast.
15
15
16
16
Even if our main use-case is __robotics__, you can use this library to build
17
-
__AI for games__, or to replace Finite State Machines in your application.
17
+
__AI for games__, or to replace Finite State Machines.
18
18
19
19
There are few features that make __BehaviorTree.CPP__ unique, when compared to other implementations:
20
20
21
21
- It makes __asynchronous Actions__, i.e. non-blocking, a first-class citizen.
22
22
23
23
- You can build __reactive__ behaviors that execute multiple Actions concurrently.
24
24
25
-
- Trees are defined using a Domain Specific Scripting __scripting language__ (based on XML), and can be loaded at run-time; in other words, even if written in C++, Trees are_not_ hard-coded.
25
+
- Trees are defined using a Domain Specific __scripting language__ (based on XML), and can be loaded at run-time; in other words, even if written in C++, the morphology of the Trees is_not_ hard-coded.
26
26
27
27
- You can statically link your custom TreeNodes or convert them into __plugins__
28
-
which can be loaded at run-time.
28
+
and load them at run-time.
29
29
30
30
- It provides a type-safe and flexible mechanism to do __Dataflow__ between
31
31
Nodes of the Tree.
32
32
33
33
- It includes a __logging/profiling__ infrastructure that allows the user
34
34
to visualize, record, replay and analyze state transitions.
35
35
36
-
- Last but not least: it is well [documented](https://www.behaviortree.dev/)!
37
-
38
36
## Documentation
39
37
40
38
You can learn about the main concepts, the API and the tutorials here: https://www.behaviortree.dev/
41
39
42
-
To find more details about the conceptual ideas that make this implementation different from others,
43
-
you can read the [final deliverable of the project MOOD2Be](https://github.com/BehaviorTree/BehaviorTree.CPP/blob/master/MOOD2Be_final_report.pdf).
44
40
45
41
## Forum and Community
46
42
@@ -64,15 +60,9 @@ In practice, this means that:
64
60
You should be able to implement them once and reuse them to build many behaviors.
65
61
66
62
- To build a Behavior Tree out of TreeNodes, the Behavior Designer must
67
-
not need to read nor modify the C++ source code of a given TreeNode.
68
-
69
-
- Complex Behaviours must be composable using Subtrees
70
-
71
-
Many of the features and, sometimes, the apparent limitations of this library, might be a consequence
72
-
of this design principle.
63
+
not need to read nor to modify the C++ source code..
73
64
74
-
For instance, having a scoped BlackBoard, visible only in a portion of the tree, is particularly important
75
-
to avoid "name pollution" and allow the creation of large scale trees.
65
+
- Complex Behaviours must be composable using Subtrees.
76
66
77
67
# GUI Editor
78
68
@@ -83,13 +73,6 @@ If you are looking for a more fancy graphical user interface (and I know you do)
83
73
84
74

85
75
86
-
## Watch Groot and BehaviorTree.CPP in action
87
-
88
-
Click on the following image to see a short video of how the C++ library and
89
-
the graphic user interface are used to design and monitor a Behavior Tree.
If you want to compile it with catkin, you __must__ include this package
131
-
to your catkin workspace.
132
-
133
-
# Acknowledgement
134
-
135
-
This library was initially developed at **Eurecat - https://eurecat.org/en/** (main author, Davide Faconti) in a joint effort
136
-
with the **Italian Institute of Technology** (Michele Colledanchise).
137
-
138
-
This software is one of the main components of [MOOD2Be](https://eurecat.org/en/portfolio-items/mood2be/),
139
-
which is one of the six **Integrated Technical Projects (ITPs)** selected from the
140
-
[RobMoSys first open call](https://robmosys.eu/itp/). Therefore, MOOD2Be has been supported by the European Horizon2020 project RobMoSys. This software is RobMoSys conformant.
- Introductory article: [Behavior trees for AI: How they work](http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php)
147
-
148
-
-**How Behavior Trees Modularize Hybrid Control Systems and Generalize
149
-
Sequential Behavior Compositions, the Subsumption Architecture,
150
-
and Decision Trees.**
151
-
Michele Colledanchise and Petter Ogren. IEEE Transaction on Robotics 2017.
152
-
153
-
-**Behavior Trees in Robotics and AI**,
154
-
published by CRC Press Taylor & Francis, available for purchase
155
-
(ebook and hardcover) on the CRC Press Store or Amazon.
156
-
157
-
The Preprint version (free) is available here: https://arxiv.org/abs/1709.00084
0 commit comments