Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LIUO

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.

Dependencies

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.

Build

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.bash

Install and build livox_ros_driver2 in the same workspace, and ensure that Ceres, PCL, Eigen, yaml-cpp, and Boost are discoverable by CMake.

Run a ROS bag

UrbanV2X example:

roslaunch liuo odometry.launch \
  config_path:=/config/ct_odometry_uwb_scipark.yaml \
  bag_path:=/absolute/path/to/urbanv2x.bag \
  run_mode:=bag

Urban-Building example:

roslaunch liuo odometry.launch \
  config_path:=/config/ct_odometry_uwb_building.yaml \
  bag_path:=/absolute/path/to/urban_building.bag \
  run_mode:=bag

Indoor examples use /config/ct_odometry_uwb_vicon_los.yaml and /config/ct_odometry_uwb_vicon_nlos.yaml respectively.

Citation

@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}
}

About

LIUO: Outlier-Aware LiDAR/IMU/UWB Integration with NLOS Mitigation and Anchor Self-Calibration in Complex Scenarios

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages