Awesome
Py Trees
[About][Docs & Demos][Releases][Installation][PyTrees-Ros Ecosystem]
About
PyTrees is a python implementation of behaviour trees designed to facilitate the rapid development of medium sized decision making engines for use in fields like robotics. Brief feature list:
- Sequence, Selector, Parallel composites
- Blackboards for data sharing
- Python generators for smarter ticking over the tree graph
- Python decorators for enabling meta behaviours
- Render trees to dot graphs or visualise with ascii graphs on stdout
Documentation
Getting Started
VSCode and a py38 DevContainer on CodeSpaces will set you up with an environment for running demos, tests and/or creating PRs in less than five minutes. If you're just looking for releases, fetch them from PyPi.
- Fork the project to your personal account
- Click on Code -> Codespaces -> + Create a Codespace
- Be froody
(docker) zen@py_trees:/workspaces/py_trees$ poetry install
(docker) zen@py_trees:/workspaces/py_trees$ poetry shell
(py-trees-py3.8) (docker) zen@py_trees:/workspaces/py_trees$ py-trees-demo-<tab>-<tab>
py-trees-demo-action-behaviour py-trees-demo-context-switching py-trees-demo-logging
py-trees-demo-behaviour-lifecycle py-trees-demo-display-modes py-trees-demo-pick-up-where-you-left-off
py-trees-demo-blackboard py-trees-demo-dot-graphs py-trees-demo-selector
py-trees-demo-blackboard-namespaces py-trees-demo-either-or py-trees-demo-sequence
py-trees-demo-blackboard-remappings py-trees-demo-eternal-guard py-trees-demo-tree-stewardship
(py-trees-py3.8) (docker) zen@py_trees:/workspaces/py_trees$ py-trees-demo-blackboard
*******************************************************************************
Blackboard
*******************************************************************************
Demonstrates usage of the blackboard and related behaviours.
A sequence is populated with a few behaviours that exercise
reading and writing on the Blackboard in interesting ways.
*******************************************************************************
[DEBUG] Writer : BlackboardWriter.__init__()
...
...
If you're really looking for something more edifying than hello world examples, walk through the ros tutorials which incrementally step through the process of building a scenario handling layer for a robot.
There are also runtime visualisation tools - refer to the py_trees_ros_viewer/README as an example implementation of the underlying py_trees_js library.
Releases
0.y.x
- first open source releases1.0.x
- first stable release1.1.x
- improvements1.2.x
- improvements2.0.x
- blackboards v2 with namespaces, access permissions and key tracking2.1.x
- Chooser deprecated, api housekeeping
Devel | 2.1.x | 2.0.x | 1.2.x | 0.7.x | 0.6.x | |
---|---|---|---|---|---|---|
Sources | ||||||
Compatibility | ||||||
CI | ||||||
Documentation |
Installation
From ppa on Ubuntu/Bionic:
$ sudo apt install python3-py-trees
From pypi:
$ pip3 install py_trees
In a Python Virtual Environment:
$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./venv.bash
Build your own python3 deb:
$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./venv.bash
$ make deb
From the ROS2 ecosystem:
$ sudo apt install ros-<rosdistro>-py-trees
PyTrees-ROS Ecosystem
See the py_trees_ros
README for the latest information on pytrees packages in the ROS ecosystem and their status.
Developers
Documentation
# Build Locally
$ make -C docs html
# ReadTheDocs requirements
$ poetry export -f requirements.txt --with docs -o docs/requirements.txt