Hello everyone,
I’d like to share frontier_exploration_ros2, a modern open-source C++ project for autonomous exploration with ROS 2 and Nav2.
The project started around traditional WFD-style frontier exploration, but has grown into a more complete exploration framework focused on improving frontier quality, target ordering, navigation efficiency, and practical ROS 2 integration. Using new methods such as Dynamic Programming.
The exploration logic is separated into a C++ library, so it can also be integrated into different stacks instead of requiring the provided ROS 2 node.
The package has been tested with:
-
ROS 2 Jazzy / Ubuntu 24.04
-
ROS 2 Humble / Ubuntu 22.04
-
Nav2
-
SLAM Toolbox
-
Gazebo Harmonic
-
TurtleBot3 Waffle Pi
I also created a separate simulation and benchmark environment for comparing different projects under the same scenarios. Tests include maze-like indoor environments as well as a larger warehouse environment. Docker is supported.
For example, in one of the larger benchmark scenarios, our system reduced the traveled distance from 338.61 m to 263.72 m, and exploration time from 09:47 minutes to 07:22 minutes compared to m_explore_ros2.
I went deep on this project because I wanted to make it the best it could be. Existing projects failed at even basic discovery tasks. So I decided to build a complete solution from scratch and share it with the community. Took my months but the results are lovely.
New algorithmic approaches and optimization techniques have developed on the road. I highly recommend taking a look at the README for the details.
Github repo: mertgulerx/frontier_exploration_ros2
Reddit thread: Reddit

