Beluga
A general implementation of Monte Carlo Localization (MCL) algorithms written in C++17, and a ROS package that can be used in ROS 1 and ROS 2.
Install / Use
/learn @Ekumen-OS/BelugaREADME
[!TIP] For the latest stable version of our codebase, please refer to the release branch. If you are interested in ongoing development and cutting-edge features, the main branch is the place to be.
🌐 Overview
Beluga is an extensible C++17 library with a ground-up implementation of the Monte Carlo Localization (MCL) family of estimation algorithms featuring:
- A modular design based on orthogonal components.
- Emphasis on the prevention of regressions and facilitation of code improvements through test coverage.
- Semi-automated benchmarks that can be used to validate different configurations.
https://github.com/user-attachments/assets/59bca7ea-fe78-4460-b058-96a5c75d09ec
<p align="center"><i><b>Beluga AMCL</b> running on a <b>Turtlebot 2</b> robot (Raspberry Pi 4B)</i></p>https://github.com/Ekumen-OS/beluga/assets/33042669/98bda0ee-a633-4e35-8743-72a9ab30b494
<p align="center"><i><b>Beluga AMCL</b> running on an <b>Andino</b> robot (Raspberry Pi 4B), go to <a href="https://github.com/Ekumen-OS/andino">Ekumen-OS/andino</a> for more details!</i></p>📦 Packages
This repository contains the following packages:
| Package | Description |
|----------------------------------------------| ------------------------------------------------------------------------------------------------------------------------|
| beluga | A ROS-agnostic extensible library to implement algorithms based on particle filters. |
| beluga_ros | A ROS library, providing utilities to interface ROS with Beluga. |
| beluga_amcl | A ROS wrapper, providing an executable node and component (or nodelet).<br> It provides interface parity with nav2_amcl (and amcl). |
| beluga_example | Example launch files, showing how to run Beluga-based nodes. |
| beluga_benchmark | Scripts to benchmark, profile and also compare Beluga with other MCL implementations. |
| beluga_system_tests | System integration tests for Beluga. |
| beluga_vdb | A library extension for beluga facilitating the use of OpenVDB for 3D localization. |
⚙️ First Steps
- Go check the project documentation.
- Read the contributing guidelines.
