GithubHelp home page GithubHelp logo

electronicdevil / indoormapping Goto Github PK

View Code? Open in Web Editor NEW

This project forked from necusjz/indoormapping

0.0 0.0 0.0 73.63 MB

Generate 3D dense point cloud based on ORB-SLAM, and build indoor navigation map using OctoMap.

License: Apache License 2.0

CMake 7.49% C++ 89.20% Python 2.92% Shell 0.38%

indoormapping's Introduction

IndoorMapping

This indoor mapping system is based on ORB-SLAM2. Add point cloud map module, you can visualize your point cloud map during the SLAM process. We also provide some conversion tools, such as binary dictionary and octree map (IndoorMapping/tools/*).

Prerequisites

Install some necessary dependencies for system operation, we have tested in Ubuntu 16.04.

CMake

CMake is an open-source, cross-platform family of tools designed to build, test and package software.

$ sudo apt-get install cmake

Glew

The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library.

$ sudo apt-get install libglew-dev

Pangolin

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 .

OpenCV

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

Eigen3

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

$ sudo apt-get install libeigen3-dev

g2o

We use modified version of g2o library to perform non-linear optimizations.

$ cd Thirdparty/g2o
$ mkdir build && cd build
$ cmake ..
$ make

DBoW2

We use modified version of DBoW2 library to perform place recognition.

$ cd Thirdparty/DBoW2
$ mkdir build && cd build
$ cmake ..
$ make

Boost

Boost provides free peer-reviewed portable C++ source libraries.

$ sudo apt-get install libboost-all-dev

FLANN

FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces.

$ sudo apt-get install libflann1.8 libflann-dev

Qt

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

VTK

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

PCL

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

OctoMap

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

Dataset

Computer Vision Group - Dataset Download

How to install

$ git clone https://github.com/ichigoi7e/IndoorMapping.git
$ cd IndoorMapping
$ mkdir build && cd build
$ cmake ..
$ make

Run examples

There are some useful manual commands, and we also provide some scripts to automate (IndoorMapping/*.sh).

Run test

$ ./bin/rgbd_tum Vocabulary/ORBvoc.bin test/TUM1.yaml Dataset/rgbd_dataset_freiburg1_room test/associations/fr1_room.txt

After this command, you can see the dense point cloud displayed in the viewer, like this:

Convert *.pcd to *.ot

$ ./tools/pcd2octomap map.pcd map.ot

Plot ATE image

$ ./tools/evaluate_ate.py Dataset/rgbd_dataset_freiburg1_room/groundtruth.txt CameraTrajectory.txt --plot result.png

This command will plot the first and the aligned second trajectory to an image, like this:

Print all evaluation data

$ ./tools/evaluate_ate.py Dataset/rgbd_dataset_freiburg1_room/groundtruth.txt CameraTrajectory.txt --verbose

What are modified

  • Add point cloud map module.
  • Add binary dictionary conversion tool.
  • Add octree map conversion tool.

indoormapping's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.