An open source project that provides a probabilistic framework for global localization using segmented planes.
Prerequesties:
-Boost
-Eigen
-PCL 1.8
-OpenCV >= 3.0
-g2o
-CGAL
If you find PlaneLoc useful in your academic work please cite the following paper:
@article{wietrzykowski2019,
title = {{PlaneLoc}: Probabilistic global localization in {3-D} using local planar features},
author = {Jan Wietrzykowski and Piotr Skrzypczy\'{n}ski},
journal = {Robotics and Autonomous Systems},
volume = {113},
pages = {160 - 173},
year = {2019},
issn = {0921-8890},
doi = {https://doi.org/10.1016/j.robot.2019.01.008},
url = {http://www.sciencedirect.com/science/article/pii/S0921889018303701},
keywords = {Global localization, SLAM, Planar segments, RGB-D data},
}
Tested on Ubuntu 16.04.
- Install Boost, Eigen, and CGAL:
sudo apt-get install libboost-system-dev libboost-filesystem-dev libeigen3-dev libcgal-dev
- Build PCL from sources and install it:
sudo apt-get install libvtk6-dev libflann-dev libxi-dev libxmu-dev libgtest-dev libproj-dev
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.1.tar.gz
tar xvfj pcl-pcl-1.8.1.tar.gz && cd pcl-pcl-1.8.1
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo make install
- Build OpenCV from sources and install it:
wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.1.0/opencv-3.1.0.zip
unzip opencv-3.1.0.zip && cd opencv-3.1.0
mkdir build && cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install
- Build g2o and install it:
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
- Build PlaneLoc:
mkdir build && cd build
cmake ..
make -j$(nproc)
Dataset is available here.
Accumulated representation files can be generated by setting processFrames
to 1 in settings file. Map is saved in file ../output/acc/acc%05d
every time new accFrames
are processed, so for maps of the whole environment set accFrames
to the number frames in the whole trajectory. For local maps set it to the desired length (usually 50 frames is a good compromise between the map size and the frequency of the localization). If you want to use precomputed local maps set processFrames
to 0 and place generated maps in acc
folder in a trajectory folder.
- Adjust settings file in res/settings.yml for your dataset.
- Launch demo:
./demoPlaneSlam -s ../res/settings.yml