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 蒙地卡羅定位函式庫

什麼是 Beluga – Beluga 是一個**&extensible C++17 library&,實作了蒙地卡羅定位 (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)與程式碼覆蓋率標籤顯示了對回歸安全性(regression safety)的高度關注。
  • 開箱即用的基準測試beluga_benchmark 套件讓開發者可以量化不同配置下的延遲、記憶體使用量與精確度。
  • ROS 相容性 – 雖然核心是獨立於 ROS 的,但 beluga_rosbeluga_amcl 套件提供了現有 ROS 導航堆疊的直接替換方案。
  • 透過 OpenVDB 支援 3Dbeluga_vdb 擴充功能使得在體積圖中執行粒子濾波器變得可行,這對無人機或足式機器人非常有用。

典型工作流程

  1. 將函式庫加入 您的 CMake 工作空間(支援 Colcon 與 Bazel 建置)。
  2. 設定粒子濾波器,從核心套件中選擇運動模型與感測器模型。
  3. 使用 beluga_ros 進行 ROS 封裝,如果您需要主題/服務,或者在自定義的 C++ 程式中執行獨立的濾波器。
  4. 啟動 beluga_amcl 節點(或您自己的節點)並使用與 nav2_amcl 參數格式相容的 YAML 檔。
  5. 驗證 使用提供的系統測試或基準測試套件。

入門指南 – README 指向了線上文件網站 (https://ekumen-os.github.io/beluga) 以獲取詳細的建置指令、API 參考與範例啟動檔。歡迎透過 CONTRIBUTING.md 指南進行貢獻。


Beluga 是專注於蒙地卡羅定位的真實、生產等級的機器人函式庫,而非通用的 AI/LLM 專案。",

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案