• Stars
    star
    1,435
  • Rank 32,809 (Top 0.7 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 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

A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR

LOAM-Livox

A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR

Loam-Livox is a robust, low drift, and real time odometry and mapping package for Livox LiDARs, significant low cost and high performance LiDARs that are designed for massive industrials uses. Our package address many key issues: feature extraction and selection in a very limited FOV, robust outliers rejection, moving objects filtering, and motion distortion compensation. In addition, we also integrate other features like parallelable pipeline, point cloud management using cells and maps, loop closure, utilities for maps saving and reload, etc. To know more about the details, please refer to our related paper:)

In the development of our package, we reference to LOAM, LOAM_NOTED, and A-LOAM.

Developer: Jiarong Lin

Our related paper: our related papers are now available on arxiv:

  1. Loam_livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV
  2. A fast, complete, point cloud based loop closure for LiDAR odometry and mapping

Our related video: our related videos are now available on YouTube (click below images to open):

video video

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation and its additional ROS pacakge:

    sudo apt-get install ros-XXX-cv-bridge ros-XXX-tf ros-XXX-message-filters ros-XXX-image-transport

NOTICE: remember to replace "XXX" on above command as your ROS distributions, for example, if your use ROS-kinetic, the command should be:

    sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport

1.2. Ceres Solver

Follow Ceres Installation.

1.3. PCL

Follow PCL Installation.

NOTICE: Recently, we find that the point cloud output form the voxelgrid filter vary form PCL 1.7 and 1.9, and PCL 1.7 leads some failure in some of our examples (issue #28). By this, we strongly recommand you to use update your PCL as version 1.9 if you are using the lower version.

2. Build

Clone the repository and catkin_make:

    cd ~/catkin_ws/src
    git clone https://github.com/hku-mars/loam_livox.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

3. Directly run

3.1 Livox Mid-40

Connect to your PC to Livox LiDAR (Mid-40) by following Livox-ros-driver installation, then (launch our algorithm first, then livox-ros-driver):

    roslaunch loam_livox livox.launch
    roslaunch livox_ros_driver livox_lidar.launch

3.2 Livox Mid-100

Unfortunately, the default configuration of Livox-ros-driver mix all three lidar point cloud as together, which causes some difficulties in our feature extraction and motion blur compensation. By this, some of the adaptations (modify some configurations) are required to launch our package.

For more details, please kindly refer our tutorials (click me to open).

4. Rosbag Example

4.1. Common rosbag

Download Our recorded rosbag and then

roslaunch loam_livox rosbag.launch
rosbag play YOUR_DOWNLOADED.bag

4.1. Large-scale rosbag

For large scale rosbag (for example, the HKUST_01.bag ), we recommand you launch with bigger line and plane resolution (using rosbag_largescale.launch)

roslaunch loam_livox rosbag_largescale.launch
rosbag play YOUR_DOWNLOADED.bag

4.2 Livox Mid-100 example

Download our recorded rosbag files (mid100_example.bag ), then:

roslaunch loam_livox rosbag_mid100.launch
rosbag play mid100_example.bag

5. Rosbag Example with loop closure enabled

5.1. Loop closure demostration

We provide a rosbag file of small size (named "loop_loop_hku_zym.bag", Download here) for demostration:

roslaunch loam_livox rosbag_loop_simple.launch
rosbag play YOUR_PATH/loop_simple.bag

5.2. Other examples

For other example (loop_loop_hku_zym.bag, loop_hku_main.bag), launch with:

roslaunch loam_livox rosbag_loop.launch
rosbag play YOUR_DOWNLOADED.bag

NOTICE: The only difference between launch files "rosbag_loop_simple.launch" and "rosbag_loop.launch" is the minimum number of keyframes (minimum_keyframe_differen) between two candidate frames of loop detection.

6. Have troubles in downloading the rosbag files?

If you have some troubles in downloading the rosbag files form google net-disk (like issue #33), you can download the same files from Baidu net-disk.

Link๏ผˆ้“พๆŽฅ๏ผ‰: https://pan.baidu.com/s/1nMSJRuP8io8mEqLgACUT_w
Extraction code(ๆๅ–็ ): sv9z

If the share link is disabled, please feel free to email me ([email protected]) for updating the link as soon as possible.

7. Our 3D-printable handheld device

To get our following handheld device, please go to another one of our open source reposity, all of the 3D parts are all designed of FDM printable. We also release our solidwork files so that you can freely make your own adjustments.

8.Acknowledgments

Thanks for LOAM(J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time) LOAM, LOAM_NOTED, and A-LOAM.

9. License

The source code is released under GPLv2 license.

We are still working on improving the performance and reliability of our codes. For any technical issues, please contact me via email Jiarong Lin < [email protected] >.

For commercial use, please contact Dr. Fu Zhang < [email protected] >

More Repositories

1

FAST_LIO

A computationally efficient and robust LiDAR-inertial odometry (LIO) package
C++
2,549
star
2

r3live

A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package
C++
1,958
star
3

FAST-LIVO

A Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry (LIVO).
C++
1,086
star
4

livox_camera_calib

This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.
C++
863
star
5

LiDAR_IMU_Init

[IROS2022] Robust Real-time LiDAR-inertial Initialization Method.
C++
834
star
6

Point-LIO

C++
745
star
7

r2live

R2LIVE: A Robust, Real-time, LiDAR-Inertial-Visual tightly-coupled state Estimator and mapping package
C++
721
star
8

BALM

An efficient and consistent bundle adjustment for lidar mapping
C++
700
star
9

ikd-Tree

This repository provides implementation of an incremental k-d tree for robotic applications.
C++
607
star
10

ImMesh

ImMesh: An Immediate LiDAR Localization and Meshing Framework
C++
590
star
11

STD

A 3D point cloud descriptor for place recognition
C++
548
star
12

VoxelMap

[RA-L 2022] An efficient and probabilistic adaptive voxel mapping method for LiDAR odometry
C++
479
star
13

mlcc

Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras
C++
479
star
14

FAST-LIVO2

FAST-LIVO2: Fast, Direct LiDAR-Inertial-Visual Odometry
471
star
15

HBA

[RAL 2023] A globally consistent LiDAR map optimization module
C++
437
star
16

IKFoM

A computationally efficient and convenient toolkit of iterated Kalman filter.
C++
420
star
17

M-detector

C++
362
star
18

LTAOM

C++
325
star
19

ROG-Map

C++
294
star
20

MARSIM

MARSIM: A light-weight point-realistic simulator for LiDAR-based UAVs
C++
283
star
21

D-Map

D-Map provides an efficient occupancy mapping approach for high-resolution LiDAR sensors.
C++
280
star
22

decentralized_loam

207
star
23

joint-lidar-camera-calib

Joint intrinsic and extrinsic LiDAR-camera calibration.
C++
194
star
24

SLAM-HKU-MaRS-LAB

In this repository, we present our research works of HKU-MaRS lab that related to SLAM
191
star
25

Voxel-SLAM

C++
185
star
26

Swarm-LIO2

Swarm-LIO2: Decentralized, Efficient LiDAR-inertial Odometry for UAV Swarms
158
star
27

dyn_small_obs_avoidance

C++
154
star
28

IPC

Integrated Planning and Control for Quadrotor Navigation in Presence of Sudden Crossing Objects and Disturbances
C++
147
star
29

btc_descriptor

137
star
30

PULSAR

C++
102
star
31

lidar_car_platfrom

48
star
32

iBTC

39
star
33

crossgap_il_rl

Python
38
star
34

multi_lidar_calib

28
star
35

Livox_handheld

25
star
36

mapping_eval

2
star