• Stars
    star
    305
  • Rank 136,879 (Top 3 %)
  • Language
    C++
  • License
    Other
  • Created almost 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

Livox horizon porting for loam

Livox-Horizon-LOAM

LiDAR Odemetry and Mapping (LOAM) package for Livox Horizon LiDAR

image livox_horizon_loam 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 is mainly designed for low-speed scenes(~5km/h) and address many key issues: feature extraction and selection in a very limited FOV, and motion distortion compensation. We use Ceres-Solver for scan matching to avoid complicated differential geometry derivation. The codes are well structured and streamlined to improve readability and extendability.

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

Developer: Livox

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation

1.2. Ceres Solver

Follow Ceres Installation. Recommend version 1.13.0 and 1.14.0.

1.3. PCL

Follow PCL Installation. Recommend version 1.7.

1.4. Eigen

Recommend version 3.3.7.

1.5. livox_ros_driver

Follow the introduction livox_ros_driver.

2. Build

Clone the repository and catkin_make:

    cd ~/catkin_ws/src
    git clone https://github.com/Livox-SDK/livox_horizon_loam.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

3. Directly run

Connect to your PC to Livox LiDAR (horizon) by following Livox-ros-driver installation, then

    roslaunch livox_ros_driver livox_lidar_msg.launch
    roslaunch loam_horizon loam_livox_horizon.launch

If you want to use horizon's internal IMU to eliminate rotation distortion, run

    roslaunch livox_ros_driver livox_lidar_msg.launch
    roslaunch loam_horizon loam_livox_horizon_imu.launch

4. Rosbag Example

4.1. Common rosbag

Download parking lot rosbag or outdoor scene rosbag and then

    roslaunch loam_horizon loam_livox_horizon.launch
    rosbag play YOUR_DOWNLOADED.bag

We can check nodes relationship by rqt_graph:

image

If you want to use horizon's internal IMU to eliminate rotation distortion, run

    roslaunch loam_horizon loam_livox_horizon_imu.launch
    rosbag play YOUR_DOWNLOADED.bag

When using IMU messages, check rqt_graph:

image

4.2. External IMU rosbag

If you want to use an external IMU with horizon to eliminate rotation distortion, you need to manually obtain external parameters. For example, we record a rosbag containing external imu data and horizon data, and the extrinsic quaternion is (0, 1, 0, 0), then:

  1. Download external imu rosbag.
  2. Modify the ExtIL rosparam in loam_livox_horizon_ext_imu.launch in order[q.w, q.x, q.y, q.z, t.x, t.y, t.z]:
    <rosparam param="ExtIL"> [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]</rosparam>
  1. Run
    roslaunch loam_horizon loam_livox_horizon_ext_imu.launch
    rosbag play imu-demo.bag

5.Acknowledgments

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

More Repositories

1

LIO-Livox

A Robust LiDAR-Inertial Odometry for Livox LiDAR
C++
641
star
2

Livox-SDK

Drivers for receiving LiDAR data and more, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
500
star
3

livox_camera_lidar_calibration

Calibrate the extrinsic parameters between Livox LiDAR and camera
C++
483
star
4

livox_mapping

A mapping package for Livox LiDARs
C++
377
star
5

livox_ros_driver

Livox device driver under ros, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
367
star
6

livox_detection

Livox open source detection algorithm
Python
260
star
7

livox_ros_driver2

Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.
C++
237
star
8

Livox_automatic_calibration

An automatic calibration algorithm for livox LiDAR
C++
235
star
9

livox_laser_simulation

A package to provide plug-in for Livox Series LiDAR.
C++
197
star
10

livox_high_precision_mapping

High precision mapping with livox and apx-15
C++
174
star
11

livox_cloud_undistortion

This project is used for lidar point cloud undistortion.
C++
148
star
12

horizon_highway_slam

Horizon_Highway_Slam Demo in Docker
C++
145
star
13

livox_relocalization

A relocalization package for Livox LiDARs.
C++
132
star
14

Livox-SDK2

Drivers for receiving LiDAR data and controlling lidar, support Lidar HAP and Mid-360.
C++
110
star
15

livox_free_space

Livox-Free-Space is a fast and effective free-space detection package using Livox LiDAR data.
C++
109
star
16

livox_ros2_driver

Livox device driver under Ros2, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
78
star
17

livox_detection_simu

Trained on Simulated Data, Tested in the Real World
Python
75
star
18

livox_lane_detection

Python
57
star
19

livox_scanner

Livox LiDAR 3D scanner
C++
46
star
20

LivoxIntegration

Guidelines for integrating Livox LiDARs with other sensors
30
star
21

livox_autoware_driver

Livox lidar driver for Autoware
C++
28
star
22

Special-Firmwares-for-Livox-LiDARs

Special Firmwares for Livox LiDARs
24
star
23

livox_wiki_cn

livox wiki cn
Python
17
star
24

livox_apollo_driver

Livox driver for apollo
C++
16
star
25

livox_calibration

Livox extrinsic calibration
C++
16
star
26

Livox-Viewer

Livox Viewer
13
star
27

livox-dataset-devkit

A development kit to read point cloud and display 3D target bounding boxes for the livox dataset
C++
12
star
28

livox_wiki_en

livox wiki en
Python
2
star
29

Livox-SDK-Doc

Livox-SDK API Reference
1
star