Navigation and Mapping
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
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.
Detect, Extract, and Match Features
|Detect LOAM feature points from 3-D lidar data|
|Detect ISS feature points in point cloud|
|Extract eigenvalue-based features from point cloud segments|
|Extract fast point feature histogram (FPFH) descriptors from point cloud|
|Find matching features between point clouds|
Register Point Clouds
|Register two point clouds using LOAM algorithm|
|Register two point clouds using FGR algorithm|
|Register two point clouds using ICP algorithm|
|Register two point clouds using CPD algorithm|
|Register two point clouds using phase correlation|
|Register two point clouds using NDT algorithm|
|Estimate pose between two laser scans|
|Estimate pose between two lidar scans using grid-based search|
|Estimate pose between two laser scans using line features|
|Transform laser scan based on relative pose|
|Create map of LOAM feature points for map building|
|Map of segments and features for localization and loop closure detection|
Perform 2-D SLAM
|Simultaneous localization and mapping using 2-D lidar scans|
|Add 2-D lidar scan to map|
|Detect loop closure in 2-D lidar scan map|
|Add loop closure to the map|
|Delete loop closure between 2-D lidar scans|
|Create 2-D pose graph from lidar scan map|
|Update absolute poses of 2-D lidar scans|
|Find absolute pose of 2-D lidar scan in the map|
|Create a copy of |
|Display 2-D lidar scans and lidar sensor trajectory|
|Visualize difference between two point clouds|
|Visualize streaming 3-D point cloud data|
|Display point clouds with matched feature points|
|Create object for storing 2-D lidar scan|
|Object for storing eigenvalue-based features|
|Object for storing LOAM feature points|
- Implement Point Cloud SLAM in MATLAB
Understand point cloud registration and mapping workflow.
- Estimate Transformation Between Two Point Clouds Using Features
This example shows how to estimate a rigid transformation between two point clouds.
- Match and Visualize Corresponding Features in Point Clouds
This example shows how to match corresponding features between point clouds using the
pcmatchfeaturesfunction and visualize them using the
- Generate Lidar Point Cloud Data for Driving Scenario with Multiple Actors
This example shows you how to generate lidar point cloud data for a driving scene with roads, pedestrians, and vehicles.