-
 

py_trees repository

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/2.2.x
Last Updated 2023-02-08
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.2.3

README

Py Trees

[About] [What’s New?] [Documentation] [Getting Started] [Next Steps] [Releases] [Developers]


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:

  • 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).

What’s New?

  • [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 by pyproject.toml.
    • The vestigial setup.py is only to assist distribution where PEP-517 is not yet well supported.

Documentation

devel 2.2.x 2.1.x 0.7.x 0.6.x

Getting Started

You can get started on CodeSpaces (with no mismatched environment issues and in under 5mins) [1]:

  1. Fork the project to your personal account
  2. Click on Code -> Codespaces -> + Create a Codespace
  3. 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.

Next Steps

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:

Releases

  • 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 devel 2.1.x 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Compatibility Python 3.10 Python 3.8 Python 3.10 Python 3.8 Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 2.7
CI devel-Status 2.2.x-Status - - - - -
Documentation devel-Docs 2.2.x-Docs 2.1.x-Docs 2.0.x-Docs 1.2.x-Docs 0.7.x-Docs 0.6.x-Docs

Developers

Format, Check, MyPy, Test

Check against at least one of py38 / py310 [1].

# Auto-format your code (if using VSCode, install the ufmt extension)
$ poetry run tox -e format

# Style, Format
$ poetry run tox -e check

# Type-Check
$ poetry run mypy38

# Tests
$ poetry run tox -e py38

[1] CI will test against both python versions for you, but should you wish to do so locally, open up two VSCode windows, one with the project opened in the default py38 devcontainer and the other with the py310 devcontainer.

Generate Documentation

Generate the docs, view them from ./docs/html in a browser.

# Install dependencies
$ poetry install --with docs

# Build
$ poetry run make -C docs html

On Doc dependency changes, export the requirements for ReadTheDocs

$ poetry export -f requirements.txt --with docs -o docs/requirements.txt

Publish to PyPi

If you have permission to publish on pypi:

$ poetry config http-basic.pypi ${POETRY_HTTP_BASIC_PYPI_USERNAME} ${POETRY_HTTP_BASIC_PYPI_PASSWORD}
$ poetry publish

CONTRIBUTING

Contributing Guidelines

Successfully collaborating on common problems is always an edifying experience that increases the desire to do more.

Development Environment

Short of having a poetry environment of your own, you can make use of github’s codespaces.

Refer to the README - Getting Started for details.

Pull Requests

Before Submitting

Some recommendations to help align your contribution and minimise the eventual back and forth on a PR:

  • Engage in an issue thread or in the discussion section.
  • Actual code in the form of a minimal PR with a status:do_not_merge label is a great tool for generating useful dialogue.

Which Branch?

  • If it’s a new feature, or bugfix applicable to the latest code, devel
  • If it’s a bugfix that can’t be applied to devel, but critical for a release, point it at the release branch (e.g. release/0.6.x)

If it is a feature or bugfix that you’d like to see backported to one of the release branches, open a parallel PR for that release branch or mention that you’d like to see it backported in the original PR’s description.

The Pull Request

Be sure to state clearly in the pull request’s description (this helps expedite review):

  • The motivation, i.e. what problem is this solving.
  • A concise summary of what was done (and why if relevant).

Format, Lint, Type-Check and Test

The repository aims to conform to PEP8, please endeavour to do so. CI will get cranky if you don’t ;)

Test against at least one of py38, py310.

# Auto-format your code (if using VSCode, install the ufmt extension)
$ poetry run tox -e format

# Style, Format
$ poetry run tox -e check

# Type-Check
$ poetry run mypy38

# Tests
$ poetry run tox -e py38

Documentation

Documentation is auto-generated as part of the PR process, but if you do wish to make changes and check locally:

Generate the docs, view them from ./docs/html in a browser.

# Install dependencies
$ poetry install --with docs

# Build
$ poetry run make -C docs html

On doc dependency changes in pyproject.toml, export the requirements for ReadTheDocs.

$ poetry export -f requirements.txt --with docs -o docs/requirements.txt

Changelog

  • Please update the Forthcoming section in the Changelog with your change and a link to your PR.
  • The style should be self-explanatory.
  • Do not worry about incrementing the version, releases are handled separately.

Review

Once submitted, a reviewer will be assigned. You do not need to select. If no-one has self-assigned in a reasonable time window, feel free to append a friendly bump comment to your PR.

Merging

Once the large button has gone GREEN, you or the reviewer may merge the pull request.

Releasing

If you are interested in seeing your changes make it into a release (sooner rather than later), please make the request via a comment in your PR or in an issue.

