Coder Social home page Coder Social logo

kth-rgbd's Introduction

// kth-rgbd: Visual SLAM from RGB-D data
// Copyright (C) 2011-2015  Virgile Högman
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.


--------------------------------------------------------------------
Main URL
--------------------------------------------------------------------
http://code.google.com/p/kth-rgbd/

Checkout kth-rgbd code from SVN.
svn co https://kth-rgbd.googlecode.com/svn/trunk kth-rgbd

--------------------------------------------------------------------
Dependencies: g2o + OpenSIFT
--------------------------------------------------------------------
Dependencies have to be installed correctly before building kth-rgbd.
OpenSIFT and g2o require manual installation (but not at system level).

* g2o: A General Framework for Graph Optimization (OpenSLAM)
svn co https://svn.openslam.org/data/svn/g2o
Build the repository version in trunk.
Last tested with svn rev 54.

NOTE! CSPARSE BUILD IN G2O
CSparse is an optional package in g2o which provides also a redistribution in EXTERNAL.
If CSparse is not found by g2o it builds its own version called libg2o_ext_csparse.so
kth-rgbd uses this default behavior and looks for CSparse to know which headers and libs to use.
However this default behavior can also be changed with BUILD_CSPARSE option (using ccmake) in g2o.
A similar option G2O_BUILD_CSPARSE exists in kth-rgbd to force using EXTERNAL version built by g2o.
In any case kth-rgbd and g2o must be configured accordingly or there will be errors with the linker.

cd g2o/trunk
cd build
cmake ..
make

Note: the provided configuration kth-rgbd points to the build directory of g2o.
It is not necessary to make install g2o at system level.

* OpenSIFT Library - Rob Hess
http://robwhess.github.com/opensift/
(sub-dependencies -> GTK2, OpenCV)
git clone https://github.com/robwhess/opensift

Build the (static) library using MAKEFILE.
cd opensift
make

Note: the provided configuration kth-rgbd point to the build directory of OpenSIFT.
It is not necessary to make install OpenSIFT at system level.

--------------------------------------------------------------------
Dependencies (standard)
--------------------------------------------------------------------
URLs are given for reference, install preferably with package manager.

* OpenCV
http://opencv.willowgarage.com/
Last tested with 2.4.10

* OpenNI
https://github.com/OpenNI/OpenNI
Requires OpenNI 1 (not OpenNI 2 SDK) preferably >=1.5
Last tested with 1.5.7

* Point Cloud Libary
http://pointclouds.org/
Requires PCL>=1.7
Last tested with 1.7.2
(sub-dependencies -> cminpack, Flann)

* Boost Library
http://www.boost.org/
Requires Boost>=1.46 
Last tested with 1.57

* Eigen3
http://eigen.tuxfamily.org/
Last tested with 3.0.2-3


--------------------------------------------------------------------
HOWTO build
--------------------------------------------------------------------
Edit kth-rgbd/CMakeLists.txt and set the correct paths for:
set(g2o_SOURCE_DIR .../g2o/trunk)
set(OpenSIFT_DIR .../opensift)

The other packages should be found with standard cmake configuration files.

Build all using cmake: 
cd kth-rgbd 	#your SVN checkout directory
mkdir build
cd build
cmake ..
make

No installation step is required. Running scripts call the binary from the proper directory.

Troubleshooting - potential build problems
------------------------------------------
PB: if CSparse package is found by g2o then kth-rgbd may not link
SOL: configure g2o and kth-rgbd accordingly as described above. Not tested with SuiteSparse yet.

PB: OpenNI headers like XnCppWrapper.h not found
SOL: be sure to use OpenNI1 (not 2). With OpenNI<1.5 headers are in /usr/include/openni

PB: link problems with GTK and OpenSift
SOL: check instructions in CMakeLists.txt

--------------------------------------------------------------------
HOWTO run
--------------------------------------------------------------------
Check the configuration file containing the parameters (kth-rgbd.cfg)
No config operation should be required if the scripts are used.
Run those from the script directory.
The main purpose is to record scenes with at least one cycle in order to create loop closures.

cd script
./record.sh

This will open a window displaying the features but the registration is not started.
Commands can be launched from the GUI window or console.
To START: press any key. Frames are recorded in DIR_FRAMES.
To STOP: press ENTER. This will create the map in DIR_PROD.
To CANCEL: press ESC. Map is not created but the frames are kept.

If a loop closure is detected the initial and optimized map are produced.
If no loop closure is detected only the initial map is produced.
DIR_FRAMES and DIR_PROD can be changed in scripts/var_env.sh

[Short description of the scripts]
record: saves a sequence and builds map
sequence: replays a sequence from given frames previously recorded
main: calls main program with all the custom arguments (check usage)
archive_results: saves the results into a folder
restore_results: restores the results previously saved
clean: removes current results

--------------------------------------------------------------------
Known bugs / TODO
--------------------------------------------------------------------
Main problem is residual drift on vertical axis (Y).
Enable ICP alignment.
Redistribution of g2o and OpenSIFT?

--------------------------------------------------------------------
Contact
--------------------------------------------------------------------
Virgile Högman
PhD Student at CVAP, KTH Royal Institute of Technology
[email protected]

kth-rgbd's People

Contributors

virgile-hogman avatar

Forkers

simonsroad

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.