splintered-reality/py_trees

Python implementation of behaviour trees.

What it solves

PyTrees simplifies the creation of medium-sized decision-making engines, particularly for robotics, by providing a structured way to organize complex behaviors into manageable trees.

How it works

It implements behavior trees, allowing developers to build logic using a variety of components:

  • Core Components: Uses Behaviours, Decorators, Sequences, Selectors, and Parallels to define logic flow.
  • Data Management: Employs Blackboards for sharing data across different parts of the tree.
  • Declarative Definitions: Supports an XML parser and a ports API for defining behaviors through configuration rather than just code.
  • Visualization: Can render trees as ASCII/Unicode in the terminal or serialize them into dot graphs for visual analysis.

Who it’s for

It is designed for developers building decision-making layers for robots or other systems requiring structured, hierarchical control logic.

Highlights

  • Comprehensive library of built-in behaviors, decorators, and idioms.
  • Support for typed input/output ports.
  • Ability to define behavior trees via XML.
  • Integration options for ROS 2 via companion libraries.

Related

  • Project
  • Project
  • Project
  • Project
  • Project