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は、**&extensible C++17 library&であり、Monte Carlo Localization (MCL) ファミリーの粒子フィルタアルゴリズムを実装しています。&ROS-agnostic&**として設計されており、オプションのROSバインディングを備え、信頼性の高い自己位置推定が必要なロボット(例:TurtleBot 2, Andino)を対象としています。コードベースは徹底的にテストされており、ベンチマークツールも含まれています。

主要コンポーネント

Package Role
beluga コア、ROSに依存しないライブラリ – 汎用的な粒子フィルタフレームワークとユーティリティを提供します。
beluga_ros 軽量ROSラッパー – ROSノードがコアライブラリを使用できるようにします(メッセージ変換、パラメータ管理)。
beluga_amcl 人気のある nav2_amcl/amcl パッケージのインターフェースを模倣し、移行を容易にする、すぐに使えるROSノード/コンポーネントです。
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による3Dサポートbeluga_vdb 拡張機能により、ボリュームマップ内での粒子フィルタリングが可能です。これはドローンや脚式ロボットに有用です。

一般的なワークフロー

  1. ライブラリをCMakeワークスペースに追加(ColconとBazelの両方のビルドをサポートしています)。
  2. 粒子フィルタを構成、コアパッケージから移動モデルとセンサモデルを選択します。
  3. beluga_ros を使用してROSでラップ、トピック/サービスが必要な場合は、beluga_ros を使用するか、スタンドアロンのフィルタリングをカスタム C++ プログラムで実行します。
  4. beluga_amcl ノード(または独自のノード)を起動nav2_amcl パラメータ形式を模倣したYAMLファイルを使用します。
  5. 検証、提供されたシステムテストまたはベンチマークスイートを使用して検証します。

はじめに – READMEは、詳細なビルド手順、APIリファレンス、およびサンプル起動ファイルについて、オンラインドキュメントサイト (https://ekumen-os.github.io/beluga) を参照してください。貢献は CONTRIBUTING.md ガイドを通じて受け入れられています。


Belugaは、一般的なAI/LLMプロジェクトではなく、Monte Carlo Localizationに特化した本物の、プロダクショングレードのロボティクスライブラリです。",

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト