Skip to content

koide3/ndt_omp

Repository files navigation

ndt_omp

This package provides an OpenMP-boosted Normal Distributions Transform (and GICP) algorithm derived from pcl. The NDT algorithm is modified to be SSE-friendly and multi-threaded. It can run up to 10 times faster than its original version in pcl.

For using this package in non-ROS1 projects (ROS2 or without ROS), see forked repositories: dfki-ric/pclomp tier4/ndt_omp.

Build

Benchmark (on Core i7-6700K)

$ roscd ndt_omp/data $ rosrun ndt_omp align 251370668.pcd 251371071.pcd --- pcl::NDT --- single : 282.222[msec] 10times: 2921.92[msec] fitness: 0.213937 --- pclomp::NDT (KDTREE, 1 threads) --- single : 207.697[msec] 10times: 2059.19[msec] fitness: 0.213937 --- pclomp::NDT (DIRECT7, 1 threads) --- single : 139.433[msec] 10times: 1356.79[msec] fitness: 0.214205 --- pclomp::NDT (DIRECT1, 1 threads) --- single : 34.6418[msec] 10times: 317.03[msec] fitness: 0.208511 --- pclomp::NDT (KDTREE, 8 threads) --- single : 54.9903[msec] 10times: 500.51[msec] fitness: 0.213937 --- pclomp::NDT (DIRECT7, 8 threads) --- single : 63.1442[msec] 10times: 343.336[msec] fitness: 0.214205 --- pclomp::NDT (DIRECT1, 8 threads) --- single : 17.2353[msec] 10times: 100.025[msec] fitness: 0.208511 

Several methods for neighbor voxel search are implemented. If you select pclomp::KDTREE, results will be completely the same as that of the original pcl::NDT. We recommend using pclomp::DIRECT7 which is faster and stable. If you need extremely fast registration, choose pclomp::DIRECT1, but it might be a bit unstable.


Red: target, Green: source, Blue: aligned

Related packages

Releases

No releases published

Packages

No packages published

Contributors 14