Ekumen-OS/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.

Beluga – C++17 Monte Carlo Localization 库

什么是 Beluga – Beluga 是一个**&extensible C++17 library&,实现了 Monte Carlo Localization (MCL) 系列的粒子滤波算法。它的设计是&ROS-agnostic&**,提供可选的 ROS 绑定,并针对需要可靠位姿估计的机器人(例如 TurtleBot 2, Andino)进行开发。代码库经过严格测试,并包含基准测试工具。

关键组件

Package Role
beluga 核心,与 ROS 无关的库 – 提供通用的粒子滤波框架与工具。
beluga_ros 薄层 ROS 封装 – 让 ROS 节点可以使用核心库(消息转换、参数处理)。
beluga_amcl 即插即用的 ROS 节点/组件,其接口与流行的 nav2_amcl/amcl 包进行镜像,使得迁移非常容易。
beluga_example 展示如何在机器人上启动基于 Beluga 的 AMCL 节点的示例启动文件。
beluga_benchmark 用于性能分析和将 Beluga 与其他 MCL 实现进行比较的脚本。
beluga_system_tests 在模拟或真实硬件上运行的集成测试。
beluga_vdb 可选的扩展,将 OpenVDB 接入库中,实现 3D 体素化定位。

为什么重要

  • 模组化设计 – 算法是由正交组件(运动模型、传感器模型、重采样等)构建的,因此你可以更换组件而不必重写整个滤波器。
  • 测试驱动开发 – CI 流水线(Colcon, Bazel)和代码覆盖率徽章显示了对回归安全性的高度关注。
  • 开箱即用的基准测试beluga_benchmark 包让开发者可以量化不同配置下的延迟、内存使用和精度。
  • ROS 兼容性 – 虽然核心是独立于 ROS 的,但 beluga_rosbeluga_amcl 包提供了现有 ROS 导航堆栈的直接替换方案。
  • 通过 OpenVDB 支持 3Dbeluga_vdb 扩展使得在体积图中运行粒子滤波变得可行,这对于无人机或足式机器人非常有用。

典型工作流程

  1. 将库添加到 你的 CMake 工作空间(支持 both Colcon 和 Bazel 构建)。
  2. 配置粒子滤波器,通过从核心包中选择运动和传感器模型。
  3. 使用 beluga_ros 进行 ROS 封装,如果你需要 topic/service,或者在自定义 C++ 程序中运行独立滤波器。
  4. 启动 beluga_amcl 节点(或你自己的节点)并使用与 nav2_amcl 参数格式一致的 YAML 文件。
  5. 验证 使用提供的系统测试或基准测试套件。

入门指南 – README 指向了在线文档网站 (https://ekumen-os.github.io/beluga) 以获取详细的构建说明、API 参考和示例启动文件。欢迎通过 CONTRIBUTING.md 指南进行贡献。


Beluga 是一个专注于 Monte Carlo Localization 的真实、生产级机器人库,而不是通用的 AI/LLM 项目。",

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目