# py-trees-ros
**Repository Path**: agiros/py-trees-ros
## Basic Information
- **Project Name**: py-trees-ros
- **Description**: py-trees-ros
- **Primary Language**: Unknown
- **License**: BSD-2-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-10-13
- **Last Updated**: 2026-09-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Py Trees for ROS
Behaviours, trees and utilities that extend py_trees for use with ROS.

## Getting Started (ROS2)
Choose your ros distro and install via debs, e.g. for humble
```
$ sudo apt install \
ros-humble-py-trees \
ros-humble-py-trees-ros-interfaces \
ros-humble-py-trees-ros \
ros-humble-py-trees-ros-tutorials \
ros-humble-py-trees-ros-viewer
```
Dive into the [PyTree Docs](https://py-trees.readthedocs.io/en/devel/) for a basic primer (non-ROS) on behaviour trees, then move on to the
the [PyTree ROS Tutorials](https://py-trees-ros-tutorials.readthedocs.io/en/devel/) which incrementally build a scenario for a robot. The [PyTree ROS](https://py-trees-ros.readthedocs.io/en/devel/) documentation provides api docs for ROS specific trees, idioms and behaviours respectively.
For version specific releases of the documentation, refer to the documentation links in the matrix below.
| ROS2 | [Rolling][rolling-build-farm] | [Humble][humble-build-farm] | [Foxy][foxy-build-farm] | [Dashing][dashing-build-farm] |
|:---:|:---:|:---:|:---:|:---:|
| [py_trees][py-trees-ros-index] | [![2.2.x][2.2.x-sources-image]][py-trees-sources-2.2.x]
[![Build Status][py-trees-build-status-rolling-image]][py-trees-build-status-rolling]
[![2.2.x-Docs][2.2.x-rtd-image]][py-trees-docs-2.2.x] | [![2.2.x][2.2.x-sources-image]][py-trees-sources-2.2.x]
[![Build Status][py-trees-build-status-humble-image]][py-trees-build-status-humble]
[![2.2.x-Docs][2.2.x-rtd-image]][py-trees-docs-2.2.x] | [![2.1.x][2.1.x-sources-image]][py-trees-sources-2.1.x]
[![Build Status][py-trees-build-status-foxy-image]][py-trees-build-status-foxy]
[![2.1.x-Docs][2.1.x-rtd-image]][py-trees-docs-2.1.x] | [![1.3.x][1.3.x-sources-image]][py-trees-sources-1.3.x]
-
[![1.3.x-Docs][1.3.x-rtd-image]][py-trees-docs-1.3.x] |
| [py_trees_ros_interfaces][py-trees-ros-interfaces-ros-index] | [![2.1.x][2.1.x-sources-image]][py-trees-ros-interfaces-sources-2.1.x]
[![Build Status][py-trees-ros-interfaces-build-status-rolling-image]][py-trees-ros-interfaces-build-status-rolling]
![2.1.x-Docs][not-available-docs-image] | [![2.1.x][2.1.x-sources-image]][py-trees-ros-interfaces-sources-2.1.x]
[![Build Status][py-trees-ros-interfaces-build-status-humble-image]][py-trees-ros-interfaces-build-status-humble]
![2.1.x-Docs][not-available-docs-image] | [![2.0.x][2.0.x-sources-image]][py-trees-ros-interfaces-sources-2.0.x]
[![Build Status][py-trees-ros-interfaces-build-status-foxy-image]][py-trees-ros-interfaces-build-status-foxy]
![1.2.x-Docs][not-available-docs-image] | [![1.2.x][1.2.x-sources-image]][py-trees-ros-interfaces-sources-1.2.x]
-
![1.2.x-Docs][not-available-docs-image] |
| [py_trees_ros][py-trees-ros-ros-index] | [![2.2.x][2.2.x-sources-image]][py-trees-ros-sources-2.2.x]
[![Build Status][py-trees-ros-build-status-rolling-image]][py-trees-ros-build-status-rolling]
[![2.2.x-Docs][2.2.x-rtd-image]][py-trees-ros-docs-2.2.x] | [![2.2.x][2.2.x-sources-image]][py-trees-ros-sources-2.2.x]
[![Build Status][py-trees-ros-build-status-humble-image]][py-trees-ros-build-status-humble]
[![2.2.x-Docs][2.2.x-rtd-image]][py-trees-ros-docs-2.2.x] | [![2.1.x][2.1.x-sources-image]][py-trees-ros-sources-2.1.x]
[![Build Status][py-trees-ros-build-status-foxy-image]][py-trees-ros-build-status-foxy]
[![2.1.x-Docs][2.1.x-rtd-image]][py-trees-ros-docs-2.1.x] | [![1.2.x][1.2.x-sources-image]][py-trees-ros-sources-1.2.x]
-
[![1.2.x-Docs][1.2.x-rtd-image]][py-trees-ros-docs-1.2.x] |
| [py_trees_ros_tutorials][py-trees-ros-tutorials-ros-index] |
|
| [![2.1.x][2.1.x-sources-image]][py-trees-ros-tutorials-sources-2.1.x]
[![Build Status][py-trees-ros-tutorials-build-status-foxy-image]][py-trees-ros-tutorials-build-status-foxy]
[![2.1.x-Docs][2.1.x-rtd-image]][py-trees-ros-tutorials-docs-2.1.x] | [![1.0.x][1.0.x-sources-image]][py-trees-ros-tutorials-sources-1.0.x]
-
[![1.0.x-Docs][1.0.x-rtd-image]][py-trees-ros-tutorials-docs-1.0.x] |
| [py_trees_js][py-trees-js-ros-index] | [![0.6.x][0.6.x-sources-image]][py-trees-js-sources-0.6.x]
[![Build Status][py-trees-js-build-status-rolling-image]][py-trees-js-build-status-rolling]
[![0.6.x-Docs][readme-docs-image]][py-trees-js-docs-0.6.x] | [![0.6.x][0.6.x-sources-image]][py-trees-js-sources-0.6.x]
[![Build Status][py-trees-js-build-status-humble-image]][py-trees-js-build-status-humble]
[![0.6.x-Docs][readme-docs-image]][py-trees-js-docs-0.6.x] | [![0.6.x][0.6.x-sources-image]][py-trees-js-sources-0.6.x]
[![Build Status][py-trees-js-build-status-foxy-image]][py-trees-js-build-status-foxy]
[![0.6.x-Docs][readme-docs-image]][py-trees-js-docs-0.6.x] | [![0.5.x][0.5.x-sources-image]][py-trees-js-sources-0.5.x]
-
[![0.5.x-Docs][readme-docs-image]][py-trees-js-docs-0.5.x] |
| [py_trees_ros_viewer][py-trees-ros-viewer-ros-index] |
|
| [![0.2.x][0.2.x-sources-image]][py-trees-ros-viewer-sources-0.2.x]
[![Build Status][py-trees-ros-viewer-build-status-foxy-image]][py-trees-ros-viewer-build-status-foxy]
[![0.2.x-Docs][readme-docs-image]][py-trees-ros-viewer-docs-0.2.x] | [![0.1.x][0.1.x-sources-image]][py-trees-ros-viewer-sources-0.1.x]
-
[![0.1.x-Docs][readme-docs-image]][py-trees-ros-viewer-docs-0.1.x] |
## Getting Started (ROS1)
Refer to the documentation links in the matrix below (note: you'll find the tutorials in the `py_trees_ros` documentation).
| ROS1 | [Noetic][noetic-build-farm] | [Melodic][melodic-build-farm] | [Kinetic][kinetic-build-farm] |
|:---:|:---:|:---:|:---:|
| [py_trees][py-trees-wiki] | [![0.7.x][0.7.x-sources-image]][py-trees-sources-0.7.x]
[![Build Status][py-trees-build-status-noetic-image]][py-trees-build-status-noetic]
[![Docs Status][py-trees-docs-noetic-image]][py-trees-docs-noetic] | [![0.6.x][0.6.x-sources-image]][py-trees-sources-0.6.x]
[![Build Status][py-trees-build-status-melodic-image]][py-trees-build-status-melodic]
[![Docs Status][py-trees-docs-melodic-image]][py-trees-docs-melodic] | [![0.5.x][0.5.x-sources-image]][py-trees-sources-0.5.x]
-
- |
| [py_trees_msgs][py-trees-msgs-wiki] | [![0.3.x][0.3.x-sources-image]][py-trees-msgs-sources-noetic]
[![Build Status][py-trees-msgs-build-status-noetic-image]][py-trees-msgs-build-status-noetic]
[![Docs Status][py-trees-msgs-docs-noetic-image]][py-trees-msgs-docs-noetic] | [![0.3.x][0.3.x-sources-image]][py-trees-msgs-sources-melodic]
[![Build Status][py-trees-msgs-build-status-melodic-image]][py-trees-msgs-build-status-melodic]
[![Docs Status][py-trees-msgs-docs-melodic-image]][py-trees-msgs-docs-melodic] | [![0.3.x][0.3.x-sources-image]][py-trees-msgs-sources-kinetic]
-
- |
| [py_trees_ros][py-trees-ros-wiki] | [![0.6.x][0.6.x-sources-image]][py-trees-ros-sources-0.6.x]
[![Build Status][py-trees-ros-build-status-noetic-image]][py-trees-ros-build-status-noetic]
[![Docs Status][py-trees-ros-docs-noetic-image]][py-trees-ros-docs-noetic] | [![0.5.x][0.5.x-sources-image]][py-trees-ros-sources-0.5.x]
[![Build Status][py-trees-ros-build-status-melodic-image]][py-trees-ros-build-status-melodic]
[![Docs Status][py-trees-ros-docs-melodic-image]][py-trees-ros-docs-melodic] | [![0.5.x][0.5.x-sources-image]][py-trees-ros-sources-0.5.x]
-
- |
| [rqt_py_trees][rqt-py-trees-wiki] | [![0.4.x][0.4.x-sources-image]][rqt-py-trees-sources-noetic]
[![Build Status][rqt-py-trees-build-status-noetic-image]][rqt-py-trees-build-status-noetic] | [![0.3.x][0.3.x-sources-image]][rqt-py-trees-sources-melodic]
[![Build Status][rqt-py-trees-build-status-melodic-image]][rqt-py-trees-build-status-melodic] | [![0.3.x][0.3.x-sources-image]][rqt-py-trees-sources-kinetic]
-|
[devel-sources-image]: http://img.shields.io/badge/sources-devel-blue.svg?style=plastic
[2.2.x-sources-image]: http://img.shields.io/badge/sources-2.2.x-blue.svg?style=plastic
[2.1.x-sources-image]: http://img.shields.io/badge/sources-2.1.x-blue.svg?style=plastic
[2.0.x-sources-image]: http://img.shields.io/badge/sources-2.0.x-blue.svg?style=plastic
[1.3.x-sources-image]: http://img.shields.io/badge/sources-1.3.x-blue.svg?style=plastic
[1.2.x-sources-image]: http://img.shields.io/badge/sources-1.2.x-blue.svg?style=plastic
[1.1.x-sources-image]: http://img.shields.io/badge/sources-1.1.x-blue.svg?style=plastic
[1.0.x-sources-image]: http://img.shields.io/badge/sources-1.0.x-blue.svg?style=plastic
[0.7.x-sources-image]: http://img.shields.io/badge/sources-0.7.x-blue.svg?style=plastic
[0.6.x-sources-image]: http://img.shields.io/badge/sources-0.6.x-blue.svg?style=plastic
[0.5.x-sources-image]: http://img.shields.io/badge/sources-0.5.x-blue.svg?style=plastic
[0.4.x-sources-image]: http://img.shields.io/badge/sources-0.4.x-blue.svg?style=plastic
[0.3.x-sources-image]: http://img.shields.io/badge/sources-0.3.x-blue.svg?style=plastic
[0.2.x-sources-image]: http://img.shields.io/badge/sources-0.2.x-blue.svg?style=plastic
[0.1.x-sources-image]: http://img.shields.io/badge/sources-0.1.x-blue.svg?style=plastic
[devel-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=devel&style=plastic
[2.2.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-2.2.x&style=plastic
[2.1.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-2.1.x&style=plastic
[2.0.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-2.0.x&style=plastic
[1.3.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-1.3.x&style=plastic
[1.2.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-1.2.x&style=plastic
[1.1.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-1.0.x&style=plastic
[1.0.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-1.0.x&style=plastic
[0.6.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-0.6.x&style=plastic
[0.5.x-rtd-image]: https://readthedocs.org/projects/py-trees/badge/?version=release-0.5.x&style=plastic
[devel-docs-image]: http://img.shields.io/badge/docs-devel-brightgreen.svg?style=plastic
[1.3.x-docs-image]: http://img.shields.io/badge/docs-1.3.x-brightgreen.svg?style=plastic
[1.2.x-docs-image]: http://img.shields.io/badge/docs-1.2.x-brightgreen.svg?style=plastic
[0.6.x-docs-image]: http://img.shields.io/badge/docs-0.6.x-brightgreen.svg?style=plastic
[0.5.x-docs-image]: http://img.shields.io/badge/docs-0.5.x-brightgreen.svg?style=plastic
[0.3.x-docs-image]: http://img.shields.io/badge/docs-0.3.x-brightgreen.svg?style=plastic
[not-available-docs-image]: http://img.shields.io/badge/docs-n/a-yellow.svg?style=plastic
[readme-docs-image]: http://img.shields.io/badge/docs-README-brightgreen.svg?style=plastic
[rolling-build-farm]: http://repo.ros2.org/status_page/ros_rolling_default.html?q=py_trees
[humble-build-farm]: http://repo.ros2.org/status_page/ros_humble_default.html?q=py_trees
[foxy-build-farm]: http://repo.ros2.org/status_page/ros_foxy_default.html?q=py_trees
[dashing-build-farm]: http://repo.ros2.org/status_page/ros_dashing_default.html?q=py_trees
[noetic-build-farm]: http://repositories.ros.org/status_page/ros_noetic_default.html?q=py_trees
[melodic-build-farm]: http://repositories.ros.org/status_page/ros_melodic_default.html?q=py_trees
[kinetic-build-farm]: http://repositories.ros.org/status_page/ros_kinetic_default.html?q=py_trees
[py-trees-build-status-rolling]: https://build.ros2.org/job/Rbin_uJ64__py_trees__ubuntu_jammy_amd64__binary/
[py-trees-build-status-rolling-image]: https://build.ros2.org/job/Rbin_uJ64__py_trees__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-build-status-humble]: https://build.ros2.org/job/Hbin_uJ64__py_trees__ubuntu_jammy_amd64__binary/
[py-trees-build-status-humble-image]: https://build.ros2.org/job/Hbin_uJ64__py_trees__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees__ubuntu_focal_amd64__binary/
[py-trees-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-build-status-melodic]: http://build.ros.org/job/Mbin_uB64__py_trees__ubuntu_bionic_amd64__binary
[py-trees-build-status-melodic-image]: http://build.ros.org/job/Mbin_uB64__py_trees__ubuntu_bionic_amd64__binary/badge/icon?style=plastic
[py-trees-build-status-noetic]: http://build.ros.org/job/Nbin_uF64__py_trees__ubuntu_focal_amd64__binary
[py-trees-build-status-noetic-image]: http://build.ros.org/job/Nbin_uF64__py_trees__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-docs-devel]: http://py-trees.readthedocs.io/
[py-trees-docs-2.2.x]: http://py-trees.readthedocs.io/en/release-2.2.x/
[py-trees-docs-2.1.x]: http://py-trees.readthedocs.io/en/release-2.1.x/
[py-trees-docs-2.0.x]: http://py-trees.readthedocs.io/en/release-2.0.x/
[py-trees-docs-1.3.x]: http://py-trees.readthedocs.io/en/release-1.3.x/
[py-trees-docs-0.7.x]: http://py-trees.readthedocs.io/en/release-0.7.x/
[py-trees-docs-0.6.x]: http://py-trees.readthedocs.io/en/release-0.6.x/
[py-trees-docs-0.5.x]: http://docs.ros.org/kinetic/api/py_trees/html/
[py-trees-docs-rolling-image]: http://img.shields.io/badge/py_trees-rolling-brightgreen.svg?style=plastic
[py-trees-docs-humble-image]: http://img.shields.io/badge/py_trees-humble-brightgreen.svg?style=plastic
[py-trees-docs-kinetic]: http://docs.ros.org/kinetic/api/py_trees/html/
[py-trees-docs-foxy-image]: http://img.shields.io/badge/py_trees-foxy-brightgreen.svg?style=plastic
[py-trees-docs-dashing-image]: http://img.shields.io/badge/py_trees-dashing-brightgreen.svg?style=plastic
[py-trees-docs-melodic]: http://docs.ros.org/melodic/api/py_trees/html/
[py-trees-docs-melodic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Mdoc__py_trees__ubuntu_bionic_amd64.svg?label=docs&style=plastic
[py-trees-docs-noetic]: http://docs.ros.org/noetic/api/py_trees/html/
[py-trees-docs-noetic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Ndoc__py_trees__ubuntu_focal_amd64.svg?label=docs&style=plastic
[py-trees-ros-index]: https://index.ros.org/p/py_trees/github-splintered-reality-py_trees
[py-trees-sources-devel]: https://github.com/splintered-reality/py_trees/tree/devel
[py-trees-sources-2.2.x]: https://github.com/splintered-reality/py_trees/tree/release/2.2.x
[py-trees-sources-2.1.x]: https://github.com/splintered-reality/py_trees/tree/release/2.1.x
[py-trees-sources-2.0.x]: https://github.com/splintered-reality/py_trees/tree/release/2.0.x
[py-trees-sources-1.3.x]: https://github.com/splintered-reality/py_trees/tree/release/1.3.x
[py-trees-sources-0.7.x]: https://github.com/splintered-reality/py_trees/tree/release/0.7.x
[py-trees-sources-0.6.x]: https://github.com/splintered-reality/py_trees/tree/release/0.6.x
[py-trees-sources-0.5.x]: https://github.com/splintered-reality/py_trees/tree/release/0.5.x
[py-trees-wiki]: http://wiki.ros.org/py_trees
[py-trees-ros-interfaces-build-status-rolling]: https://build.ros2.org/job/Rbin_uJ64__py_trees_ros_interfaces__ubuntu_jammy_amd64__binary/
[py-trees-ros-interfaces-build-status-rolling-image]: https://build.ros2.org/job/Rbin_uJ64__py_trees_ros_interfaces__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-ros-interfaces-build-status-humble]: https://build.ros2.org/job/Hbin_uJ64__py_trees_ros_interfaces__ubuntu_jammy_amd64__binary/
[py-trees-ros-interfaces-build-status-humble-image]: https://build.ros2.org/job/Hbin_uJ64__py_trees_ros_interfaces__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-ros-interfaces-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_interfaces__ubuntu_focal_amd64__binary/
[py-trees-ros-interfaces-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_interfaces__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-ros-interfaces-ros-index]: https://index.ros.org/p/py_trees_ros_interfaces/github-splintered-reality-py_trees_ros_interfaces
[py-trees-ros-interfaces-sources-2.1.x]: https://github.com/splintered-reality/py_trees_ros_interfaces/tree/release/2.1.x
[py-trees-ros-interfaces-sources-2.0.x]: https://github.com/splintered-reality/py_trees_ros_interfaces/tree/release/2.0.x
[py-trees-ros-interfaces-sources-1.2.x]: https://github.com/splintered-reality/py_trees_ros_interfaces/tree/release/1.2.x
[py-trees-ros-interfaces-sources-1.1.x]: https://github.com/splintered-reality/py_trees_ros_interfaces/tree/release/1.1.x
[py-trees-ros-build-status-rolling]: https://build.ros2.org/job/Rbin_uJ64__py_trees_ros__ubuntu_jammy_amd64__binary/
[py-trees-ros-build-status-rolling-image]: https://build.ros2.org/job/Rbin_uJ64__py_trees_ros__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-ros-build-status-humble]: https://build.ros2.org/job/Hbin_uJ64__py_trees_ros__ubuntu_jammy_amd64__binary/
[py-trees-ros-build-status-humble-image]: https://build.ros2.org/job/Hbin_uJ64__py_trees_ros__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-ros-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros__ubuntu_focal_amd64__binary/
[py-trees-ros-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-ros-build-status-melodic]: http://build.ros.org/job/Mbin_uB64__py_trees_ros__ubuntu_bionic_amd64__binary
[py-trees-ros-build-status-melodic-image]: http://build.ros.org/job/Mbin_uB64__py_trees_ros__ubuntu_bionic_amd64__binary/badge/icon?style=plastic
[py-trees-ros-build-status-noetic]: http://build.ros.org/job/Nbin_uF64__py_trees_ros__ubuntu_focal_amd64__binary
[py-trees-ros-build-status-noetic-image]: http://build.ros.org/job/Nbin_uF64__py_trees_ros__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-ros-docs-2.2.x]: http://py-trees-ros.readthedocs.io/en/release-2.2.x/
[py-trees-ros-docs-2.1.x]: http://py-trees-ros.readthedocs.io/en/release-2.1.x/
[py-trees-ros-docs-2.0.x]: http://py-trees-ros.readthedocs.io/en/release-2.0.x/
[py-trees-ros-docs-1.3.x]: http://py-trees-ros.readthedocs.io/en/release-1.3.x/
[py-trees-ros-docs-1.2.x]: http://py-trees-ros.readthedocs.io/en/release-1.2.x/
[py-trees-ros-docs-foxy-image]: http://img.shields.io/badge/py_trees_ros-foxy-brightgreen.svg?style=plastic
[py-trees-ros-docs-dashing-image]: http://img.shields.io/badge/py_trees_ros-dashing-brightgreen.svg?style=plastic
[py-trees-ros-docs-melodic]: http://docs.ros.org/melodic/api/py_trees_ros/html/
[py-trees-ros-docs-melodic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Mdoc__py_trees_ros__ubuntu_bionic_amd64.svg?label=docs&style=plastic
[py-trees-ros-docs-noetic]: http://docs.ros.org/noetic/api/py_trees_ros/html/
[py-trees-ros-docs-noetic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Ndoc__py_trees_ros__ubuntu_focal_amd64.svg?label=docs&style=plastic
[py-trees-ros-ros-index]: https://index.ros.org/p/py_trees_ros/github-splintered-reality-py_trees_ros
[py-trees-ros-sources-2.2.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/2.2.x
[py-trees-ros-sources-2.1.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/2.1.x
[py-trees-ros-sources-2.0.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/2.0.x
[py-trees-ros-sources-1.3.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/1.3.x
[py-trees-ros-sources-1.2.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/1.2.x
[py-trees-ros-sources-0.6.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/0.6.x
[py-trees-ros-sources-0.5.x]: https://github.com/splintered-reality/py_trees_ros/tree/release/0.5.x
[py-trees-ros-wiki]: http://wiki.ros.org/py_trees_ros
[py-trees-ros-tutorials-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_tutorials__ubuntu_focal_amd64__binary/
[py-trees-ros-tutorials-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_tutorials__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-ros-tutorials-docs-2.1.x]: http://py-trees-ros-tutorials.readthedocs.io/en/release-2.1.x/
[py-trees-ros-tutorials-docs-2.0.x]: http://py-trees-ros-tutorials.readthedocs.io/en/release-2.0.x/
[py-trees-ros-tutorials-docs-1.0.x]: http://py-trees-ros-tutorials.readthedocs.io/en/release-1.0.x/
[py-trees-ros-tutorials-sources-2.1.x]: https://github.com/splintered-reality/py_trees_ros_tutorials/tree/release/2.1.x
[py-trees-ros-tutorials-sources-2.0.x]: https://github.com/splintered-reality/py_trees_ros_tutorials/tree/release/2.0.x
[py-trees-ros-tutorials-sources-1.0.x]: https://github.com/splintered-reality/py_trees_ros_tutorials/tree/release/1.0.x
[py-trees-ros-tutorials-ros-index]: https://index.ros.org/p/py_trees_ros_tutorials/github-splintered-reality-py_trees_ros_tutorials
[py-trees-ros-tutorials-docs-foxy-image]: http://img.shields.io/badge/py_trees_ros_tutorials-foxy-brightgreen.svg?style=plastic
[py-trees-ros-tutorials-docs-dashing-image]: http://img.shields.io/badge/py_trees_ros_tutorials-dashing-brightgreen.svg?style=plastic
[py-trees-js-build-status-rolling]: https://build.ros2.org/job/Rbin_uJ64__py_trees_js__ubuntu_jammy_amd64__binary/
[py-trees-js-build-status-rolling-image]: https://build.ros2.org/job/Rbin_uJ64__py_trees_js__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-js-build-status-humble]: https://build.ros2.org/job/Hbin_uJ64__py_trees_js__ubuntu_jammy_amd64__binary/
[py-trees-js-build-status-humble-image]: https://build.ros2.org/job/Hbin_uJ64__py_trees_js__ubuntu_jammy_amd64__binary/badge/icon?style=plastic
[py-trees-js-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees_js__ubuntu_focal_amd64__binary/
[py-trees-js-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees_js__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-js-docs-0.6.x]: https://github.com/splintered-reality/py_trees_js/blob/release/0.6.x/README.md
[py-trees-js-sources-0.6.x]: https://github.com/splintered-reality/py_trees_js/tree/release/0.6.x
[py-trees-js-docs-0.5.x]: https://github.com/splintered-reality/py_trees_js/blob/release/0.5.x/README.md
[py-trees-js-sources-0.5.x]: https://github.com/splintered-reality/py_trees_js/tree/release/0.5.x
[py-trees-js-docs-0.4.x]: https://github.com/splintered-reality/py_trees_js/blob/release/0.4.x/README.md
[py-trees-js-sources-0.4.x]: https://github.com/splintered-reality/py_trees_js/tree/release/0.4.x
[py-trees-js-ros-index]: https://index.ros.org/p/py_trees_js/github-splintered-reality-py_trees_js
[py-trees-ros-viewer-build-status-foxy]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_viewer__ubuntu_focal_amd64__binary/
[py-trees-ros-viewer-build-status-foxy-image]: http://build.ros2.org/job/Fbin_uF64__py_trees_ros_viewer__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-ros-viewer-docs-0.2.x]: https://github.com/splintered-reality/py_trees_ros_viewer/blob/release/0.2.x/README.md
[py-trees-ros-viewer-docs-0.1.x]: https://github.com/splintered-reality/py_trees_ros_viewer/blob/release/0.1.x/README.md
[py-trees-ros-viewer-sources-0.2.x]: https://github.com/splintered-reality/py_trees_ros_viewer/tree/release/0.2.x
[py-trees-ros-viewer-sources-0.1.x]: https://github.com/splintered-reality/py_trees_ros_viewer/tree/release/0.1.x
[py-trees-ros-viewer-ros-index]: https://index.ros.org/p/py_trees_ros_viewer/github-splintered-reality-py_trees_ros_viewer
[py-trees-msgs-build-status-noetic]: http://build.ros.org/job/Nbin_uF64__py_trees_msgs__ubuntu_focal_amd64__binary
[py-trees-msgs-build-status-noetic-image]: http://build.ros.org/job/Nbin_uF64__py_trees_msgs__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[py-trees-msgs-build-status-melodic]: http://build.ros.org/job/Mbin_uB64__py_trees_msgs__ubuntu_bionic_amd64__binary
[py-trees-msgs-build-status-melodic-image]: http://build.ros.org/job/Mbin_uB64__py_trees_msgs__ubuntu_bionic_amd64__binary/badge/icon?style=plastic
[py-trees-msgs-docs-melodic]: http://docs.ros.org/melodic/api/py_trees_msgs/html/index-msg.html
[py-trees-msgs-docs-melodic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Mdoc__py_trees_msgs__ubuntu_bionic_amd64.svg?label=docs&style=plastic
[py-trees-msgs-docs-noetic]: http://docs.ros.org/noetic/api/py_trees_msgs/html/index-msg.html
[py-trees-msgs-docs-noetic-image]: https://img.shields.io/jenkins/s/http/build.ros.org/job/Ndoc__py_trees_msgs__ubuntu_focal_amd64.svg?label=docs&style=plastic
[py-trees-msgs-sources-kinetic]: https://github.com/splintered-reality/py_trees_msgs/tree/release/0.3.x
[py-trees-msgs-sources-melodic]: https://github.com/splintered-reality/py_trees_msgs/tree/release/0.3.x
[py-trees-msgs-sources-noetic]: https://github.com/splintered-reality/py_trees_msgs/tree/release/0.3.x
[py-trees-msgs-wiki]: http://wiki.ros.org/py_trees_msgs
[rqt-py-trees-build-status-melodic]: http://build.ros.org/job/Mbin_uB64__rqt_py_trees__ubuntu_bionic_amd64__binary
[rqt-py-trees-build-status-melodic-image]: http://build.ros.org/job/Mbin_uB64__rqt_py_trees__ubuntu_bionic_amd64__binary/badge/icon?style=plastic
[rqt-py-trees-build-status-noetic]: http://build.ros.org/job/Nbin_uF64__rqt_py_trees__ubuntu_focal_amd64__binary
[rqt-py-trees-build-status-noetic-image]: http://build.ros.org/job/Nbin_uF64__rqt_py_trees__ubuntu_focal_amd64__binary/badge/icon?style=plastic
[rqt-py-trees-sources-kinetic]: https://github.com/splintered-reality/rqt_py_trees/tree/release/0.3-kinetic
[rqt-py-trees-sources-melodic]: https://github.com/splintered-reality/rqt_py_trees/tree/release/0.3-melodic
[rqt-py-trees-sources-noetic]: https://github.com/splintered-reality/rqt_py_trees/tree/release/0.4.x
[rqt-py-trees-wiki]: http://wiki.ros.org/rqt_py_trees