Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/koide3/ndt_omp
Multi-threaded and SSE friendly NDT algorithm
https://github.com/koide3/ndt_omp
matching multithreading ndt ndt-algorithm pcl point-cloud registration ros scan-matching
Last synced: 9 days ago
JSON representation
Multi-threaded and SSE friendly NDT algorithm
- Host: GitHub
- URL: https://github.com/koide3/ndt_omp
- Owner: koide3
- License: bsd-2-clause
- Created: 2018-01-01T07:55:38.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-31T13:05:27.000Z (2 months ago)
- Last Synced: 2024-10-27T20:18:39.199Z (12 days ago)
- Topics: matching, multithreading, ndt, ndt-algorithm, pcl, point-cloud, registration, ros, scan-matching
- Language: C++
- Homepage:
- Size: 1.64 MB
- Stars: 739
- Watchers: 19
- Forks: 321
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-robotic-tooling - ndt_omp - Multi-threaded and SSE friendly NDT algorithm. (Sensor Processing / Lidar and Point Cloud Processing)
README
# 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](https://github.com/dfki-ric/pclomp) [tier4/ndt_omp](https://github.com/tier4/ndt_omp).
[![Build](https://github.com/koide3/ndt_omp/actions/workflows/build.yml/badge.svg)](https://github.com/koide3/ndt_omp/actions/workflows/build.yml)
### 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
- [ndt_omp](https://github.com/koide3/ndt_omp)
- [fast_gicp](https://github.com/SMRT-AIST/fast_gicp)