This repository contains the Python code that accompanies our paper "Long-Term Urban Vehicle Localization Using Pole Landmarks Extracted from 3-D Lidar Scans" submitted to the European Conference on Mobile Robots. The implementation allows to
- extract the parameters of pole-like objects from 3-D lidar scans,
- create a global reference map of pole landmarks,
- localize a vehicle online based on the reference map and live lidar measurements,
- replicate the experiments on the NCLT dataset and on the KITTI dataset described in the paper.
It provides the following three software modules.
This module takes odometry and 3-D lidar scans accumulated over a short trajectory segment as input, searches for pole-like objects in the data, and outputs the parameters of the corresponding pole estimates.
Pole extraction from NCLT lidar data.
Pole extraction from KITTI lidar data.
Given a set of possibly overlapping local landmark maps generated by the pole extractor, this module resolves all ambiguities and creates a global reference map of pole landmarks.
KITTI landmark map with vehicle trajectory.
On the basis of the global map, live odometry measurements, and pole landmark estimates, this module computes an estimate of the current vehicle pose using a particle filter.
Particle filter localization on NCLT.
The red dots denote the particles, the blue dots denote the reference landmarks, ad the black crosses visualize the online landmarks.
First of all, please make sure you are running Python 2.7.
While the pole extractor is represented by its own Python module poles.py, the mapping and localization module are implemented separately for NCLT (ncltpoles.py) and KITTI (kittipoles.py) due to the different representations of the datasets. For closer information about the workings of the implementation, please read the paper and follow the source code documentation.
In order to run the scripts with the experiments on NCLT (ncltpoles.py) and KITTI (kittipoles.py), please install the package manager pip
via
sudo apt install python-pip python-tk
and use it to install the following Python packages:
pip install numpy matplotlib open3d-python progressbar pyquaternion transforms3d scipy scikit-image networkx psutil
Then, please check out the ray tracing repository and build it.
With these prerequisites, you are ready to run the experiments and the different modules.