jlblancoc/nanoflann
nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees
何を解決するか
nanoflann は、多次元データセットにおける高速な最近傍検索を目的とした高性能C++ライブラリです。従来のFLANNのようなライブラリに見られるオーバーヘッドやメモリ非効率性を解消するために、仮想メソッドのペナルティや不要なデータ複製を回避するヘッダーオンリー実装を提供しています。
動作方法
このライブラリは、ユークリッド空間(R2、R3)、2次元回転群(SO2)、3次元回転群(SO3)など、さまざまなトポロジーにわたるデータポイントを整理するためにKDツリーを構築します。カーリアスリコッキングテンプレートパターン(CRTP)とインライン化されたメソッドを組み合わせることで、実行速度を最大化しています。メモリ節約のため、アダプターインターフェースを採用しており、ユーザーの既存データに直接アクセスするため、独自の行列にデータ全体をコピーする必要がありません。
対象ユーザー
点群、ロボティクス、多次元データセットを扱うC++開発者で、非常に高速かつスレッドセーフな最近傍検索を必要とする方々に適しています。
特徴
- ヘッダーオンリー:コンパイルやインストール不要。ヘッダーファイルをインクルードするだけ。
- メモリ効率良好:アダプターを使用してデータをインプレースでアクセスし、データセットの複製を回避。
- 柔軟なトポロジー:R^N、SO(2)、SO(3)の距離メトリクスをサポート。
- 動的データセット:動的点群用の特別なアダプターを提供。スライディングウィンドウLiDARマップ用の自己バランスツリーも搭載。
- スレッドセーフ:並列でのインデックス構築と同時クエリをサポート。
- 統合性:
Eigen::Matrixおよび標準C++ベクターと直接連携可能。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト