nanoplan is a header-only C++11 library for search-based robot planning. The primary design goals are correctness, ease-of-use, and efficiency (in that order). nanoplan currently supports Dijkstra, A*, Lifelong Planning A*, and (Coming Soon!) D* Lite.
The demo included with nanoplan generates a 2d maze and searches for a path from the top-left to the bottom-right. New obstacles appear with each iteration. Depending on the search algorithm you select, replanning is much more efficient than planning from scratch.
git clone github.com/jsford/nanoplan/
cd nanoplan
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
sudo make install
Use CMake and find_package to consume an installed version of nanoplan.
project("nanoplan-example")
find_package(nanoplan CONFIG REQUIRED)
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} nanoplan::nanoplan)
Alternatively, you can use add_subdirectory to include nanoplan in your project without installing it to the system.
project("nanoplan-example")
add_subdirectory(nanoplan)
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} nanoplan::nanoplan)
You can always grab the entire include/nanoplan/ directory and drop it into your project.
Thank you to Carnegie Mellon's Search Based Planning Lab and Professor Maxim Likhachev for inventing and publishing many of the algorithms implemented in nanoplan.
The nanoplan logo is based on "Robot thinker", original art licensed from studiostoks.