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(¢er, radius0));
let radius1 = 1.5;
assert!(capt.collides(¢er, 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§
- NewCapt
Error - The errors which can occur when calling
Capt::try_new.