Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
jazzy

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
kilted

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
lyrical

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
rolling

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

nanoflann package from nanoflann repo

nanoflann

ROS Distro
humble

Package Summary

Version 1.10.1
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/jlblancoc/nanoflann.git
VCS Type git
VCS Version master
Last Updated 2026-06-27
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees, optimized for point clouds and Eigen matrices.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

nanoflann

nanoflann

CI Linux CI Check clang-format CircleCI Windows build status codecov

Distro Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

(Binary build badges are for amd64 and arm64, respectively)

1. About

nanoflann is a C++11 header-only library for building KD-Trees of datasets with different topologies: R2, R3 (point clouds), SO(2) and SO(3) (2D and 3D rotation groups). No support for approximate NN is provided. nanoflann does not require compiling or installing. You just need to #include <nanoflann.hpp> in your code.

This library is a fork of the flann library by Marius Muja and David G. Lowe, and born as a child project of MRPT. Following the original license terms, nanoflann is distributed under the BSD license. Please, for bugs use the issues button or fork and open a pull request.

Cite as:

@misc{blanco2014nanoflann,
  title        = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for Nearest Neighbor ({NN}) with KD-trees},
  author       = {Blanco, Jose Luis and Rai, Pranjal Kumar},
  howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
  year         = {2014}
}

See the release CHANGELOG for a list of project changes.

1.1. Obtaining the code

  • Easiest way: clone this GIT repository and take the include/nanoflann.hpp file for use where you need it.
  • Debian or Ubuntu (21.04 or newer) users can install it simply with:
  $ sudo apt install libnanoflann-dev
  
  • macOS users can install nanoflann with Homebrew with:
  $ brew install brewsci/science/nanoflann
  

or

  $ brew tap brewsci/science
  $ brew install nanoflann
  

MacPorts users can use:

  $ sudo port install nanoflann
  

Although nanoflann itself doesn’t have to be compiled, you can build some examples and tests with:

$ sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev
$ mkdir build && cd build && cmake ..
$ make && make test

1.2. C++ API reference

  • Browse the Doxygen documentation.

  • Important note: If L2 norms are used, notice that search radius and all passed and returned distances are actually squared distances.

1.3. Code examples

nanoflann-demo-1

1.4. Why a fork?

  • Execution time efficiency:
    • The power of the original flann library comes from the possibility of choosing between different ANN algorithms. The cost of this flexibility is the declaration of pure virtual methods which (in some circumstances) impose run-time penalties. In nanoflann all those virtual methods have been replaced by a combination of the Curiously Recurring Template Pattern (CRTP) and inlined methods, which are much faster.
    • For radiusSearch(), there is no need to make a call to determine the number of points within the radius and then call it again to get the data. By using STL containers for the output data, containers are automatically resized.
    • Users can (optionally) set the problem dimensionality at compile-time via a template argument, thus allowing the compiler to fully unroll loops.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package nanoflann

1.10.1 (2026-06-09)

  • Merge pull request #303 from jlblancoc/refactor/tests-smaller-files refactor: unit tests into smaller files

  • refactor: unit tests into smaller files

  • CHANGELOG: ported to rst format for ROS tools compatibility

  • doc: update outdated COPYING dates

  • docs: add readme build badges

  • docs: add ROS build farm badge table to README

  • Add ROS package.xml and integrate BUILD_TESTING for ROS build farm

    • package.xml: plain cmake build_type, BSD-2-Clause, libgtest-dev test_depend

    - CMakeLists.txt: include(CTest), use BUILD_TESTING guard, auto-select system GTest when ROS_VERSION env is set

    - tests/CMakeLists.txt: remove redundant project(), rename test target to nanoflann_unit_tests to avoid collisions in workspaces

  • Contributors: Jose Luis Blanco-Claraco

1.10.0 (2026-06-06)

  • New: Incremental self-balancing dynamic k-d tree index (KDTreeSingleIndexIncrementalAdaptor), both single-threaded and multithreaded variants (#302).
  • Performance: Hoist point-length computation out of search inner loops (#301).
  • Refactor: Deduplicate tree builders, harden Eigen adaptor ownership, centralize DIM dispatch with if constexpr (#297, #299, #300).
  • Fix: SO2_Adaptor now returns absolute angular distance instead of signed (#298).
  • Fix: saveIndex/loadIndex now include a magic+version+type-size header and throw on mismatch (#295).
  • Fix: KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion (#290).
  • Fix: loadIndex reading past EOF for empty indices (#287).
  • Fix: duplicate-entry growth on removePoint/addPoints re-add cycles (#285).
  • Fix: divideTree assertion failure with dynamic adaptor removePoint/addPoints (#283).
  • CI: Added Windows (MSVC + clang-cl) and macOS (14+15) workflows; extended tested C++ standards.
  • Docs: Consolidated macro list and documented threading guarantees.
  • Contributors: Jose Luis Blanco-Claraco

1.8.0 (2025-11-16)

  • Performance: Minor performance optimization changes (#271).
  • New API: findWithinBox() (#272).
  • Contributors: Jose Luis Blanco-Claraco

1.7.1 (2025-03-15)

  • Fix: ResultSets::worstDist(): fix a potential access to negative index in array (did not happen in practice, but static analysis tools correctly detected this possibility).
  • Contributors: Jose Luis Blanco-Claraco

1.7.0 (2025-02-03)

  • API: ResultSets::worstDist(): clarified the meaning of its return value; now returns the actual worst distance in the found set (only if set is full).
  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2025-01-07)

  • cmake_required_version bumped to 3.10.
  • clang-format version bumped to 14.
  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-11-04)

  • Fix: middleSplit_ for same points (#250).
  • Fix: Build warnings.
  • Contributors: Jose Luis Blanco-Claraco, yzabalotski

1.6.1 (2024-08-24)

File truncated at 100 lines see the full file

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nanoflann at Robotics Stack Exchange