Main Content

Navigation and Mapping

Point cloud registration and map building, 2-D and 3-D SLAM, and 2-D obstacle detection

To understand an unknown environment and navigate to a desired destination, a robot must have a clear picture of its surroundings. Especially in the absence of GPS data, a simultaneous localization and mapping(SLAM) algorithm can help a robot make effective decisions and plan a path through its environment.

SLAM consists of these two processes:

  • Localization — Estimating the pose of the robot in a known environment.

  • Mapping — Building a map of an unknown environment by using a known robot pose and sensor data.

Localization requires the robot to have a map of the environment, and mapping requires a good pose estimate. In the SLAM process, a robot creates a map of an environment while localizing itself. For more information, see Implement Point Cloud SLAM in MATLAB.

To perform SLAM, you must preprocess point clouds. Lidar Toolbox™ provides functions to extract features from point clouds and use them to register point clouds to one another. For an example of how to use fast point feature histogram (FPFH) feature extraction in a 3-D SLAM workflow for aerial data, see Aerial Lidar SLAM Using FPFH Descriptors.

You can also perform SLAM by using 2-D lidar scans. By storing the data for a 2-D lidar scan in a lidarScan object, you can perform scan matching to estimate pose. For more information, see Build Map from 2-D Lidar Scans Using SLAM.

Lidar Toolbox supports various graph-based SLAM workflows, including 2-D SLAM, 3-D SLAM, online SLAM and offline SLAM.

Simultaneous localization and mapping


expand all

detectLOAMFeaturesDetect LOAM feature points from 3-D lidar data
detectISSFeaturesDetect ISS feature points in point cloud
extractEigenFeaturesExtract eigenvalue-based features from point cloud segments
extractFPFHFeaturesExtract fast point feature histogram (FPFH) descriptors from point cloud
pcmatchfeaturesFind matching features between point clouds
pcregisterloamRegister two point clouds using LOAM algorithm
pcregisterfgrRegister two point clouds using FGR algorithm
pcregistericpRegister two point clouds using ICP algorithm
pcregistercpdRegister two point clouds using CPD algorithm
pcregistercorrRegister two point clouds using phase correlation
pcregisterndtRegister two point clouds using NDT algorithm
matchScansEstimate pose between two laser scans
matchScansGridEstimate pose between two lidar scans using grid-based search
matchScansLineEstimate pose between two laser scans using line features
transformScanTransform laser scan based on relative pose
pcmaploamCreate map of LOAM feature points for map building
pcmapsegmatchMap of segments and features for localization and loop closure detection
lidarscanmapSimultaneous localization and mapping using 2-D lidar scans
addScanAdd 2-D lidar scan to map
detectLoopClosureDetect loop closure in 2-D lidar scan map
addLoopClosureAdd loop closure to the map
deleteLoopClosureDelete loop closure between 2-D lidar scans
poseGraphCreate 2-D pose graph from lidar scan map
updateScanPosesUpdate absolute poses of 2-D lidar scans
findPoseFind absolute pose of 2-D lidar scan in the map
copyCreate a copy of lidarscanmap object
showDisplay 2-D lidar scans and lidar sensor trajectory
pcshowpairVisualize difference between two point clouds
pcplayerVisualize streaming 3-D point cloud data
pcshowMatchedFeaturesDisplay point clouds with matched feature points
rangeSensorSimulate range-bearing sensor readings
lidarSensorSimulate lidar sensor readings
lidarScanCreate object for storing 2-D lidar scan
eigenFeatureObject for storing eigenvalue-based features
LOAMPointsObject for storing LOAM feature points