Crate capt

Crate capt 

Source
Expand description

§Collision-Affording Point Trees: SIMD-Amenable Nearest Neighbors for Fast Collision Checking

This is a Rust implementation of the collision-affording point tree (CAPT), a data structure for SIMD-parallel collision-checking between spheres and point clouds.

You may also want to look at the following other sources:

If you use this in an academic work, please cite it as follows:

@InProceedings{capt,
  title = {Collision-Affording Point Trees: {SIMD}-Amenable Nearest Neighbors for Fast Collision Checking},
  author = {Ramsey, Clayton W. and Kingston, Zachary and Thomason, Wil and Kavraki, Lydia E.},
  booktitle = {Robotics: Science and Systems},
  date = {2024},
  url = {http://arxiv.org/abs/2406.02807},
  note = {To Appear.}
}

§Usage

The core data structure in this library is the Capt, which is a search tree used for collision checking. Capts are polymorphic over dimension and data type. On construction, they take in a list of points in a point cloud and a radius range: a tuple of the minimum and maximum radius used for querying.

use capt::Capt;

// list of points in cloud
let points = [[0.0, 1.1], [0.2, 3.1]];
let r_min = 0.05;
let r_max = 2.0;

let capt = Capt::<2>::new(&points, (r_min, r_max));

Once you have a Capt, you can use it for collision-checking against spheres. Correct answers are only guaranteed if you collision-check against spheres with a radius inside the radius range.

let center = [0.0, 0.0]; // center of sphere
let radius0 = 1.0; // radius of sphere
assert!(!capt.collides(&center, radius0));

let radius1 = 1.5;
assert!(capt.collides(&center, radius1));

§Optional features

This crate exposes one feature, simd, which enables a SIMD-parallel interface for querying Capts. The simd feature requires nightly Rust and therefore should be considered unstable. This enables the function Capt::collides_simd, a parallel collision checker for batches of search queries.

§License

This work is licensed to you under the Apache 2.0 license.

Structs§

Capt
A collision-affording point tree (CAPT), which allows for efficient collision-checking in a SIMD-parallel manner between spheres and point clouds.

Enums§

NewCaptError
The errors which can occur when calling Capt::try_new.

Traits§

Axis
A generic trait representing values which may be used as an “axis;” that is, elements of a vector representing a point.
Index
An index type used for lookups into and out of arrays.