Skip to the content
FixTheRobot Explore Robotics / UAV / Module 4 / M4-L2

UAV Systems Engineering · M4-L2 · Hands-on lab (runs on your machine)

Run FAST-LIO2 on a dataset

Run a state-of-the-art LiDAR-inertial odometry on public data and learn which configuration entries matter.

  • SLAM and Autonomous Localization
  • Research-level
  • About 150 minutes

What you will do

You will build FAST-LIO (the repository includes FAST-LIO2), configure it for the LiDAR of a dataset, run it on a bag, and evaluate the trajectory. The repository README is the authority on the ROS version, the Livox driver requirement and the configuration file format for your commit; the steps below give the structure.

Before you start

  • A Linux machine with ROS and a catkin or colcon workspace as required by the README of the version you choose, PCL and Eigen.
  • A public LiDAR-inertial dataset with an IMU and ground truth or a loop (check the repository README for supported sensors and dataset suggestions).
  • Lessons M4-T8 and the lab “Analyze trajectory drift”.

Steps

  1. Clone the repository (with submodules) into your workspace and build as the README describes.
  2. Choose or write a configuration file for your LiDAR: the entries that matter are the point-cloud and IMU topics, the LiDAR type and scan period, the number of scan lines, the blind distance, the extrinsic rotation and translation LiDAR–IMU (extrinsic_R, extrinsic_T in the shipped configs), the downsampling resolutions and the IMU noise.
  3. Launch the mapping launch file with your config and play the bag.
  4. Save the trajectory and the map (the repository documents the PCD saving option) and note the processing time per scan.
  5. Evaluate with the trajectory lab (ATE and RPE) if ground truth exists, or by loop-closure error (start versus end position) otherwise.
# structure (names as in the repository's launch and config directories: verify for your commit)
roslaunch fast_lio mapping_velodyne.launch      # example launch for a spinning LiDAR
rosbag play your_dataset.bag
# the config YAML sets: lid_topic, imu_topic, preprocess/lidar_type, scan_line, extrinsic_T, extrinsic_R, filter_size_surf, filter_size_map
Names follow the shipped configs; check the README.

Experiments

  • Perturb the extrinsic rotation by 2∘2^{\circ} and observe the map (double walls) and drift.
  • Change filter_size_surf and filter_size_map and record accuracy against processing time.
  • Find a corridor or open segment and observe along-axis drift (lesson M2-T13).

How to know it worked

  • A trajectory and a saved map from a full run.
  • ATE or loop-closure error reported with the processing time per scan.
  • A short note on the effect of the extrinsic perturbation.

If it does not work

Troubleshooting
SymptomLikely causeWhat to check
No odometry outputWrong topics or LiDAR type in the configEcho the topics; check the lidar_type and timestamp fields
Map smeared in turnsTime offset or extrinsic errorCheck per-point time units and the extrinsics
Drift along corridorsDegenerate geometryExpected; document it

References

Record your progress

Saved in this browser. This lab runs on your own machine, so the site cannot check it for you.