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++ベクターと直接連携可能。

関連

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