Mj23366 e057be831f first commit 10 bulan lalu
..
.github e057be831f first commit 10 bulan lalu
apps e057be831f first commit 10 bulan lalu
data e057be831f first commit 10 bulan lalu
docker e057be831f first commit 10 bulan lalu
include e057be831f first commit 10 bulan lalu
src e057be831f first commit 10 bulan lalu
.clang-format e057be831f first commit 10 bulan lalu
CMakeLists.txt e057be831f first commit 10 bulan lalu
LICENSE e057be831f first commit 10 bulan lalu
README.md e057be831f first commit 10 bulan lalu
package.xml e057be831f first commit 10 bulan lalu

README.md

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