Skip to content

A pure Rust implementation of the fast K Nearest Neighbor (KNN) library for low-dimensional spaces.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

enlightware/nabo-rs

Repository files navigation

nabo

Crates.io Docs.rs Build Status

Overview

nabo is a fast K Nearest Neighbour (KNN) library for low-dimensional spaces. It is a re-implementation in pure Rust of the C++ library of the same name by its original author. This work has been sponsored by Enlightware GmbH.

nabo is no_std compatible.

Usage

To use nabo in your project, you need to either:

  • Use nabo::simple_point::SimplePoint as your point type.
  • Implement the nabo::Point trait for your own point type.

If you want to avoid a dependency to rand, disable the rand feature. In that case, the random generation of point clouds for SimplePoint will not be available.

Benchmark

You can benchmark nabo using the following command:

cargo bench

Citing nabo

If you use nabo in the academic context, please cite this paper that evaluates its performances in the context of robotics mapping research:

@article{elsebergcomparison,
	title={Comparison of nearest-neighbor-search strategies and implementations for efficient shape registration},
	author={Elseberg, J. and Magnenat, S. and Siegwart, R. and N{\"u}chter, A.},
	journal={Journal of Software Engineering for Robotics (JOSER)},
	pages={2--12},
	volume={3},
	number={1},
	year={2012},
	issn={2035-3928}
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.