This repository contains an approach for LiDAR odometry based on edge and surface features, as well as Stable Triangle Descriptors (STD). These features are optimized using Dual Quaternion (DQ) optimization.
This method introduces a novel approach for LiDAR odometry estimation, fully parameterized with dual quaternions. The features derived from the point cloud, including edges, surfaces, and Stable Triangle Descriptors (STD), along with the optimization process, are all expressed in the dual quaternion space. This enables a direct combination of translation and orientation errors using dual quaternion operations, significantly improving pose estimation accuracy. Comparative experiments against other state-of-the-art methods show that this approach achieves enhanced performance.
An overview of our LiDAR-Only odometry method can be found in DualQuat_LOAM of AUROVA PROJECTS
- ROS 1 (tested in ROS-Noetic)
- PCL (Point Cloud Library)
- Eigen for linear algebra operations
- Ceres Solver (tested with 2.2.0 library version)
- Point cloud preprocessing node (aurova_preprocessed). More specifically pc_feature node.
cd ~/catkin_ws/src
git clone
Navigate to your catkin workspace and build the package:
cd ~/catkin_ws
catkin_make --only-pkg-with-deps dualquat_loam
We have separated the point cloud preprocessing for edge and surface feature extraction, allowing the user to implement this package with their own code or use the one provided in pc_feature node.
roslaunch pc_feature_extraction Kitti_extraction.launch
The package has been tested with the KITTI (00 - 010 sequences), HeliPR (Roundabout02, Bridge02, Town03), conSLAM (sequence02) and NTU-VIRAL(eee03) datasets.
roslaunch dualquat_loam odomEstimation_KITTI_dataset.launch
Make sure the parameters and topics are correctly set according to your LiDAR sensor and point cloud input.
We would like to acknowledge the following repositories for their contributions to this project: