This repository contains behavior trees for executing:
- Generalist humanoid navigation
- Robotic elevator riding
Behavior Trees allow implementing complex task logic in an intuitive and interactable environment. They are extensively used in robotics.
BehaviorTree.CPP is tightly integrated with ROS and especially used in the Nav2 Project. We will be using the same here.
Read about behavior trees in contect of robotics here:
BehaviorTree.CPP is C++ library for developing and integrating BTs. Architecture of the BT is stored in an .xml which is loaded at runtime. Individual tasks would be implemented as "Actions" or "Services".
BehaviorTree.CPP is frequently used in robotics and in the ROS ecosystem. BehaviorTree.ROS2 is a ready-to-use set of wrappers, which can be used to quickly implement TreeNodes that interact with ROS2.
The repository can be cloned as a ROS2 Jazzy package and also includes scripts to test BTs outside the ROS environment.
- Clone this repo in the
srcdirectory of your workspace.git clone https://github.com/VectorRobotics/humanoid_bt.git
- Clone the BehaviorTree.ROS2 repo in the
srcdirectory of your workspace.git clone https://github.com/BehaviorTree/BehaviorTree.ROS2.git
- Build
cd .. sudo apt update rosdep update rosdep install --from-path src -i colcon build source install/setup.bash
Run
./build/humanoid_bt/test_bt All nodes in the test BT run async. You can inject Success (s), Running (r) or Failure (f) states in the node currently running.
TODO
Behavior Trees can be very intutively developed using Groot2. Download the application from their website.
Open the .btproj file in trees folder. Groot2 can directly export the .xml file. Learn more here.

