zhutongseu1994 / lidar_localization

A framework of lidar mapping and localization with strong extensibility

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Extensible framework of lidar mapping and localization

This is a framework of lidar mapping and localization with strong extensibility. Mapping and matching are separate parts of the framework. Mapping contains data pretreat, front end, back end, loop closing and viewer. Matching contains data pretreat and map matching. The characteristic of this framework is that most of it's modules can be replaced very easily with the help of polymorphism in c++. For example, you can replace ndt with icp in the front end, or replace g2o with gtsam in the back end without change code in the flow. Therefor, it is a good framework for research.

Modifier: Qian Ren

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04. ROS Kinetic.

sudo apt-get install ros-kinetic-desktop-full

1.2. G2O

To avoid version problems, we provide the setup file of g2o in the setup_file directory. Install it follow the readme in G2O Installation

1.3. PCL

sudo apt-get install libpcl-all

1.4. kitti2bag

sudo pip install -U numpy
sudo pip install kitti2bag

2. Build lidar_localization

Clone the repository and catkin_make:

    cd ~/catkin_ws/src
    git clone https://github.com/Little-Potato-1990/lidar_localization
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

4. KITTI Example (Velodyne HDL-64)

4.1 KITTI Data to Bagfile

Download KITTI raw_data dataset to DATASET_PATH.
For example “2011_10_03_drive_0027_sync.zip” and “2011_10_03_calib.zip”(the calibration file is necessary), unzip the files and put them according to this

then run

cd DATASET_PATH
kitti2bag -t 2011_10_03 -r 0027 raw_synced

then we will get kitti_2011_10_03_drive_0027_synced.bag in the directory.

4.2 Mapping

run

roslaunch lidar_localization mapping.launch
rosbag play kitti_2011_10_03_drive_0027_synced.bag

then mapping begin

when the saw mapping is over in rviz, run

rosservice call /optimize_map

then the full cloud map will display in rviz.
to save map to pcd file, run

rosservice call /save_map

then "map.pcd" and "filtered_map.pcd" will be saved in the directory "lidar_localization/slam_data/map"

4.3 Matching

input the path of "filtered_map.pcd" in "config/matching/matching.yaml" with the param "map_path",run

roslaunch lidar_localization matching.launch
rosbag play kitti_2011_10_03_drive_0027_synced.bag

then the matching begin

5. Extend the Framework

5.1 Replace Module

the modules of the mapping part is separate, we can replace anyone of them. For example, the front end module can be replaced with A-LOAM, when you have compile the project of A-LOAM, you can run

roslaunch lidar_localization mapping_with_aloam.launch

in this project. Further more, you can replace it with any other lidar odom.

5.2 Add New Algorithms

the pointcloud registration is NDT in the frong end, if you want use ICP, you can add another child class of the virtual base class named "PointCloudInterface". Follow this method, you can add many other algorithms in the directory "lidar_localization/models".

About

A framework of lidar mapping and localization with strong extensibility


Languages

Language:C++ 95.3%Language:CMake 4.7%