• Stars
    star
    728
  • Rank 62,237 (Top 2 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Multi-threaded and SSE friendly NDT algorithm

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

More Repositories

1

hdl_graph_slam

3D LIDAR-based Graph SLAM
C++
1,973
star
2

fast_gicp

A collection of GICP-based fast point cloud registration algorithms
C++
1,230
star
3

interactive_slam

Interactive Map Correction for 3D Graph SLAM
C++
839
star
4

hdl_localization

Real-time 3D localization using a (velodyne) 3D LIDAR
C++
795
star
5

direct_visual_lidar_calibration

A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2]
C++
692
star
6

glim

GLIM: versatile and extensible range-based 3D localization and mapping framework
C++
431
star
7

small_gicp

Efficient and parallel algorithms for point cloud registration [C++, Python]
C++
365
star
8

iridescence

3D visualization library for rapid prototyping of 3D algorithms
C++
288
star
9

hdl_people_tracking

Real-time people tracking using a 3D LIDAR
C++
283
star
10

slam_docker_collection

A collection of docker environments for 3D SLAM packages
219
star
11

monocular_person_following

Monocular camera-based person tracking and identification ROS framework for person following robots
C++
183
star
12

hdl_global_localization

C++
171
star
13

gtsam_points

A collection of GTSAM factors and optimizers for point cloud SLAM
C++
145
star
14

gazebo_apriltag

Apriltag models for gazebo
Python
60
star
15

pointcloud_to_2dmap

C++
58
star
16

st_handeye_graph

General hand-eye calibration based on reprojection error minimization and pose graph optimization
C++
57
star
17

livox_to_pointcloud2

C++
52
star
18

rviz_factor_graph_plugins

C++
39
star
19

caratheodory2

C++
37
star
20

automatic_tuning

C++
29
star
21

sparse_dynamic_calibration

Sparse and dynamic camera network calibration with visual odometry
C++
29
star
22

glim_ros2

C++
25
star
23

glil_pubdoc

Public documentation for GLIL, A closed-source point-cloud-based real-time localization package
22
star
24

cpp_parallel_code

Cuda
22
star
25

monocular_people_tracking

C++
19
star
26

glim_ext

C++
18
star
27

open3d_graph_slam

Python
16
star
28

glim_mid360_tutorial

15
star
29

points_inspector

An inspection tool for sensor_msgs/PointCloud2 messages [ROS1/ROS2]
C++
14
star
30

glim_ros1

C++
11
star
31

ccf_person_identification

Convolutional Channel Features + Online boosting-based person identification for mobile robots
C++
10
star
32

caratheodory

C++ implementation of the algorithm in "Fast and Accurate Least-Mean-Squares Solvers", NIPS19
C++
10
star
33

pykalman_test

A simple UKF demo using pykalman
Python
9
star
34

odometry_saver

C++
9
star
35

gtsam_docker

Dockerfile
7
star
36

ros2d2

A ROS package to make R2D2-like sound
C
6
star
37

ccf_feature_extraction

Pretrained convolutional channel features for people identification
C++
5
star
38

vscode_ros

4
star
39

open_face_recognition

Python
3
star
40

date_logger

Shell
2
star
41

tf_pose_ros_msgs

CMake
2
star
42

dial_controller

Python
1
star
43

ppa

Shell
1
star
44

ros1_docker_scripts

Shell
1
star
45

velodyne_packets2points

1
star
46

koide3.github.io

HTML
1
star
47

lidar_slam_dataset

1
star