/RingFalsNormal

A novel fast approximate least squares normal estimator using the structural information of certain LiDAR, is fast and accurate compared to PCL, and meets the real-time requirements of the LIO system.

Primary LanguageC++GNU General Public License v2.0GPL-2.0

Ring FALS Normal Estimator

A real-time normal estimator for spinning LiDAR.

Related Works

  1. LOG-LIO: A LiDAR-inertial Odometry with Efficient Local Geometric Information Estimation

Related video: Ring FALS

normals.jpg

How to use

Tested under Ubuntu 16.04 with opencv3.3.1 and Ubuntu 18.04 with opencv3.2.0. Output point cloud with the topic "cloud_normal".

mkdir -p ws_ring_fals/src
cd ws_ring_fals/src
git clone https://github.com/tiev-tongji/RingFalsNormal

set OpenCV_DIR in the CMakeLists.txt to your local path, and please compile the opencv-contrib module in advance.

cd .. & catkin_make
source devel/setup.bash

run with our pre-built lookup table

For the M2DGR dataset

roslaunch ring_fals normal_m2dgr.launch 

For the NTU VIRAL dataset

roslaunch ring_fals normal_viral.launch 

So far, we have only provided launch files for M2DGR and NTU VIRAL.

build a lookup table for a spinning LiDAR

Set the parameters in the yaml file for the LiDAR carefully. compute_table must be set to true.

    compute_table: true               # true: compute only the lookup table
    ring_table_dir: "/table_dir"      # lookup table path, read or write

The lookup table will be saved to the path specified by ring_table_dir upon ros shutdown.

roslaunch ring_fals *.launch
rosbag play *.bag

Finally, run with your lookup table

roslaunch ring_fals *.launch