Week 1 - BT Studio Fundamentals
Summary
BT Studio is a web-based IDE designed for developing robotics applications using behavior trees, which are an increasingly popular method for organizing robot behaviors in a modular fashion. This week, I familiarized myself with the installation process of the tool and tested various example applications, during which I identified and reported several bugs. I also studied some literature about behavior trees.
BT Studio Structure
BT Studio’s frontend is built using React and is divided into three main components: a file browser, a file editor, and a tree diagram editor. Users can create Python actions using the file browser and editor, utilizing the py_trees
library by Daniel Stohnier. Once the actions are defined, a behavior tree (BT) can be visually created and modified through the graphical editor using the available actions. The editor supports all flow control and decorator blocks from Davide Faconti’s BT.cpp
library, including features like ReactiveFallback
. Once an application is completed, it can be downloaded and executed within a ROS 2 environment.
The frontend interacts with BT Studio’s Django backend, known as tree_api, via a REST API. This API provides functionality such as file storage and JSON-to-XML translation for the diagrams.
My GSoC Project
During my GSoC project, I will expand BT Studio’s capabilities to support sub-trees, enhancing the tool’s modularity and overall functionality. This will involve developing new tree_api endpoints and React components to provide the necessary composition tools. Additionally, I will create a library of popular robotic behaviors (e.g., person recognition) that can be reused through the composition tools.
GitHub Backlog
Opened
- https://github.com/JdeRobot/bt-studio/issues/78
- https://github.com/JdeRobot/bt-studio/issues/135
- https://github.com/JdeRobot/bt-studio/issues/138
- https://github.com/JdeRobot/bt-studio/issues/139
- https://github.com/JdeRobot/bt-studio/issues/143
- https://github.com/JdeRobot/bt-studio/issues/155