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 (Since R2022a)|
|Detect ISS feature points in point cloud (Since R2022a)|
|Extract eigenvalue-based features from point cloud segments (Since R2021a)|
|Extract fast point feature histogram (FPFH) descriptors from point cloud (Since R2020b)|
|Find matching features between point clouds (Since R2020b)|
Register Point Clouds
|Register two point clouds using LOAM algorithm (Since R2022a)|
|Register two point clouds using FGR algorithm (Since R2022b)|
|Register two point clouds using ICP algorithm|
|Register two point clouds using CPD algorithm|
|Register two point clouds using phase correlation (Since R2020b)|
|Register two point clouds using NDT algorithm|
|Estimate pose between two laser scans (Since R2020b)|
|Estimate pose between two lidar scans using grid-based search (Since R2020b)|
|Estimate pose between two laser scans using line features (Since R2020b)|
|Transform laser scan based on relative pose (Since R2021a)|
Perform 2-D SLAM
|Simultaneous localization and mapping using 2-D lidar scans (Since R2022b)|
|Add 2-D lidar scan to map (Since R2022b)|
|Detect loop closure in 2-D lidar scan map (Since R2022b)|
|Add loop closure to the map (Since R2022b)|
|Delete loop closure between 2-D lidar scans (Since R2022b)|
|Create 2-D pose graph from lidar scan map (Since R2022b)|
|Update absolute poses of 2-D lidar scans (Since R2022b)|
|Find absolute pose of 2-D lidar scan in the map (Since R2022b)|
|Create a copy of |
|Display 2-D lidar scans and lidar sensor trajectory (Since R2022b)|
- 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 created using a
drivingScenario(Automated Driving Toolbox) object.