Social Conduct

Be prepared to be tickled by noodly appendages and at all times, be froody.


Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version devel
Last Updated 2024-12-04
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.2.3

README

Py Trees

[About] [What’s New?] [Documentation] [Getting Started] [Next Steps] [Releases]


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:

  • 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).

What’s New?

  • [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 by pyproject.toml.
    • The vestigial setup.py is only to assist distribution where PEP-517 is not yet well supported.

Documentation

devel 2.2.x 2.1.x 0.7.x 0.6.x

Getting Started

You can get started on CodeSpaces (with no mismatched environment issues and in under 5mins) [1]:

  1. Fork the project to your personal account
  2. Click on Code -> Codespaces -> + Create a Codespace
  3. 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.

Next Steps

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:

Releases

  • 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 devel 2.1.x 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Compatibility Python 3.10 Python 3.8 Python 3.10 Python 3.8 Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 2.7
CI devel-Status 2.2.x-Status - - - - -
Documentation devel-Docs 2.2.x-Docs 2.1.x-Docs 2.0.x-Docs 1.2.x-Docs 0.7.x-Docs 0.6.x-Docs

CONTRIBUTING

Contributing Guidelines

Successfully collaborating on common problems is always an edifying experience that increases the desire to do more.

Development Environment

Short of having a poetry environment of your own, you can make use of github’s codespaces.

Refer to the README - Getting Started for details.

Pull Requests

Before Submitting

Some recommendations to help align your contribution and minimise the eventual back and forth on a PR:

  • Engage in an issue thread or in the discussion section.
  • Actual code in the form of a minimal PR with a status:do_not_merge label helps generate useful dialogue.

Which Branch?

  • If it’s a new feature, or bugfix applicable to the latest code, devel
  • If it’s a bugfix that can’t be applied to devel, but critical for a release, point it at the release branch (e.g. release/0.6.x)

If it is a feature or bugfix that you’d like to see backported to one of the release branches, open a parallel PR for that release branch or mention that you’d like to see it backported in the original PR’s description.

The Pull Request

Be sure to state clearly in the pull request’s description (this helps expedite review):

  • The motivation, i.e. what problem is this solving.
  • A concise summary of what was done (and why if relevant).

Pre-Merge Checks

CI get cranky on a variety of things - if it complains, make sure your PR is passing the following checks locally.

Changelog

  • Please update the Forthcoming section in the Changelog with your change and a link to your PR.
  • The style should be self-explanatory.
  • Do not worry about incrementing the version, releases are handled separately.

Review

Once submitted, a reviewer will be assigned. You do not need to select. If no-one has self-assigned in a reasonable time window, feel free to append a friendly bump comment to your PR.

Merging

Once the large button has gone GREEN, you or the reviewer may merge the pull request.

Releasing

If you are interested in seeing your changes make it into a release (sooner rather than later), please make the request via a comment in your PR or in an issue.

Social Conduct

Be prepared to be tickled by noodly appendages and at all times, be froody.


Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version devel
Last Updated 2024-12-04
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.2.3

README

Py Trees

[About] [What’s New?] [Documentation] [Getting Started] [Next Steps] [Releases]


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:

  • 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).

