This PR introduces pywavemap, a Python API for the wavemap library.
Type of change
[x] New feature
Detailed summary
This PR extends wavemap 2.0 with a full-fledged Python API, enabling the creation, reading, and writing of map files. Users can configure and run modular mapping pipelines directly in Python. The API includes fast, batched map accessors optimized for PyTorch and other machine learning frameworks. Additionally, the CI pipeline has been rewritten for improved testing and easier future extensions.
New features
Add a Python API for wavemap supporting
Creating maps from measurements
Storing and loading maps to/from disk
Methods to query and interpolate the map
Including accelerated, PyTorch-friendly batch accessors
Documentation on how to install and use the Python API
Improvements
CMake
Add CMake options to support embedding the C++ library in a Python pip pkg
Improve auto-fetching of glog, switch to a version with better CMake support
C++
Extend map interpolation utils
Improve consistency between chunked and regular octree map interfaces
Improve consistency between Pointcloud and Image data structures
Add method to parse TypeSelector types directly from std::strings
Documentation
Improve C++ library installation instructions
Improve and extend C++ library usage tutorial
Add doxygen annotations for more C++ API classes and methods
A full rewrite of the CI pipeline
Include the Python API
Reintroduce the thread sanitizer
Also test on Ubuntu 22.04 and 24.04, in addition to 20.04
Clean up and simplify all workflows
Migrate from self-hosted to public GitHub Actions Runners
Bug fixes
Warn user and ignore range images of wrong dimensions to avoid segfaults
Avoid out-of-bounds access bug in Haar coefficients print method
Remove usage of deprecated STL types (avoid warnings from new GCC versions)
Explicitly forbid shallow copying of wavemap maps to avoid nanobind errors
Set glog logging level directly, not with gflags lib (might be unavailable)
Testing
Unit tests for pywavemap have been implemented using pytest.
The CI pipeline has been extended to automatically build and test pywavemap, alongside other major improvements (see above).
Checklist:
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] Any required changes in dependencies have been committed and pushed
Description
This PR introduces pywavemap, a Python API for the wavemap library.
Type of change
Detailed summary
This PR extends wavemap 2.0 with a full-fledged Python API, enabling the creation, reading, and writing of map files. Users can configure and run modular mapping pipelines directly in Python. The API includes fast, batched map accessors optimized for PyTorch and other machine learning frameworks. Additionally, the CI pipeline has been rewritten for improved testing and easier future extensions.
Testing
Unit tests for pywavemap have been implemented using pytest. The CI pipeline has been extended to automatically build and test pywavemap, alongside other major improvements (see above).
Checklist: