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 Mission Safeguarding for Robotics

Website DOI Release humble

💡 Motivation and Features

AutoAPMS is a ROS 2 software development framework offering convenient methods and tools to create autonomous robotic missions. It can be applied in any field of robotics as long as the corresponding systems are running ROS 2. Additionally, other popular middlewares like PX4 are supported as well if they offer a possibility for bridging internal messages to ROS 2 topics.

Key features of the packages in this repository are

  • Generic ROS 2 node design for implementing real-time tasks
  • Modular, plugin-based approach for implementing robotic skills/actions
  • Standardized, highly configurable behavior tree executor
  • Powerful behavior tree builder C++ API
  • Automated contingency and emergency management system
  • Useful command line tools for running and orchestrating missions

All of these features reduce the amount of boilerplate code required for implementing functional robotic missions and make the complex software development process significantly easier, faster and less error prone.

Tip

For more information and an extensive how-to guides, feel encouraged to visit the 👉 User Guide 👈.

🚀 Setup and Demonstration

AutoAPMS is designed for Linux. The following ROS 2 versions are supported:

ROS 2 Version OS Status
Humble Hawksbill Ubuntu 22.04 (Jammy Jellyfish) ROS 2 Humble Test

The following installation guide helps you getting started with AutoAPMS by building the source code yourself. Finally, you may test your installation by running an example.

Firstly, you have to 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)

Afterwards, 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

Then, build and install all of the source packages up to auto_apms_examples.

Note

We highly recommend building your workspace using the symlink-install option since AutoAPMS extensively utilizes XML and YAML resources. This option installs symbolic links to those non-compiled source files meaning that you don't need to rebuild again and again when you're for example tweaking a behavior tree document file. Instead, your changes take effect immediately and you just need to restart your application.

source /opt/ros/humble/setup.bash
colcon build --packages-up-to auto_apms_examples --symlink-install

Congratulations, you've already successfully installed all necessary resources. You may now launch a lightweight simulation that applies the concepts offered by AutoAPMS. This should give you an idea of what's possible with this framework.

The basic robot behavior can be observed by executing

source install/setup.bash
ros2 launch auto_apms_examples 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.

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, you simply have to specify the following launch argument.

source install/setup.bash
ros2 launch auto_apms_examples 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

🌟 Credits

Aside from the core ROS 2 packages, this repository builds upon

Thanks for all the great work from the maintainers and contributors of the above mentioned projects.