Thanks to visit codestin.com
Credit goes to github.com

Skip to content

robin-mueller/auto-apms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Automated Action Planning and Management System

Docs Ask DeepWiki DOI Release

ROS 2 Build & Test
Jazzy Jalisco Jazzy
Kilted Kaiju Kilted
Rolling Ridley Rolling

✨ Streamlining Behaviors in ROS 2

auto-apms-gif

Start leveraging the advantages of Behavior Trees 🌳 fully integrated with ROS 2 πŸ€–

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

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

There are plenty of ROS 2 packages which provide an implementation for behavior trees. AutoAPMS adopts BehaviorTree.CPP, the most popular one when it comes to C++, and embeds it into the ROS 2 ecosystem so that developers have a much easier time writing custom behaviors and distributing them among robots. 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/robin-mueller/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

Finally, you may as well run a cool visual demonstration of what's possible with this framework.

  1. Install dependencies and build package auto_apms_simulation

    # Python packages for simulation (not all are available with rosdep)
    python3 -m pip install -r src/auto-apms/auto_apms_simulation/requirements.txt
    colcon build --packages-up-to auto_apms_simulation --symlink-install
  2. Run the less intelligent behavior first

    source install/setup.bash
    ros2 launch auto_apms_simulation pyrobosim_hogwarts_launch.py
    # Press Ctrl+C to quit

    The actions of each robot you've seen are executed using behavior trees. This functionality is provided by the auto_apms_behavior_tree package. However, each robot is acting independently and they are not aware of their environment. Yet.

  3. Now, we want to make the robots more intelligent and allow them to dynamically adjust their behavior when they encounter other robots inside one of the hallways. This is realized by implementing fallback mechanisms introduced by the auto_apms_mission package. To achieve that, add a launch argument

    source install/setup.bash
    ros2 launch auto_apms_simulation pyrobosim_hogwarts_launch.py mission:=true
    # Press Ctrl+C to quit

    The robots dynamically decide to retreat and wait until the hallway they are about to cross is not occupied anymore. They basically monitor if a certain event occurs and initialize a corresponding sequence of action if applicable. With this, we effectively introduced automatically orchestrated reactive behaviors.

    demo.mp4

πŸŽ“ 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

πŸ™ 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

Streamlined behavior development and automated action management for ROS 2.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •