This repo implemented a 2d NDT algorithm by c++ language without the pcl library.
The only dependencies the code needs are Eigen and Opencv(alternative, only for displaying the scan points).
NDT is a more efficient and less computational scan matching method compared with ICP. Can be used for 2D laser odometer or SLAM front-end directly.
dependencies:
Eigen3
Opencv3.4.1 ( Alternative )
build:
mkdir build
cd build
cmake ..
make
in directory: build/bin/
execuate the command:
./ndt_test or ./ndt_laser_odometry
matching between two scans:
laser odometer test:
[1] Peter Biber, Wolfgang Straaer. The Normal Distributions Transform: A New Approach to Laser Scan Matching.
This algorithm is also ported to embedded devices. I tested it on ESP32, and the result shows that the algorithm performs well.For more details, please refer to this repo: https://github.com/softdream/NDT_Laser_Odometer_ESP32