Generate dense point cloud based on ORB-SLAM, and build indoor navigation map using OctoMap.
By adding a point cloud viewer, we can visualize dense point cloud during simultaneous localization and mapping. We also provide some useful tools in tools/*
, such as binary dictionary conversion and octree map conversion.
There are some prerequisites that need to be installed in advance (all passed on Ubuntu 16.04).
CMake is an open-source, cross-platform family of tools designed to build, test and package software:
$ sudo apt-get install cmake
The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library:
$ sudo apt-get install libglew-dev
We use Pangolin for visualization and user interface:
$ git clone https://github.com/stevenlovegrove/Pangolin.git
$ cd Pangolin
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
We use OpenCV to manipulate images and features:
$ sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev python-numpy python-matplotlib
$ cd opencv-3.2.0
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers and related algorithms:
$ sudo apt-get install libeigen3-dev
We use modified version of g2o library to perform non-linear optimizations:
$ cd Thirdparty/g2o
$ mkdir build && cd build
$ cmake ..
$ make
We use modified version of DBoW2 library to perform place recognition:
$ cd Thirdparty/DBoW2
$ mkdir build && cd build
$ cmake ..
$ make
Boost provides free peer-reviewed portable C++ source libraries:
$ sudo apt-get install libboost-all-dev
FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces:
$ sudo apt-get install libflann1.8 libflann-dev
Qt is the faster, smarter way to create innovative devices, modern UIs & applications for multiple screens:
$ chmod +x qt-opensource-linux-x64-5.8.0.run
$ ./qt-opensource-linux-x64-5.8.0.run
The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization:
$ cd VTK-8.1.1
$ mkdir build && cd build
$ cmake -DVTK_QT_VERSION:STRING=5 -DQT_QMAKE_EXECUTABLE:PATH=[PATH]/Qt5.8.0/5.8/gcc_64/bin/qmake -DVTK_Group_Qt:BOOL=ON -DCMAKE_PREFIX_PATH:PATH=[PATH]/Qt5.8.0/5.8/gcc_64/lib/cmake -DBUILD_SHARED_LIBS:BOOL=ON ..
$ make
The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing:
$ cd pcl-pcl-1.8.1
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
The OctoMap library implements a 3D occupancy grid mapping approach, providing data structures and mapping algorithms in C++ particularly suited for robotics:
$ sudo apt-get install libqglviewer-dev-qt4
$ git clone https://github.com/OctoMap/octomap.git
$ cd octomap
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
Computer Vision Group - Dataset Download
$ git clone https://github.com/necusjz/IndoorMapping.git
$ cd IndoorMapping
$ mkdir build && cd build
$ cmake ..
$ make
There are several useful commands and we also provide shell script version in scripts/*.sh
.
$ ./bin/rgbd_tum Vocabulary/ORBvoc.bin tests/TUM1.yaml Dataset/rgbd_dataset_freiburg1_room tests/association/fr1_room.txt
Execute this command, the dense point cloud will be visualized in a viewer like this:
$ ./tools/pcd2octomap map.pcd map.ot
$ ./tools/evaluate_ate.py Dataset/rgbd_dataset_freiburg1_room/groundtruth.txt CameraTrajectory.txt --plot result.png
This command will plot absolute trajectory error on a figure like this:
$ ./tools/evaluate_ate.py Dataset/rgbd_dataset_freiburg1_room/groundtruth.txt CameraTrajectory.txt --verbose
We love contributions! Before submitting a Pull Request, it's always good to start with a new issue first.
This repository is licensed under MIT. Full license text is available in LICENSE.