• Stars
    star
    589
  • Rank 75,909 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simple localization framework that can re-localize in built maps based on FAST-LIO.

FAST-LIO-LOCALIZATION

A simple localization framework that can re-localize in built maps based on FAST-LIO.

News

  • 2021-08-11: Add Open3D 0.7 support.

  • 2021-08-09: Migrate to Open3D for better performance.

1. Features

  • Realtime 3D global localization in a pre-built point cloud map. By fusing low-frequency global localization (about 0.5~0.2Hz), and high-frequency odometry from FAST-LIO, the entire system is computationally efficient.
  • Eliminate the accumulative error of the odometry.
  • The initial localization can be provided either by rough manual estimation from RVIZ, or pose from another sensor/algorithm.

2. Prerequisites

2.1 Dependencies for FAST-LIO

Technically, if you have built and run FAST-LIO before, you may skip section 2.1.

This part of dependency is consistent with FAST-LIO, please refer to the documentation https://github.com/hku-mars/FAST_LIO#1-prerequisites

2.2 Dependencies for localization module

sudo apt install ros-$ROS_DISTRO-ros-numpy
pip install open3d==0.9

Notice that, there may be issue when installing Open3D directly using pip in Python2.7:

ERROR: Package 'pyrsistent' requires a different Python: 2.7.18 not in '>=3.5'

you may firstly install pyrsistent:

pip install pyrsistent==0.15

Then

pip install open3d==0.9

3. Build

Clone the repository and catkin_make:

    cd ~/$A_ROS_DIR$/src
    git clone https://github.com/HViktorTsoi/FAST_LIO_LOCALIZATION.git
    cd FAST_LIO_LOCALIZATION
    git submodule update --init
    cd ../..
    catkin_make
    source devel/setup.bash
  • Remember to source the livox_ros_driver before build (follow livox_ros_driver)
  • If you want to use a custom build of PCL, add the following line to ~/.bashrc export PCL_ROOT={CUSTOM_PCL_PATH}

4. Run Localization

4.1 Sample Dataset

Demo rosbag in a large underground garage: Google Drive | Baidu Pan (Code: ne8d);

Corresponding map: Google Drive | Baidu Pan (Code: kw6f)

The map can be built using LIO-SAM or FAST-LIO-SLAM.

4.2 Run

  1. First, please make sure you're using the Python 2.7 environment;

  2. Run localization, here we take Livox AVIA as an example:

roslaunch fast_lio_localization localization_avia.launch map:=/path/to/your/map.pcd

Please modify /path/to/your/map.pcd to your own map point cloud file path.

Wait for 3~5 seconds until the map cloud shows up in RVIZ;

  1. If you are testing with the sample rosbag data:
rosbag play localization_test_scene_1.bag

Or if you are running realtime

roslaunch livox_ros_driver livox_lidar_msg.launch

Please set the publish_freq in livox_lidar_rviz.launch to 10Hz, to ensure there are enough points for global localization in a single scan. Support for higher frequency is coming soon.

  1. Provide initial pose
rosrun fast_lio_localization publish_initial_pose.py 14.5 -7.5 0 -0.25 0 0 

The numerical value 14.5 -7.5 0 -0.25 0 0 denotes 6D pose x y z yaw pitch roll in map frame, which is a rough initial guess for localization_test_scene_1.bag.

The initial guess can also be provided by the '2D Pose Estimate' Tool in RVIZ.

Note that, during the initialization stage, it's better to keep the robot still. Or if you play bags, fistly play the bag for about 0.5s, and then pause the bag until the initialization succeed.

Related Works

  1. FAST-LIO: A computationally efficient and robust LiDAR-inertial odometry (LIO) package
  2. ikd-Tree: A state-of-art dynamic KD-Tree for 3D kNN search.
  3. FAST-LIO-SLAM: The integration of FAST-LIO with Scan-Context loop closure module.
  4. LIO-SAM_based_relocalization: A simple system that can relocalize a robot on a built map based on LIO-SAM.

Acknowledgments

Thanks for the authors of FAST-LIO and LIO-SAM_based_relocalization.

TODO

  1. Go over the timestamp issue of the published odometry and tf;
  2. Using integrated points for global localization;
  3. Fuse global localization with the state estimation of FAST-LIO, and smooth the localization trajectory;
  4. Updating...

More Repositories

1

PV-LIO

A probabilistic voxelmap-based LiDAR-Inertial Odometry.
C++
361
star
2

ACSC

Automatic Calibration for Non-repetitive Scanning Solid-State LiDAR and Camera Systems
C++
308
star
3

rs_to_velodyne

A ros tool for converting Robosense pointcloud to Velodyne pointcloud format.
C++
177
star
4

pointcloud_ground_removal

RANSAC segmentation-based ground removal for 3D LiDAR point clouds.
C++
77
star
5

MultithreadingDownloader

基于python的多线程下载工具
Python
15
star
6

alpha_lidar

Official implementation of αLiDAR: An Adaptive High-Resolution Panoramic LiDAR System
13
star
7

yesense_ros_driver

ROS driver for yesense imu.
C
10
star
8

galaxy_camera_ros_driver

ROS driver for daheng(大恒) industrial camera.
C
10
star
9

gitnote

note
HTML
8
star
10

NonparametricEstimation

Nonparametric estimation for bayes classification
Python
7
star
11

PSMNet.tf

Tensorflow implementation for PSMNet
Python
7
star
12

tiny_mapping

Minimal implementation of point cloud mapping in Open3D.
Python
6
star
13

LidarUpsample

Upsampling method collection for non-uniform distributed LiDAR point cloud.  
C++
4
star
14

ToothBrushingQualityDetection

Java
3
star
15

STM32VirtualMouse

A Virtual STM32 USB HID Mouse
C
3
star
16

bottle_control

Python
3
star
17

sky_simulator

simulator form sky project
Python
2
star
18

WebSecureChattingTool

基于Vue和Nodjs的WEB前端加密工具
JavaScript
2
star
19

SLAM14

Code for the SLAM14 book.
C++
2
star
20

hd_map_storage

File storage for hd map.
2
star
21

OralDiseaseClassification

Python
2
star
22

sn_mdl

Python
2
star
23

Udacity-CS344-Projects

Code for Udacity CS344 CUDA assignment
Cuda
2
star
24

PaperReading

HTML
2
star
25

nlp_assignment_12

nlp_assignment12
Python
2
star
26

HVT_CS186_BPlusTree

Java
2
star
27

gitnote-image

gitnote图床
2
star
28

nme_front_end

NME网络演化模型的原型演示系统前端
JavaScript
2
star
29

kaggle_cat_dog

kaggle cat/dog recognization
Python
2
star
30

portable_detection.pytorch

X-Ray based portable detection.
Python
2
star
31

StyleGapDetection

lovedada
Python
2
star
32

Mybatis_Test

MyBatis测试
Java
2
star
33

carla_hdmap_visualization

Python
2
star
34

HViktorTsoi

1
star
35

HViktorTsoi.github.io

HTML
1
star
36

CUDA_interpolation

Cuda
1
star
37

electric_projector_screen

C++
1
star
38

ros_pcl_tools

A completion of ROS utilities for processing point clouds.
C++
1
star