Livox-SDK / livox_horizon_loam

Livox horizon porting for loam
Other
307 stars 77 forks source link

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>
  3. 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.