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_rosとbeluga_amclパッケージにより、既存のROSナビゲーションスタックへのドロップイン・リプレイスメントが可能なようになっています。 - OpenVDBによる3Dサポート –
beluga_vdb拡張機能により、ボリュームマップ内での粒子フィルタリングが可能です。これはドローンや脚式ロボットに有用です。
一般的なワークフロー
- ライブラリをCMakeワークスペースに追加(ColconとBazelの両方のビルドをサポートしています)。
- 粒子フィルタを構成、コアパッケージから移動モデルとセンサモデルを選択します。
beluga_rosを使用してROSでラップ、トピック/サービスが必要な場合は、beluga_rosを使用するか、スタンドアロンのフィルタリングをカスタム C++ プログラムで実行します。beluga_amclノード(または独自のノード)を起動、nav2_amclパラメータ形式を模倣したYAMLファイルを使用します。- 検証、提供されたシステムテストまたはベンチマークスイートを使用して検証します。
はじめに – READMEは、詳細なビルド手順、APIリファレンス、およびサンプル起動ファイルについて、オンラインドキュメントサイト (https://ekumen-os.github.io/beluga) を参照してください。貢献は CONTRIBUTING.md ガイドを通じて受け入れられています。
Belugaは、一般的なAI/LLMプロジェクトではなく、Monte Carlo Localizationに特化した本物の、プロダクショングレードのロボティクスライブラリです。",
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト