Skip to content

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

License

Notifications You must be signed in to change notification settings

AutoAPMS/auto-apms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

309 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

βš™οΈ AutoAPMS - Streamlining Behaviors in ROS 2

Docs Ask DeepWiki DOI

jazzy kilted rolling

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.

Note

Currently we support Linux only!.

✨ 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

  • Abstractions for PX4 Autopilot available with auto-apms-px4

  • Comprehensive user guide and API documentation

πŸš€ Getting Started

The following installation guide helps you getting started with AutoAPMS.

  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
  4. 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

Check out the demo using pyrobosim

We provide a guide for running a cool visual demonstration 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 Jazzy ROS 2 Kilted ROS 2 Rolling
Build Status Build Status Build Status

Source Build

Package ROS 2 Jazzy ROS 2 Kilted ROS 2 Rolling
auto_apms_interfaces Build Status Build Status Build Status
auto_apms_util Build Status Build Status Build Status
auto_apms_behavior_tree_core Build Status Build Status Build Status
auto_apms_behavior_tree Build Status Build Status Build Status
auto_apms_ros2behavior Build Status Build Status Build Status
auto_apms_mission Build Status Build Status Build Status
auto_apms_examples Build Status Build Status Build Status

Binary Build

AMD64

Package ROS 2 Jazzy ROS 2 Kilted ROS 2 Rolling
auto_apms_interfaces Build Status Build Status Build Status
auto_apms_util Build Status Build Status Build Status
auto_apms_behavior_tree_core Build Status Build Status Build Status
auto_apms_behavior_tree Build Status Build Status Build Status
auto_apms_ros2behavior Build Status Build Status Build Status
auto_apms_mission Build Status Build Status Build Status
auto_apms_examples Build Status Build Status Build Status

ARM64

Package ROS 2 Jazzy ROS 2 Kilted ROS 2 Rolling
auto_apms_interfaces Build Status Build Status Build Status
auto_apms_util Build Status Build Status Build Status
auto_apms_behavior_tree_core Build Status Build Status Build Status
auto_apms_behavior_tree Build Status Build Status Build Status
auto_apms_ros2behavior Build Status Build Status Build Status
auto_apms_mission Build Status Build Status Build Status
auto_apms_examples Build Status Build Status Build Status

RHEL 9 x86_64

Package ROS 2 Jazzy ROS 2 Kilted ROS 2 Rolling
auto_apms_interfaces Build Status Build Status Build Status
auto_apms_util Build Status Build Status Build Status
auto_apms_behavior_tree_core Build Status Build Status Build Status
auto_apms_behavior_tree Build Status Build Status Build Status
auto_apms_ros2behavior Build Status Build Status Build Status
auto_apms_mission Build Status Build Status Build Status
auto_apms_examples Build Status Build Status Build 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! πŸš€