README
Beluga
Beluga is a ROS-agnostic C++17 library that provides implementations for Monte Carlo-based localization algorithms widely used in robotics applications. Its modularity allows users to compose solutions from reusable modules and to combine them with new ones to configure the MCL algorithm that best suits their needs.
Features
The current set of features includes:
Particle containers:
Support for Array-of-Structures and Structure-of-Arrays tuple containers
Composable range adaptor views, actions, and algorithms:
Multivariate normal distributions in SE(2) and SE(3) space
Multivariate uniform distributions in SE(2) compatible with occupancy grids
Multinomial resampling from a particle range
Selective resampling, on-motion resampling, and interval resampling policies
Support for sequential and parallel execution policies
Weighted mean and covariance statistics for pose estimation
Sensor models:
Likelihood field model
Beam model
Landmark-based models (using landmark position or bearing)
Motion models:
Differential drive model
Omnidirectional model
Documentation
Auto-generated Doxygen documentation can be found in https://ekumen-os.github.io/beluga/.
Dependencies
Beluga is built on top of the following open source libraries:
Eigen: A well-known C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
Sophus: A C++ implementation of Lie groups using Eigen.
Range: The basis library for C++20’s
std::ranges
.libciabatta: A composable mixin support library.