Main Content

Registration and SLAM

Register point clouds using algorithms, such as ICP or NDT, or feature-based techniques, implement SLAM algorithms with 3-D point cloud data or 2-D lidar scans

Point cloud registration is the process of aligning two 3-D point clouds of the same scene into a common coordinate system. Lidar Toolbox™ functions enable you to register point clouds to one another using local and global methods, including iterative closest point (ICP), lidar odometry and mapping (LOAM), normal-distributions transform (NDT), fast global registration (FGR), and coherent point drift (CPD). You can also use the Lidar Registration Analyzer app to interactively register point clouds and compare the results of different registration methods, tune parameters, and add preprocessing steps. For more information, see Get Started with the Lidar Registration Analyzer App.

Simultaneous localization and mapping (SLAM) is the process of calculating the position and orientation of a vehicle or robot with respect to its surroundings while simultaneously building a map of that environment. The toolbox supports graph-based 3-D SLAM using point cloud data. For more information, see Implement Point Cloud SLAM in MATLAB.

You can also perform SLAM with 2-D lidar scans by using the lidarscanmap object. For more information, see Build Map from 2-D Lidar Scans Using SLAM.

Apps

Lidar Registration AnalyzerAnalyze results of lidar point cloud registration (Since R2024a)

Functions

expand all

pctransformTransform 3-D point cloud
rigidtform3d3-D rigid geometric transformation (Since R2022b)
affinetform3d3-D affine geometric transformation (Since R2022b)
simtform3d3-D similarity geometric transformation (Since R2022b)
transltform3d3-D translation geometric transformation (Since R2022b)
estgeotform3dEstimate 3-D geometric transformation from matching point pairs (Since R2022b)
undistortEgoMotionUndistort point cloud affected by ego motion (Since R2023a)
pcalignAlign array of point clouds (Since R2020b)
pcmergeMerge two 3-D point clouds
pccatConcatenate 3-D point cloud array (Since R2020b)

Detect Features

detectISSFeaturesDetect ISS feature points in point cloud (Since R2022a)
detectLOAMFeaturesDetect LOAM feature points in point cloud (Since R2022a)
LOAMPointsObject for storing LOAM feature points (Since R2022a)
detectRectangularPlanePointsDetect rectangular plane of specified dimensions in point cloud (Since R2020b)
detectRoadAnglesDetect road angles in point cloud (Since R2022b)

Extract Features

extractFPFHFeaturesExtract fast point feature histogram (FPFH) descriptors from point cloud (Since R2020b)
extractEigenFeaturesExtract eigenvalue-based features from point cloud segments (Since R2021a)
eigenFeatureObject for storing eigenvalue-based features (Since R2021a)

Match Features

pcmatchfeaturesFind matching features between point clouds (Since R2020b)
pcregistericpRegister two point clouds using ICP algorithm
pcregisterloamRegister two point clouds using LOAM algorithm (Since R2022a)
pcregisterfgrRegister two point clouds using FGR algorithm (Since R2022b)
pcregisterndtRegister two point clouds using NDT algorithm
pcregistercorrRegister two point clouds using phase correlation (Since R2020b)
pcregistercpdRegister two point clouds using CPD algorithm

Localization and Mapping

lidarscanmapSimultaneous localization and mapping using 2-D lidar scans (Since R2022b)
addScanAdd 2-D lidar scan to map (Since R2022b)
lidarScanCreate object for storing 2-D lidar scan (Since R2020b)

Pose Optimization

poseGraphCreate 2-D pose graph from lidar scan map (Since R2022b)
updateScanPosesUpdate absolute poses of 2-D lidar scans (Since R2022b)
findPoseFind absolute pose of 2-D lidar scan in map (Since R2022b)
matchScansEstimate pose between two laser scans (Since R2020b)
matchScansGridEstimate pose between two lidar scans using grid-based search (Since R2020b)
matchScansLineEstimate pose between two laser scans using line features (Since R2020b)
transformScanTransform laser scan based on relative pose (Since R2021a)

Loop Closure Detection

detectLoopClosureDetect loop closure in 2-D lidar scan map (Since R2022b)
addLoopClosureAdd loop closure to map (Since R2022b)
deleteLoopClosureDelete loop closure between 2-D lidar scans (Since R2022b)

Localization and Mapping

pcmaploamCreate map of LOAM feature points for map building (Since R2022b)
pcmapndtLocalization map based on normal distributions transform (NDT) (Since R2021a)
pcmapsegmatchMap of segments and features for localization and loop closure detection (Since R2021a)

Pose Optimization

pcviewsetManage data for point cloud based visual odometry and SLAM
createPoseGraphCreate pose graph
optimizePosesOptimize absolute poses using relative pose constraints

Loop Closure Detection

scanContextDistanceDistance between scan context descriptors (Since R2020b)
scanContextDescriptorExtract scan context descriptor from point cloud (Since R2020b)
scanContextLoopDetectorDetect loop closures using scan context descriptors (Since R2021b)

Topics

Featured Examples