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 👈.
AutoAPMS is designed for Linux. The following ROS 2 versions are supported:
ROS 2 Version | OS | Status |
---|---|---|
Humble Hawksbill | Ubuntu 22.04 (Jammy Jellyfish) |
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
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
Aside from the core ROS 2 packages, this repository builds upon
-
BehaviorTree.CPP by Davide Faconti.
-
pyrobosim by Sebastian Castro.
Thanks for all the great work from the maintainers and contributors of the above mentioned projects.