• Stars
    star
    138
  • Rank 264,508 (Top 6 %)
  • Language
    C++
  • License
    MIT License
  • Created about 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Lidar Odometry and Mapping with Mutiple Metrics Linear Least Square ICP

LLS-LOAM

Lidar Odometry and Mapping with Mutiple Metrics Linear Least Square ICP

Principle

Instead of using non-linear optimization when doing transformation estimation, this algorithm use the linear least square for all of the point-to-point, point-to-line and point-to-plane distance metrics during the ICP registration process based on a good enough initial guess.

How to use

  1. Install dependent 3rd libraries:

PCL, Eigen, Glog, Gflags.

If you'd like to use your own data and want to know its absolute projected coordinate, install Proj.

  1. Compile
mkdir build
cd build
cmake ..
make 
  1. Run
cd ..
# If you'd like to test on kitti dataset
# See below for data preparation
sh script/kitti/kitti_xx.sh
# If you'd like to test on apollo southbay dataset
sh script/apollo/southbay_test.sh
# If you'd like to test on your own dataset, you need to create new shell files and then run it

How to prepare the data

For KITTI dataset, you may refer to Pointcloud Format Transform Tool.

After transforming the point cloud from .bin to .pcd, rename the point cloud folder HDL64.

Horizontally, create a folder called OXTS, and put the ground truth pose .txt file (which can be download from kitti's website) into it.

Then create a pcd file list:

touch file_list.txt
ls HDL64 >> file_list.txt

Then the data is ready for test.

For Baidu Appollo Dataset, you should download the testing data 'Apollo-SouthBay' from Baidu Apollo Data Platform. The data preparation is like kitti's. Remember to use the tool 'rename_number_pcd_files.sh' to regularize the pcd file names (for example, from 1.pcd to 0001.pcd).

For your own dataset, if the point cloud are in pcd format and the pose and imu information are in oxts format, then you can directly use this programme (LoadPcImuGnss Method). Or you need to transform the data youself.

The common folder structure should be

_____base_folder
     |___HDL64
     .   |____0000.pcd
     .   |____0001.pcd
     .   |____.....pcd
     |___OXTS
     .   |____pose.txt
     |___file_list.txt

TO DO LIST

For the loop closure, pose graph optimization and collaboration mapping module, the code has not been released yet.

The workaround is here: CloudControlNet

  • Speed up

  • Solve the serious Z drift problem

  • Use DL to remove the dynamic objects

  • Add ROS module

  • Tech report or paper

Demo

On KITTI dataset

Yellow: Lidar Odometry Position, Purple: Ground Truth Position

seq 00

alt text

seq 01

alt text

seq 02

alt text

seq 03

alt text

seq 04

alt text

seq 05

alt text

seq 06

alt text

seq 07

alt text

seq 08

alt text

seq 09

alt text

seq 10

alt text

Quantity Evaluation on KITTI dataset

seq ATE(%) ARE(0.01deg/m) TPF(ms/frame)
00 1.362 0.603 193.4
01 4.175 1.076 183.8
02 2.210 0.928 196.8
03 1.282 1.037 181.5
04 2.108 0.981 194.3
05 1.453 0.677 189.3
06 1.119 0.609 188.6
07 0.763 0.505 198.1
08 1.834 0.800 187.4
09 2.293 1.008 191.2
10 2.692 0.905 190.4

Apollo SouthBay dataset

alt text

On own dataset

alt text

alt text

More Repositories

1

MULLS

MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA '21]
C++
613
star
2

GH-ICP

GH-ICP: Iterative Closest Point algorithm with global optimal matching and hybrid metric [3DV' 18]
C++
313
star
3

RoadMarkingExtraction

🛣️ automatic extraction of road markings from MLS or ALS point cloud [ISPRS-A' 19]
C++
250
star
4

EasySFM

A simple Structure-from-motion software and toolbox
C++
36
star
5

Pointcloud_Format_Transformer

A Tool for various point cloud data format transformation for well-known datasets
C++
30
star
6

point-cloud-registration-review

Literature review of point cloud registration methods (For geomatics seminar at ETH Zurich)
21
star
7

drone-tracking-toolkits

Measuring Drone Trajectory using Total Stations with Visual Tracking [IPA '20 @ ETH]
MATLAB
18
star
8

ETH-CV-exercise-review

My solutions to exercises of Computer Vision course @ ETH Zurich
MATLAB
10
star
9

PPE_Kriging

Codes for Kriging interpolation for PPE course
MATLAB
5
star
10

GNSSLab

Repo. for GNSS Lab @ ETHZ
Shell
5
star
11

YuePanEdward.github.io

SCSS
3
star
12

3DV-Implicit-Reconstruction

Explore Various Encodings for Implicit Scene Reconstruction
2
star
13

diff-gaussian-surfel-rasterization

Cuda
2
star
14

360degree-Reality2Virtuality

The art of the fusion of reality & virtuality
2
star
15

MeasureAPP

Multi-function Inertial Measurement Tool Android APP
Java
2
star
16

4pcstest

a test for git
C++
2
star
17

PointCloudScissor

A useful tool to cut a set of point cloud into two parts with a designed IoU (overlapping)
C++
2
star
18

gseg_pcd_tools

point cloud processing tools
C++
1
star
19

PCLtools

Project points to a plane with known coefficients using PCL (a simple tool)
C++
1
star
20

PPE_TLSCalibration

Codes for TLS calibration for PPE
MATLAB
1
star
21

ETH-II-exercise-review

My solutions to exercises of Image Interpretation course @ ETH Zurich
MATLAB
1
star
22

OpenHDMap

HDMap for UVs (to be detailed)
1
star
23

PIN_evaluation

Jupyter Notebook
1
star