[About] [What's New?] [Documentation] [Getting Started] [Next Steps] [Releases]
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:
- Behaviours, Decorators, Sequences, Selectors, Parallels and BehaviourTree.
- Blackboards for data sharing.
- A useful library of behaviours, decorators and idioms.
- Serialise to a dot graph or render to ascii/unicode in a terminal.
- Tested on Linux and Mac (YMMV with Windows).
- [2023-01-28] The 2.2.x Release is out! Sequences and Selectors with AND without memory.
- [2023-01-28] Get Started with py_trees in under 5mins.
- [2023-01-28] This is now a
poetry
project with configuration governed bypyproject.toml
.- The vestigial
setup.py
is only to assist distribution where PEP-517 is not yet well supported.
- The vestigial
You can get started on CodeSpaces (with no mismatched environment issues and in under 5mins) [1]:
- Fork the project to your personal account
- Click on Code -> Codespaces -> + Create a Codespace
- Enter the Terminal
# Install Dependencies
(docker) zen@py_trees:/workspaces/py_trees$ poetry install
# Explore the demos
(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
...
(py-trees-py3.8) (docker) zen@py_trees:/workspaces/py_trees$ exit
# Hack some Code
# Run the Formatter, Tests, Linters and Mypy
(docker) zen@py_trees:/workspaces/py_trees$ poetry run tox -l
py38 py310 format check mypy38 mypy310
(docker) zen@py_trees:/workspaces/py_trees$ poetry run tox -e format
...
(docker) zen@py_trees:/workspaces/py_trees$ poetry run tox -e py38
...
(docker) zen@py_trees:/workspaces/py_trees$ poetry run tox -e check
...
# Contribute a PR!
# https://github.com/splintered-reality/py_trees/blob/devel/CONTRIBUTING.md
[1] All of the above will, of course, work in a local environment if you have poetry
installed. If you're using VSCode
you don't even need that, just reopen the project in the devcontainer and be froody.
On PyPi:
Examples:
- ReadTheDocs - PyTrees ROS Tutorials - significantly more edifying than the demos, these incrementally walk through the process of building a decision making layer for a robot. These use ROS2 (sparsely), but merely browsing should be enlightening regardless.
Visualisation:
- py_trees_js - a javascript library for building your own runtime visualisation tool
Robotics:
- py_trees_ros - a tree manager and behaviours designed for use specifically with
ROS2
- py_trees_ros_viewer - a
Qt/ROS2
implementation ofpy_trees_js
2.2.x
- Selectors, Sequences with and without memory. Improved testing and style/type checking.2.1.x
- Chooser deprecated. API housekeeping.2.0.x
- Blackboards V2!1.2.x
- Trees can now shutdown cleanly. StatusToBlackboard and EternalGuard, Visitors get finalise().1.1.x
- Fixes for setup, tick-tock, viz.1.0.x
- Behaviours, Decorators, Composites, Blackboards, Tree Management and Viz tools.0.y.x
- First open source pre-releases.
Devel | 2.2.x | 2.1.x | 2.0.x | 1.2.x | 0.7.x | 0.6.x | |
---|---|---|---|---|---|---|---|
Sources | |||||||
Compatibility | |||||||
CI | - | - | - | - | - | ||
Documentation |