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 2.
Beluga – 机器人用蒙特卡洛定位
是什么 – Beluga 是一个 C++17 库,实现了蒙特卡洛定位(MCL)算法家族,这是许多移动机器人导航系统用于在地图上估计机器人位姿的核心技术。代码设计为与 ROS 无关,但本仓库还提供了 ROS 特定的包装器,可直接将 Beluga 节点集成到基于 ROS 的机器人系统中。
核心组件
| 包 | 作用 |
|---|---|
beluga |
核心,与 ROS 无关的粒子滤波库。 |
beluga_ros |
轻量胶水层,将 ROS 消息/服务转换为核心库。 |
beluga_amcl |
可直接运行的 ROS 节点/组件,行为模仿经典 nav2_amcl/amcl 节点,但底层使用 Beluga。 |
beluga_example |
启动文件和微型演示程序,展示如何在 TurtleBot 2 或 Andino 机器人上启动 AMCL 节点。 |
beluga_system_tests |
集成测试套件,启动完整的 ROS 系统以验证正确性。 |
beluye_vdb |
可选扩展,将 OpenVDB 集成到 Beluga 中,支持 3D 体素定位。 |
为何重要 – 传统 AMCL 实现与 ROS 紧密耦合,难以扩展。Beluga 的设计将算法核心与任何中间件分离,使其更容易:
- 替换自定义运动模型或传感器模型,
- 在非 ROS 项目中复用该库(例如,仿真、嵌入式系统),
- 无需引入完整 ROS 堆栈即可运行自动化基准测试。
如何使用
- 添加库 – 将
beluga包添加到你的 CMake/colcon 或 Bazel 工作区。 - 选择包装器 – 如果你已在使用 ROS 1/2,依赖
beluga_ros或beluga_amcl以获得一个发布/tf并订阅激光扫描、里程计等的节点。 - 配置 – 该节点读取与标准
amcl相同的参数(地图、粒子数量、重采样阈值等),因此可几乎无修改地集成到现有 Nav2 启动文件中。 - 扩展 – 通过继承
beluga中的抽象接口来实现自定义运动模型或传感器模型;粒子滤波其余部分保持不变。 - 基准测试 – 使用内置基准测试脚本比较不同配置(粒子数量、重采样策略等),并防止回归问题。
目标用户 – 需要可靠、充分测试的粒子滤波定位引擎的机器人开发者,特别是希望在算法代码与 ROS 中间件之间实现清晰分离,或为定制硬件(如基于 Raspberry Pi 的机器人)构建定位功能的人。
文档与社区 – 完整的 API 文档托管于 https://ekumen-os.github.io/beluga,CI 旗帜显示在 Colcon 和 Bazel 上的持续测试状态,项目遵循 Apache-2.0 许可证,鼓励商业与学术使用。
Beluga 不是机器学习模型;它是一种经典的概率机器人算法,但明确位于机器人学/具身智能领域。
相关
- 项目
- 项目
- 项目
- 项目
- 项目