Skip to content

GohanHackz/lidar_odometry

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiDAR Odometry with Probabilistic Kernel Optimization (PKO)

This is a real-time LiDAR odometry system designed for SLAM applications. It utilizes feature extraction from point clouds, iterative closest point (ICP) registration, sliding window optimization with Ceres Solver, and Pangolin for 3D visualization.

The system incorporates Probabilistic Kernel Optimization (PKO) for robust state estimation, as described in:

S. Choi and T.-W. Kim, "Probabilistic Kernel Optimization for Robust State Estimation," IEEE Robotics and Automation Letters, vol. 10, no. 3, pp. 2998-3005, 2025, doi: 10.1109/LRA.2025.3536294.

Paper: https://ieeexplore.ieee.org/document/10857458

Features

  • ⚡ Real-time LiDAR odometry processing
  • 🎯 Feature-based point cloud registration
  • 🔧 Ceres Solver-based optimization
  • 📈 Adaptive M-estimator for robust estimation (PKO)

Demo

LiDAR Odometry Demo

Click to watch the demo video showing real-time LiDAR odometry on KITTI dataset

Quick Start

1. Build Options

Native Build (Ubuntu 22.04)

git clone https://github.com/93won/lidar_odometry
cd lidar_odometry
chmod +x build.sh
./build.sh

2. Download Sample Data

Download the sample KITTI sequence 07 from Google Drive and extract to data/kitti/

3. Update Configuration

Edit config/kitti.yaml to set your dataset paths:

# Data paths - Update these paths to your dataset location
data_directory: "/path/to/your/kitti_dataset/sequences"
ground_truth_directory: "/path/to/your/kitti_dataset/poses"  
output_directory: "/path/to/your/output/directory"
seq: "07"  # Change this to your sequence number

4. Run LiDAR Odometry

cd build
./lidar_odometry ../config/kitti.yaml

Full KITTI Dataset

For complete evaluation, download the full KITTI dataset from:

Project Structure

  • app/: Main application and KITTI dataset player
  • src/: Core modules (database, processing, optimization, viewer, util)
  • thirdparty/: External libraries (Ceres, Pangolin, Sophus, spdlog)
  • config/: Configuration files
  • build.sh: Build script for native compilation

Dependencies

  • PCL (Point Cloud Library)
  • Eigen3 - Linear algebra
  • Ceres Solver - Non-linear optimization
  • Pangolin - 3D visualization
  • OpenGL - Graphics rendering
  • YAML-cpp - Configuration parsing

System Requirements

  • Ubuntu 20.04/22.04 (recommended)
  • C++17 Compiler (g++ or clang++)
  • CMake (>= 3.16)

License

This project is released under the MIT License.

References

@ARTICLE{10857458,
  author={Choi, Seungwon and Kim, Tae-Wan},
  journal={IEEE Robotics and Automation Letters}, 
  title={Probabilistic Kernel Optimization for Robust State Estimation}, 
  year={2025},
  volume={10},
  number={3},
  pages={2998-3005},
  keywords={Kernel;Optimization;State estimation;Probabilistic logic;Tuning;Robustness;Cost function;Point cloud compression;Oceans;Histograms;Robust state estimation;SLAM},
  doi={10.1109/LRA.2025.3536294}
}

About

Probabilistic Kernel Optimization for Robust State Estimation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 95.8%
  • CMake 3.2%
  • Shell 1.0%