Uploaded by Xilun Song

BehaviorTree BehaviorTree.CPP Behavior Trees Library in C++. Batteries included

advertisement
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
BehaviorTree / BehaviorTree.CPP
Code
Issues
40
Pull requests
Public
5
Actions
master
Projects
Go to file
Security
Add file
Insights
Code
About
Behavior Trees Library in C++.
facontidavide Merge branch 'master' of github.com:BehaviorTree/Be…
…
17 days ago
908
.github
remove variables that depend on CMAKE_BINARY_D…
last month
3rdparty
add zmq.hpp in 3rdparty dirfectory
cmake
revisit export (#379)
docs
Small comments on node registration (#399)
last month
examples
Small comments on node registration (#399)
last month
include/behaviortree_cpp…
improve writeTreeNodesModelXML
sample_nodes
Event based trigger introduced
src
Merge branch 'master' of github.com:BehaviorTree/Be…
17 days ago
tests
remove variables that depend on CMAKE_BINARY_D…
last month
tools
[Fix] Fix cmake version warning and -Wformat warnin…
16 months ago
2 months ago
Batteries included.
www.behaviortree.dev
# games # ai # state-machine # robotics
# coordination # ros # behaviortree
Readme
MIT license
17 days ago
2 months ago
6 months ago
1.4k stars
59 watching
395 forks
Releases
6
Lot of interesting stuff
Latest
on May 23
.DS_Store
Fixed some typos in the documentation
3 years ago
.clang-format
run clangformat
4 years ago
.gitignore
doc fix
https://github.com/BehaviorTree/BehaviorTree.CPP
+ 5 releases
6 months ago
1/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
CHANGELOG.rst
manual version bump
2 months ago
CMakeLists.txt
add option to conditionally build manual selector node…
Doxyfile
big change: support plugins loading
4 years ago
LICENSE
Update LICENSE
5 years ago
MOOD2Be_final_report.pdf
Add files via upload
3 years ago
README.md
Update README.md
contributors.txt
cleanups
mkdocs.yml
correct docs
2 months ago
netlify.toml
auto-doc
2 months ago
package.xml
manual version bump
2 months ago
run_clang_format.sh
Adding clang format
runtime.txt
add netlify stuff
last month
last month
4 years ago
Sponsor this project
facontidavide Davide F…
https://www.paypal.me/facontida…
Learn more about GitHub Sponsors
Packages
No packages published
Contributors
74
4 years ago
2 months ago
+ 63 contributors
Environments
license MIT
version 3.7
cmake passing
ros1 passing
ros2 passing
code quality: c/c++ A+
github-pages
1
Active
discourse 16 topics
BehaviorTree.CPP
Languages
C++ 98.3%
https://github.com/BehaviorTree/BehaviorTree.CPP
CMake 1.7%
2/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
This C++ 14 library provides a framework to create BehaviorTrees. It was designed to be
flexible, easy to use, reactive and fast.
Even if our main use-case is robotics, you can use this library to build AI for games, or to
replace Finite State Machines in your application.
There are few features that make BehaviorTree.CPP unique, when compared to other
implementations:
It makes asynchronous Actions, i.e. non-blocking, a first-class citizen.
You can build reactive behaviors that execute multiple Actions concurrently.
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.
You can statically link your custom TreeNodes or convert them into plugins which can
be loaded at run-time.
https://github.com/BehaviorTree/BehaviorTree.CPP
3/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
It provides a type-safe and flexible mechanism to do Dataflow between Nodes of the
Tree.
It includes a logging/profiling infrastructure that allows the user to visualize, record,
replay and analyze state transitions.
Last but not least: it is well documented!
Documentation
You can learn about the main concepts, the API and the tutorials here:
https://www.behaviortree.dev/
To find more details about the conceptual ideas that make this implementation different from
others, you can read the final deliverable of the project MOOD2Be.
Forum and Community
If the documentation doesn't answer your questions and/or you want to connect with the
other BT.CPP users, visit https://discourse.behaviortree.dev/
Commercial support
Are you using BT.CPP in your commercial product and you need technical support /
consulting? You can get in touch at dfaconti@aurynrobotics.com and we will happy to
discuss your use case and needs.
Design principles
https://github.com/BehaviorTree/BehaviorTree.CPP
4/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
The main goal of this project is to create a Behavior Tree implementation that uses the
principles of Model Driven Development to separate the role of the Component Developer
from the Behavior Designer.
In practice, this means that:
Custom TreeNodes must be reusable building blocks. You should be able to implement
them once and reuse them to build many behaviors.
To build a Behavior Tree out of TreeNodes, the Behavior Designer must not need to read
nor modify the C++ source code of a given TreeNode.
Complex Behaviours must be composable using Subtrees
Many of the features and, sometimes, the apparent limitations of this library, might be a
consequence of this design principle.
For instance, having a scoped BlackBoard, visible only in a portion of the tree, is particularly
important to avoid "name pollution" and allow the creation of large scale trees.
GUI Editor
Editing a BehaviorTree is as simple as editing a XML file in your favourite text editor.
If you are looking for a more fancy graphical user interface (and I know you do) check Groot
out.
https://github.com/BehaviorTree/BehaviorTree.CPP
5/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
Watch Groot and BehaviorTree.CPP in action
Click on the following image to see a short video of how the C++ library and the graphic user
interface are used to design and monitor a Behavior Tree.
https://github.com/BehaviorTree/BehaviorTree.CPP
6/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
How to compile (plain old cmake)
On Ubuntu, you are encourage to install the following dependencies:
sudo apt-get install libzmq3-dev libboost-dev
Other dependencies are already included in the 3rdparty folder.
To compile and install the library, from the BehaviorTree.CPP folder, execute:
https://github.com/BehaviorTree/BehaviorTree.CPP
7/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
mkdir build; cd build
cmake ..
make
sudo make install
If you want to use BT.CPp in your application a typical CMakeLists.txt file will look like this:
cmake_minimum_required(VERSION 3.5)
project(hello_BT)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(BehaviorTreeV3)
add_executable(${PROJECT_NAME} "hello_BT.cpp")
target_link_libraries(${PROJECT_NAME} BT::behaviortree_cpp_v3)
ROS1 or ROS2 users (Catkin/Ament)
You can easily install the package with the command
sudo apt-get install ros-$ROS_DISTRO-behaviortree-cpp-v3
If you want to compile it with catkin, you must include this package to your catkin workspace.
Acknowledgement
https://github.com/BehaviorTree/BehaviorTree.CPP
8/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
This library was initially developed at Eurecat - https://eurecat.org/en/ (main author, Davide
Faconti) in a joint effort with the Italian Institute of Technology (Michele Colledanchise).
This software is one of the main components of MOOD2Be, which is one of the six
Integrated Technical Projects (ITPs) selected from the RobMoSys first open call.
Therefore, MOOD2Be has been supported by the European Horizon2020 project RobMoSys.
This software is RobMoSys conformant.
README.md
Further readings
Introductory article: Behavior trees for AI: How they work
How Behavior Trees Modularize Hybrid Control Systems and Generalize
Sequential Behavior Compositions, the Subsumption Architecture, and Decision
Trees. Michele Colledanchise and Petter Ogren. IEEE Transaction on Robotics 2017.
Behavior Trees in Robotics and AI, published by CRC Press Taylor & Francis,
available for purchase (ebook and hardcover) on the CRC Press Store or Amazon.
https://github.com/BehaviorTree/BehaviorTree.CPP
9/10
7/21/22, 2:46 PM
BehaviorTree/BehaviorTree.CPP: Behavior Trees Library in C++. Batteries included.
The Preprint version (free) is available here: https://arxiv.org/abs/1709.00084
License
The MIT License (MIT)
Copyright (c) 2014-2018 Michele Colledanchise Copyright (c) 2018-2021 Davide Faconti
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
https://github.com/BehaviorTree/BehaviorTree.CPP
10/10
Download