Outlier-Aware LiDAR/IMU/UWB Integration with NLOS Mitigation and Anchor Self-Calibration in Complex Scenarios
LIUO is a ROS 1 research system for tightly coupled continuous-time fusion of LiDAR, raw IMU, and UWB ranging measurements. It represents the platform trajectory with non-uniform B-splines, jointly optimizes UWB anchor positions when self-calibration is enabled, and uses LiDAR-map geometry to mitigate UWB non-line-of-sight (NLOS) measurements.
Release status. The public repository is a research preview. The configuration interface in this README is aligned with the latest manuscript revision and reviewer response. Before claiming complete result reproducibility, the frozen per-anchor UWB calibration arrays and the remaining protected core implementations must be included in a tagged release.
The current package is configured for C++17 and ROS 1. Its CMake file requests:
- ROS Noetic components including
roscpp,rosbag,sensor_msgs,geometry_msgs,nav_msgs,visualization_msgs,tf,cv_bridge, and message generation; livox_ros_driver2;- Eigen3;
- Ceres Solver;
- PCL 1.13.0;
- yaml-cpp 0.5 or newer;
- Boost filesystem, iostreams, program options, system, serialization, and thread;
- OpenMP when available.
The manuscript experiments use Ubuntu 20.04 and ROS Noetic. Because the exact dependency versions and protected implementation status may differ across branches, treat the commands below as the intended catkin workflow rather than a claim of a prebuilt binary release.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/PolyU-TASLAB/LIUO.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bashInstall and build livox_ros_driver2 in the same workspace, and ensure that Ceres, PCL, Eigen, yaml-cpp, and Boost are discoverable by CMake.
UrbanV2X example:
roslaunch liuo odometry.launch \
config_path:=/config/ct_odometry_uwb_scipark.yaml \
bag_path:=/absolute/path/to/urbanv2x.bag \
run_mode:=bagUrban-Building example:
roslaunch liuo odometry.launch \
config_path:=/config/ct_odometry_uwb_building.yaml \
bag_path:=/absolute/path/to/urban_building.bag \
run_mode:=bagIndoor examples use /config/ct_odometry_uwb_vicon_los.yaml and /config/ct_odometry_uwb_vicon_nlos.yaml respectively.
@misc{xiao2026liuo,
title = {Outlier-Aware LiDAR/IMU/UWB Integration with NLOS Mitigation and Anchor Self-Calibration in Complex Scenarios},
author = {Naigui Xiao and Lu Bai and Weisong Wen},
year = {2026},
howpublished = {Manuscript under review},
url = {https://github.com/PolyU-TASLAB/LIUO}
}