What’s New?

  • [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 by pyproject.toml.
    • The vestigial setup.py is only to assist distribution where PEP-517 is not yet well supported.

Documentation

devel 2.2.x 2.1.x 0.7.x 0.6.x

Getting Started

You can get started on CodeSpaces (with no mismatched environment issues and in under 5mins) [1]:

  1. Fork the project to your personal account
  2. Click on Code -> Codespaces -> + Create a Codespace
  3. 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.

Next Steps

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:

Releases

  • 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 devel 2.1.x 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Compatibility Python 3.10 Python 3.8 Python 3.10 Python 3.8 Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 2.7
CI devel-Status 2.2.x-Status - - - - -
Documentation devel-Docs 2.2.x-Docs 2.1.x-Docs 2.0.x-Docs 1.2.x-Docs 0.7.x-Docs 0.6.x-Docs

CONTRIBUTING

Contributing Guidelines

Successfully collaborating on common problems is always an edifying experience that increases the desire to do more.

Development Environment

Short of having a poetry environment of your own, you can make use of github’s codespaces.

Refer to the README - Getting Started for details.

Pull Requests

Before Submitting

Some recommendations to help align your contribution and minimise the eventual back and forth on a PR:

  • Engage in an issue thread or in the discussion section.
  • Actual code in the form of a minimal PR with a status:do_not_merge label helps generate useful dialogue.

Which Branch?

  • If it’s a new feature, or bugfix applicable to the latest code, devel
  • If it’s a bugfix that can’t be applied to devel, but critical for a release, point it at the release branch (e.g. release/0.6.x)

If it is a feature or bugfix that you’d like to see backported to one of the release branches, open a parallel PR for that release branch or mention that you’d like to see it backported in the original PR’s description.

The Pull Request

Be sure to state clearly in the pull request’s description (this helps expedite review):

  • The motivation, i.e. what problem is this solving.
  • A concise summary of what was done (and why if relevant).

Pre-Merge Checks

CI get cranky on a variety of things - if it complains, make sure your PR is passing the following checks locally.

Changelog

  • Please update the Forthcoming section in the Changelog with your change and a link to your PR.
  • The style should be self-explanatory.
  • Do not worry about incrementing the version, releases are handled separately.

Review

Once submitted, a reviewer will be assigned. You do not need to select. If no-one has self-assigned in a reasonable time window, feel free to append a friendly bump comment to your PR.

Merging

Once the large button has gone GREEN, you or the reviewer may merge the pull request.

Releasing

If you are interested in seeing your changes make it into a release (sooner rather than later), please make the request via a comment in your PR or in an issue.

Social Conduct

Be prepared to be tickled by noodly appendages and at all times, be froody.


Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/0.7.x
Last Updated 2021-01-10
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 0.7.6

README

Py Trees

This 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 and Chooser 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

Detailed api reference and demo instructions can be found in the sphinx documentation for the package. There is also the py_trees_ros package which includes additional modules and documentation for using py_trees with ROS.

Sources, Builds & Docs

Devel Melodic Kinetic  
devel-Sources 0.6.x-Sources 0.5.x-Sources  
devel-Status melodic-Status kinetic-Status  
devel-Docs 0.6.x-Docs 0.5.x-Docs  

Getting Started

Installation

From ppa on Ubuntu/Xenial

sudo apt install python-py-trees

From pypi:

pip install py_trees

Or in a sandboxed ROS Kinetic environment (coming soon):

sudo apt install ros-kinetic-py-trees

Development

You can develop in either a virtualenv (python style):

source ./venv.bash

or in a catkin environment alongside other ROS py-trees packages:

  • https://github.com/stonier/repos_index/blob/devel/kinetic/py_trees.repos

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/1.2.x
Last Updated 2019-08-06
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 1.2.2

README

Py Trees

[About][Status][Demos & Tutorials][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 and Chooser 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

Docs and Demos

devel 1.2.x 0.6.x

Status

  Devel 1.2.x 0.6.x 0.5.x  
Sources devel 1.2.x 0.6.x 0.5.x  
Compatibility Python 3.6 Python 3.6 Python 2.7 Python 2.7  
Continuous Integration devel-Status 1.2.x-Status melodic-Status kinetic-Status  
Documentation devel-Docs 1.2.x-Docs 0.6.x-Docs 0.5.x-Docs  

Installation

From ppa on Ubuntu/Bionic:

$ sudo apt install python3-py-trees

From pypi:

$ pip install py_trees

In a Python Virtual Environment:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.bash

Build your own python3 deb:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.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.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/2.0.x
Last Updated 2020-08-11
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.0.16

README

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 and Chooser 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

Docs and Demos

devel 2.0.x 1.2.x 0.6.x

Releases

  • 0.5.x/0.6.x - first open source releases
  • 1.0.x - first stable release
  • 1.1.x - improvements
  • 1.2.x - improvements
  • 2.0.x - blackboards v2, with namespaces, access permissions and key tracking
  Devel 2.0.x 1.2.x 0.6.x 0.5.x  
Sources devel 2.0.x 1.2.x 0.6.x 0.5.x  
Compatibility Python 3.6 Python 3.6 Python 3.6 Python 2.7 Python 2.7  
Continuous Integration devel-Status 2.0.x-Status 1.2.x-Status melodic-Status kinetic-Status  
Documentation devel-Docs 2.0.x-Docs 1.2.x-Docs 0.6.x-Docs 0.5.x-Docs  

Installation

From ppa on Ubuntu/Bionic:

$ sudo apt install python3-py-trees

From pypi:

$ pip install py_trees

In a Python Virtual Environment:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.bash

Build your own python3 deb:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.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.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/1.2.x
Last Updated 2019-08-06
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 1.2.2

README

Py Trees

[About][Status][Demos & Tutorials][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 and Chooser 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

Docs and Demos

devel 1.2.x 0.6.x

Status

  Devel 1.2.x 0.6.x 0.5.x  
Sources devel 1.2.x 0.6.x 0.5.x  
Compatibility Python 3.6 Python 3.6 Python 2.7 Python 2.7  
Continuous Integration devel-Status 1.2.x-Status melodic-Status kinetic-Status  
Documentation devel-Docs 1.2.x-Docs 0.6.x-Docs 0.5.x-Docs  

Installation

From ppa on Ubuntu/Bionic:

$ sudo apt install python3-py-trees

From pypi:

$ pip install py_trees

In a Python Virtual Environment:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.bash

Build your own python3 deb:

$ git clone https://github.com/splintered-reality/py_trees
$ cd py_trees
$ source ./virtualenv.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.

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/2.1.x
Last Updated 2021-05-31
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.1.6

README

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

Docs and Demos

Core API documentation (also includes some explanation concerning the demo scripts):

devel 2.1.x 0.7.x 0.6.x

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 releases
  • 1.0.x - first stable release
  • 1.1.x - improvements
  • 1.2.x - improvements
  • 2.0.x - blackboards v2 with namespaces, access permissions and key tracking
  • 2.1.x - Chooser deprecated, api housekeeping
  Devel 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Sources devel 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Compatibility Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 2.7
CI devel-Status 2.1.x-Status 2.0.x-Status 1.2.x-Status 0.7.x-Status 0.6.x-Status
Documentation devel-Docs 2.1.x-Docs 2.0.x-Docs 1.2.x-Docs 0.7.x-Docs 0.6.x-Docs

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.

CONTRIBUTING

Contributing Guidelines

Successfully collaborating on common problems is always an edifying experience that increases the desire to do more.

Pull Requests

Before Submitting

Some recommendations to help align your contribution and minimise the eventual back and forth on a PR:

  • Engage in an issue thread or in the discussion section.
  • Actual code in the form of a minimal PR with a status:do_not_merge label is a great tool for generating useful dialogue.

Which Branch?

  • If it’s a new feature, or bugfix applicable to the latest code, devel
  • If it’s a bugfix that can’t be applied to devel, but critical for a release, point it at the release branch (e.g. release/0.6.x)

If it is a feature or bugfix that you’d like to see backported to one of the release branches, open a parallel PR for that release branch or mention that you’d like to see it backported in the original PR’s description.

Coding

Running . ./venv.bash in the root of the repository can create a nice, self-contained sandbox within which you can develop and test your contribution.

The Pull Request

Be sure to state clearly in the pull request’s description (this helps expedite review):

  • The motivation, i.e. what problem is this solving.
  • A concise summary of what was done (and why if relevant).

Apply relevant labels - one of component & type is the norm. If the pull request is not yet ready, use the status:do_not_merge label.

Style

The repository aims to conform to PEP8, please endeavour to do so. There is a simple script ./lint/flake8 that can be used to check that the code conforms. This is run as part of the CI checks.

Tests

See tests/README.md for instructions on how to run the tests all together or manually. If you are contributing new features, or bugfixing a problem that did not have coverage, it is expected that the pull requests will include a test for regression purposes.

Documentation

Documentation is auto-generated as part of the PR process, but if you do wish to make changes and check locally:

. ./venv.bash
make docs
...
The HTML pages are in doc/html.

Changelog

  • Please update the Forthcoming section in the Changelog with your change and a link to your PR.
  • The style should be self-explanatory.
  • Do not worry about incrementing the version, releases are handled separately.

Review

Once submitted, a reviewer will be assigned. You do not need to select. If no-one has self-assigned in a reasonable time window, feel free to append a friendly bump comment to your PR.

Merging

Once the large button has gone GREEN, you or the reviewer may merge the pull request.

Releasing

If you are interested in seeing your changes make it into a release (sooner rather than later) and distributed on PyPi, PPA or via the ROS ecosystem, please make the request via a comment in your PR or in an issue.

Social Conduct

Be prepared to be tickled by noodly appendages and at all times, be froody.


Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version devel
Last Updated 2024-12-04
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 2.2.3

README

Py Trees

[About] [What’s New?] [Documentation] [Getting Started] [Next Steps] [Releases]


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:

  • 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).

What’s New?

  • [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 by pyproject.toml.
    • The vestigial setup.py is only to assist distribution where PEP-517 is not yet well supported.

Documentation

devel 2.2.x 2.1.x 0.7.x 0.6.x

Getting Started

You can get started on CodeSpaces (with no mismatched environment issues and in under 5mins) [1]:

  1. Fork the project to your personal account
  2. Click on Code -> Codespaces -> + Create a Codespace
  3. 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.

Next Steps

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:

Releases

  • 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 devel 2.1.x 2.1.x 2.0.x 1.2.x 0.7.x 0.6.x
Compatibility Python 3.10 Python 3.8 Python 3.10 Python 3.8 Python 3.6 Python 3.6 Python 3.6 Python 3.6 Python 2.7
CI devel-Status 2.2.x-Status - - - - -
Documentation devel-Docs 2.2.x-Docs 2.1.x-Docs 2.0.x-Docs 1.2.x-Docs 0.7.x-Docs 0.6.x-Docs

CONTRIBUTING

Contributing Guidelines

Successfully collaborating on common problems is always an edifying experience that increases the desire to do more.

Development Environment

Short of having a poetry environment of your own, you can make use of github’s codespaces.

Refer to the README - Getting Started for details.

Pull Requests

Before Submitting

Some recommendations to help align your contribution and minimise the eventual back and forth on a PR:

  • Engage in an issue thread or in the discussion section.
  • Actual code in the form of a minimal PR with a status:do_not_merge label helps generate useful dialogue.

Which Branch?

  • If it’s a new feature, or bugfix applicable to the latest code, devel
  • If it’s a bugfix that can’t be applied to devel, but critical for a release, point it at the release branch (e.g. release/0.6.x)

If it is a feature or bugfix that you’d like to see backported to one of the release branches, open a parallel PR for that release branch or mention that you’d like to see it backported in the original PR’s description.

The Pull Request

Be sure to state clearly in the pull request’s description (this helps expedite review):

  • The motivation, i.e. what problem is this solving.
  • A concise summary of what was done (and why if relevant).

Pre-Merge Checks

CI get cranky on a variety of things - if it complains, make sure your PR is passing the following checks locally.

Changelog

  • Please update the Forthcoming section in the Changelog with your change and a link to your PR.
  • The style should be self-explanatory.
  • Do not worry about incrementing the version, releases are handled separately.

Review

Once submitted, a reviewer will be assigned. You do not need to select. If no-one has self-assigned in a reasonable time window, feel free to append a friendly bump comment to your PR.

Merging

Once the large button has gone GREEN, you or the reviewer may merge the pull request.

Releasing

If you are interested in seeing your changes make it into a release (sooner rather than later), please make the request via a comment in your PR or in an issue.

Social Conduct

Be prepared to be tickled by noodly appendages and at all times, be froody.


Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/0.5.x
Last Updated 2019-03-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 0.5.12

README

Py Trees

This 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 and Chooser 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

Detailed api reference and demo instructions can be found in the sphinx documentation for the package. There is also the py_trees_ros package which includes additional modules and documentation for using py_trees with ROS.

Sources, Builds & Docs

Devel Kinetic Indigo
devel-Sources 0.5.x-Sources 0.4.x-Sources
devel-Status kinetic-Status  
devel-Docs 0.5.x-Docs  

Getting Started

Installation

From ppa on Ubuntu/Xenial

sudo apt install python-py-trees

From pypi:

pip install py_trees

Or in a sandboxed ROS Kinetic environment (coming soon):

sudo apt install ros-kinetic-py-trees

Development

You can develop in either a virtualenv (python style):

source ./virtualenv.bash

or in a catkin environment alongside other ROS py-trees packages:

  • https://github.com/stonier/repos_index/blob/devel/kinetic/py_trees.repos

CONTRIBUTING

No CONTRIBUTING.md found.

Repository Summary

Checkout URI https://github.com/splintered-reality/py_trees.git
VCS Type git
VCS Version release/0.6.x
Last Updated 2021-01-10
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
py_trees 0.6.9

README

Py Trees

This 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 and Chooser 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

Detailed api reference and demo instructions can be found in the sphinx documentation for the package. There is also the py_trees_ros package which includes additional modules and documentation for using py_trees with ROS.

Sources, Builds & Docs

Devel Melodic Kinetic  
devel-Sources 0.6.x-Sources 0.5.x-Sources  
devel-Status melodic-Status kinetic-Status  
devel-Docs 0.6.x-Docs 0.5.x-Docs  

Getting Started

Installation

From ppa on Ubuntu/Xenial

sudo apt install python-py-trees

From pypi:

pip install py_trees

Or in a sandboxed ROS Kinetic environment (coming soon):

sudo apt install ros-kinetic-py-trees

Development

You can develop in either a virtualenv (python style):

# python 2
source ./virtualenv.bash
# python 3
source ./virtualenv3.bash

or in a catkin environment alongside other ROS py-trees packages:

  • https://github.com/stonier/repos_index/blob/devel/kinetic/py_trees.repos

CONTRIBUTING

No CONTRIBUTING.md found.