Skip to content

Repository files navigation

⚙️ AutoAPMS - Streamlining Behaviors in ROS 2

DocsAsk DeepWikiDOI

jazzykiltedrolling

auto-apms-gif

autoapms-hierarchy

Start leveraging the advantages of Behavior Trees 🌳 fully integrated with ROS 2 🤖

AutoAPMS (Automated Action Planning and Management System) is a heavily extensible development framework for behavior-based ROS 2 applications. It provides a highly modular integration of behavior trees, implements a powerful execution engine and offers convenient CLI tooling for deploying behaviors with ease.

This project adopts the behavior tree implementation provided by BehaviorTree.CPP and embeds it into the ROS 2 ecosystem so that developers have a much easier time writing custom behaviors and distributing them among robots.

The intention of this project is to make it significantly more user-friendly and less error prone to develop autonomous robotics with behavior trees. The core packages are written in C++ and a supplementary Python API exposes high-level features for scripting.

✨ Highlights

Here are some of the most prominent features offered by this repository:

  • Convenient resource management using ament_cmake and ament_index

  • Inherently extensible due to plugin-based design

  • Flexible and highly configurable behavior execution engine

  • Powerful C++ behavior tree builder API (a supplement to BehaviorTree.CPP)

  • High-level node manifests for registering node plugins without writing a single line of code

  • Support for custom behavior definitions and tree builder algorithms

  • ros2 behavior command extending the ROS2 CLI for behavior management

  • Comprehensive User Guide and API Docs

  • Web-based behavior tree editor and deployment tool AutoAPMS Studio

🚀 Getting Started

The following installation guide helps you getting started with AutoAPMS.

Recommended: Install debian packages

Core API

sudo apt install ros-$ROS_DISTRO-auto-apms-behavior-tree-core

Standard Nodes & Behavior Executor

sudo apt install ros-$ROS_DISTRO-auto-apms-behavior-tree

CLI Tooling

sudo apt install ros-$ROS_DISTRO-auto-apms-ros2behavior

Examples

sudo apt install ros-$ROS_DISTRO-auto-apms-examples
Alternative: Build from source
  1. Create a ROS 2 workspace and clone this repository

    mkdir ros2_ws &&cd ros2_ws
    (mkdir src &&cd src && git clone https://github.com/autoapms/auto-apms.git)
  2. Install all required dependencies. We assume that you already installed ROS 2 on your system

    rosdep init # Skip this if rosdep has already been initialized
    rosdep update
    rosdep install --from-paths src --ignore-src -y
  3. Build and install all packages required for auto_apms_examples

    colcon build --packages-up-to auto_apms_examples --symlink-install

Try it out

Run your first behavior using ros2 behavior. This is an extension of the ROS 2 CLI introduced by the auto_apms_ros2behavior package

source install/setup.bash
ros2 behavior run auto_apms_examples::demo::HelloWorld --blackboard name:=Turtle

Or check out the demo using pyrobosim on complex behaviors created with AutoAPMS in the auto_apms_simulation repository.

🎓 Documentation

Make sure to visit the User Guide for tutorials and best practices when writing software using AutoAPMS.

We also offer an extensive API Documentation which is created using Doxygen >= 1.10. To generate the documentation run the following from the repository's root:

doxygen doc/Doxyfile

🔨 ROS 2 Build Farm Status

Repository Devel Build

ROS 2 JazzyROS 2 KiltedROS 2 Rolling
Build StatusBuild StatusBuild Status

Source Build

PackageROS 2 JazzyROS 2 KiltedROS 2 Rolling
auto_apms_interfacesBuild StatusBuild StatusBuild Status
auto_apms_utilBuild StatusBuild StatusBuild Status
auto_apms_behavior_tree_coreBuild StatusBuild StatusBuild Status
auto_apms_behavior_treeBuild StatusBuild StatusBuild Status
auto_apms_ros2behaviorBuild StatusBuild StatusBuild Status
auto_apms_missionBuild StatusBuild StatusBuild Status
auto_apms_examplesBuild StatusBuild StatusBuild Status

Binary Build

AMD64

PackageROS 2 JazzyROS 2 KiltedROS 2 Rolling
auto_apms_interfacesBuild StatusBuild StatusBuild Status
auto_apms_utilBuild StatusBuild StatusBuild Status
auto_apms_behavior_tree_coreBuild StatusBuild StatusBuild Status
auto_apms_behavior_treeBuild StatusBuild StatusBuild Status
auto_apms_ros2behaviorBuild StatusBuild StatusBuild Status
auto_apms_missionBuild StatusBuild StatusBuild Status
auto_apms_examplesBuild StatusBuild StatusBuild Status

ARM64

PackageROS 2 JazzyROS 2 KiltedROS 2 Rolling
auto_apms_interfacesBuild StatusBuild StatusBuild Status
auto_apms_utilBuild StatusBuild StatusBuild Status
auto_apms_behavior_tree_coreBuild StatusBuild StatusBuild Status
auto_apms_behavior_treeBuild StatusBuild StatusBuild Status
auto_apms_ros2behaviorBuild StatusBuild StatusBuild Status
auto_apms_missionBuild StatusBuild StatusBuild Status
auto_apms_examplesBuild StatusBuild StatusBuild Status

RHEL 9 x86_64

PackageROS 2 JazzyROS 2 KiltedROS 2 Rolling
auto_apms_interfacesBuild StatusBuild StatusBuild Status
auto_apms_utilBuild StatusBuild StatusBuild Status
auto_apms_behavior_tree_coreBuild StatusBuild StatusBuild Status
auto_apms_behavior_treeBuild StatusBuild StatusBuild Status
auto_apms_ros2behaviorBuild StatusBuild StatusBuild Status
auto_apms_missionBuild StatusBuild StatusBuild Status
auto_apms_examplesBuild StatusBuild StatusBuild Status

⭐ Star History

Star History Chart

🙏 Acknowledgements

This repository builds on:

Special thanks to the maintainers of these projects. It was their contributions to the robotic community that made AutoAPMS possible in the first place! 🚀

About

A versatile framework for developing robot behaviors using behavior trees in ROS 2.

Topics

Resources

Contributing

Stars

101 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages