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.
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
- Clone the repository (with submodules) into your workspace and build as the README describes.
- 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_Tin the shipped configs), the downsampling resolutions and the IMU noise. - Launch the mapping launch file with your config and play the bag.
- Save the trajectory and the map (the repository documents the PCD saving option) and note the processing time per scan.
- 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_mapExperiments
- Perturb the extrinsic rotation by and observe the map (double walls) and drift.
- Change
filter_size_surfandfilter_size_mapand 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
| Symptom | Likely cause | What to check |
|---|---|---|
| No odometry output | Wrong topics or LiDAR type in the config | Echo the topics; check the lidar_type and timestamp fields |
| Map smeared in turns | Time offset or extrinsic error | Check per-point time units and the extrinsics |
| Drift along corridors | Degenerate geometry | Expected; 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.