FAST-LIO SLAM Plugin
FAST-LIO (Fast LiDAR-Inertial Odometry) provides real-time state estimation and mapping using tightly-coupled LiDAR and IMU fusion.
Overview
FAST-LIO2 is a robust, low-drift odometry algorithm that:
Provides accurate 6-DOF pose estimation
Builds incrementally updated point cloud maps
Supports Livox and Ouster LiDAR types
Operates in real-time at high frequency
Supported LiDARs
Pre-configured for:
Livox Mid-360
Ouster OS-1-32
Configuration
Configuration Files
Location: raisin_fast_lio_plugin/config/
Available configurations:
mid360.yaml- Livox Mid-360ouster32.yaml- Ouster OS-1-32
Example Configuration (Ouster)
common:
lid_topic: /ouster/points
imu_topic: /ouster/imu
time_sync_en: false
preprocess:
lidar_type: 3 # 1=Livox, 2=Velodyne, 3=Ouster
scan_line: 32
blind: 0.5
mapping:
acc_cov: 0.1
gyr_cov: 0.1
extrinsic_est_en: false
extrinsic_T: [0.002441, 0.009725, 0.030662]
extrinsic_R: [-1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0]
publish:
scan_publish_en: true
dense_publish_en: true
pcd_save:
pcd_save_en: true
Parameter Reference
Input Topics:
Parameter |
Default |
Description |
|---|---|---|
lid_topic |
/livox/lidar |
Input point cloud topic |
imu_topic |
/livox/imu |
Input IMU data topic |
time_sync_en |
false |
Enable software time sync |
time_offset_lidar_to_imu |
0.0 |
Time offset between LiDAR and IMU (seconds) |
LiDAR Preprocessing:
Parameter |
Default |
Description |
|---|---|---|
lidar_type |
1 |
LiDAR type: 1=Livox, 3=Ouster |
scan_line |
6 |
Number of scan lines |
blind |
4.0 |
Minimum range filter (meters) |
point_filter_num |
3 |
Downsample factor for points |
State Estimation:
Parameter |
Default |
Description |
|---|---|---|
acc_cov |
0.1 |
Accelerometer noise covariance |
gyr_cov |
0.1 |
Gyroscope noise covariance |
b_acc_cov |
0.0001 |
Accelerometer bias drift covariance |
b_gyr_cov |
0.0001 |
Gyroscope bias drift covariance |
fov_degree |
360.0 |
Field of view (degrees) |
det_range |
150.0 |
Maximum detection range (meters) |
LiDAR-to-IMU Transform:
Parameter |
Type |
Description |
|---|---|---|
extrinsic_est_en |
bool |
Enable online extrinsic calibration |
extrinsic_T |
vector<double> |
Translation [x, y, z] from LiDAR to IMU (meters) |
extrinsic_R |
vector<double> |
Rotation matrix (row-major 3x3) from LiDAR to IMU |
Output Configuration:
Parameter |
Default |
Description |
|---|---|---|
path_en |
false |
Publish trajectory path |
scan_publish_en |
true |
Publish aligned point clouds |
dense_publish_en |
true |
Publish full dense map |
scan_bodyframe_pub_en |
true |
Output scans in body frame |
PCD Export:
Parameter |
Default |
Description |
|---|---|---|
pcd_save_en |
true |
Enable map saving to PCD file |
interval |
-1 |
Frames per PCD file (-1 = all in one) |
map_file_path |
./test.pcd |
Output file path |
Message Topics
Publishers
Topic |
Type |
Description |
|---|---|---|
/Odometry |
nav_msgs/Odometry |
Odometry in LiDAR frame |
/Odometry/base |
nav_msgs/Odometry |
Odometry in IMU/base frame |
/cloud_registered |
sensor_msgs/PointCloud2 |
Aligned map points |
/cloud_registered_body |
sensor_msgs/PointCloud2 |
Points in body frame |
/Laser_map |
sensor_msgs/PointCloud2 |
Global accumulated map |
Subscribers
Topic |
Type |
Description |
|---|---|---|
<lid_topic> |
sensor_msgs/PointCloud2 |
Input LiDAR point cloud |
<imu_topic> |
sensor_msgs/Imu |
Input IMU data |
Usage
Selecting Configuration
Choose the config file matching your LiDAR sensor (mid360.yaml or ouster32.yaml)
Verify
lid_topicandimu_topicmatch your sensor driver outputSet
lidar_typecorrectly (1=Livox, 3=Ouster)
Extrinsic Calibration
For best performance, calibrate LiDAR-IMU extrinsics:
Measure physical offset from LiDAR to IMU
Set
extrinsic_Twith translation in metersSet
extrinsic_Rwith rotation matrixOr enable
extrinsic_est_enfor online calibration
Warning
Incorrect extrinsics will cause drift and map distortion
Saving Maps
To save point cloud maps:
Set
pcd_save_en: trueSet
map_file_pathto desired output locationMap is saved when plugin unloads