Giter Club home page Giter Club logo

livox_horizon_loam's Introduction

Livox-Horizon-LOAM NOTED

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

Livox-Horizon-LOAM的阅读版本, 在关键部分的代码都添加了中文注释.

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

0. 建议阅读顺序

  1. livox_repub.cpp
  2. scanRegistration.cpp
  3. laserOdometry.cpp, lidarFactor.cpp
  4. laserMapping.cpp, lidarFactor.cpp
  5. imu_processor/*

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.

livox_horizon_loam's People

Contributors

hviktortsoi avatar livox-sdk avatar panzhichen avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.