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_ros和beluga_amcl包提供了现有 ROS 导航堆栈的直接替换方案。 - 通过 OpenVDB 支持 3D –
beluga_vdb扩展使得在体积图中运行粒子滤波变得可行,这对于无人机或足式机器人非常有用。
典型工作流程
- 将库添加到 你的 CMake 工作空间(支持 both Colcon 和 Bazel 构建)。
- 配置粒子滤波器,通过从核心包中选择运动和传感器模型。
- 使用
beluga_ros进行 ROS 封装,如果你需要 topic/service,或者在自定义 C++ 程序中运行独立滤波器。 - 启动
beluga_amcl节点(或你自己的节点)并使用与nav2_amcl参数格式一致的 YAML 文件。 - 验证 使用提供的系统测试或基准测试套件。
入门指南 – README 指向了在线文档网站 (https://ekumen-os.github.io/beluga) 以获取详细的构建说明、API 参考和示例启动文件。欢迎通过 CONTRIBUTING.md 指南进行贡献。
Beluga 是一个专注于 Monte Carlo Localization 的真实、生产级机器人库,而不是通用的 AI/LLM 项目。",
相关
- 项目
- 项目
- 项目
- 项目
- 项目