erl_path_planning is a C++ library providing a collection of path planning algorithms for robotics applications.
- Multiple Planning Algorithms: A*, AMRA*, Hybrid A*, and more
- LTL Mission Planning: Support for Linear Temporal Logic specifications in 2D and 3D
- Flexible Heuristics: Customizable heuristic functions including LLM-based scene graph heuristics
- Kinodynamic Planning: Dubins paths and Reeds-Shepp curves for car-like robots
- Multi-Resolution Search: AMRA* with anytime multi-resolution capabilities
- Python Bindings: Full Python API for all major algorithms
- A*: Classic optimal graph search algorithm
- AMRA*: Anytime Multi-Resolution Multi-Heuristic A* - efficient anytime planning with multiple heuristics and resolutions
- Hybrid A*: Grid-based planner with continuous state space for non-holonomic vehicles
- Dubins Path: Shortest path for car-like robots with minimum turning radius (forward only)
- Reeds-Shepp Path: Shortest path for car-like robots with minimum turning radius (forward and backward)
- Heuristic Base: Base class for custom heuristics
- LTL 2D Heuristic: Heuristic for LTL-based planning in 2D environments
- LTL 3D Heuristic: Heuristic for LTL-based planning in 3D environments
- LLM Scene Graph Heuristic: AI-powered heuristic using large language models and scene understanding
- Planning Output: Data structures for path and planning results
- Search Planning Interface: Common interface for search-based planners
- CMake 3.24 or higher
- A C++17 compatible compiler
- Python 3.8+ (for Python bindings)
mkdir -p <your_workspace>/src && \
vcs import --input https://raw.githubusercontent.com/ExistentialRobotics/erl_path_planning/refs/heads/main/erl_path_planning.repos <your_workspace>/src- erl_cmake_tools
- erl_common
- erl_env
- erl_geometry
- Spot (optional, for LTL planning)
# Ubuntu 20.04
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_common/refs/heads/main/scripts/setup_ubuntu_20.04.bash | bash
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_geometry/refs/heads/main/scripts/setup_ubuntu_20.04.bash | bash
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_env/refs/heads/main/scripts/setup_ubuntu_20.04.bash | bash
# Ubuntu 22.04, 24.04
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_common/refs/heads/main/scripts/setup_ubuntu_22.04_24.04.bash | bash
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_geometry/refs/heads/main/scripts/setup_ubuntu_22.04_24.04.bash | bash
wget -qO - https://raw.githubusercontent.com/ExistentialRobotics/erl_env/refs/heads/main/scripts/setup_ubuntu_22.04_24.04.bash | bash
# Arch Linux (for Spot LTL support)
paru -S spotThe easiest way to get started is to use the provided Docker files, which contains all dependencies.
cd <your_workspace>
touch CMakeLists.txtAdd the following lines to your CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
project(<your_project_name>)
add_subdirectory(src/erl_cmake_tools)
add_subdirectory(src/erl_common)
add_subdirectory(src/erl_covariance)
add_subdirectory(src/erl_geometry)
add_subdirectory(src/erl_env)
add_subdirectory(src/erl_path_planning)Then run the following commands:
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j`nproc`cd <your_workspace>
source /opt/ros/<distro>/setup.bash
# for ROS1
catkin build erl_path_planning
source devel/setup.bash
# for ROS2
colcon build --packages-up-to erl_path_planning
source install/setup.bashSee also 🚪erl_path_planning_ros for ROS nodes and integration.
- Make sure you have installed all dependencies.
- Make sure you have the correct Python environment activated,
pipenvis recommended.
cd <your_workspace>
for package in erl_cmake_tools erl_common erl_covariance erl_geometry erl_env erl_path_planning; do
cd src/$package
pip install . --verbose --no-build-isolation
cd ../..
done- AMRA*: Detailed documentation on AMRA* algorithm with visualization examples and benchmarks
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you use this library in your research, please cite:
@software{erl_path_planning,
author = {Dai, Zhirui and Existential Robotics Lab},
title = {erl_path_planning: A C++ Path Planning Library},
url = {https://github.com/ExistentialRobotics/erl_path_planning},
year = {2025}
}For AMRA* specifically:
@inproceedings{srivastava2021amra,
title={AMRA*: Anytime Multi-Resolution Multi-Heuristic A*},
author={Srivastava, Dhruv and Likhachev, Maxim},
booktitle={2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year={2021}
}- AMRA* implementation based on the original work by Dhruv Srivastava
- Dubins and Reeds-Shepp path implementations inspired by classical motion planning literature
- erl_path_planning_ros: ROS1/ROS2 integration for this library
- erl_geometry: Geometry processing library
- erl_env: Environment representation library