Permalink
Browse files

first commit

  • Loading branch information...
strasdat committed Dec 3, 2011
0 parents commit 9b8c4eabd0dae8ace7bb2ecb2bd1be6bd425b148
Showing with 16,350 additions and 0 deletions.
  1. +165 −0 LICENSE
  2. +179 −0 README
  3. +24 −0 data/newcollege.cfg
  4. BIN data/surfwords10000.png
  5. +149 −0 src/CMakeLists.txt
  6. +1,311 −0 src/CMakeModules/FindCUDA.cmake
  7. +79 −0 src/CMakeModules/FindCUDA/make2cmake.cmake
  8. +112 −0 src/CMakeModules/FindCUDA/parse_cubin.cmake
  9. +280 −0 src/CMakeModules/FindCUDA/run_nvcc.cmake
  10. +969 −0 src/backend.cpp
  11. +203 −0 src/backend.h
  12. +180 −0 src/data_structures.h
  13. +308 −0 src/dense_tracking.cpp
  14. +91 −0 src/dense_tracking.h
  15. +338 −0 src/draw_items.h
  16. +153 −0 src/fast_grid.cpp
  17. +66 −0 src/fast_grid.h
  18. +142 −0 src/frame_grabber-impl.cpp
  19. +337 −0 src/frame_grabber.cpp
  20. +237 −0 src/frame_grabber.hpp
  21. +389 −0 src/g2o_types/anchored_points.cpp
  22. +183 −0 src/g2o_types/anchored_points.h
  23. +141 −0 src/global.h
  24. +879 −0 src/gpu/cuPrintf.cu
  25. +162 −0 src/gpu/cuPrintf.cuh
  26. +569 −0 src/gpu/dense_tracking.cu
  27. +344 −0 src/gpu/dense_tracking.cuh
  28. +39 −0 src/homography.cpp
  29. +37 −0 src/homography.h
  30. 0 src/keyframes.cpp
  31. +92 −0 src/keyframes.h
  32. +70 −0 src/matcher-impl.cpp
  33. +462 −0 src/matcher.cpp
  34. +172 −0 src/matcher.hpp
  35. +162 −0 src/maths_utils.cpp
  36. +135 −0 src/maths_utils.h
  37. +315 −0 src/placerecognizer.cpp
  38. +117 −0 src/placerecognizer.h
  39. +501 −0 src/pose_optimizer.h
  40. +801 −0 src/quadtree.h
  41. +30 −0 src/ransac-impl.cpp
  42. +138 −0 src/ransac.cpp
  43. +47 −0 src/ransac.hpp
  44. +183 −0 src/ransac_models.cpp
  45. +96 −0 src/ransac_models.h
  46. +69 −0 src/rgbd_grabber.cpp
  47. +36 −0 src/rgbd_grabber.h
  48. +248 −0 src/slam_graph-impl.cpp
  49. +1,105 −0 src/slam_graph.cpp
  50. +618 −0 src/slam_graph.hpp
  51. +54 −0 src/stereo_camera.cpp
  52. +88 −0 src/stereo_camera.h
  53. +824 −0 src/stereo_frontend.cpp
  54. +255 −0 src/stereo_frontend.h
  55. +729 −0 src/stereo_slam.cpp
  56. +937 −0 src/transformations.h
165 LICENSE
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
179 README
@@ -0,0 +1,179 @@
+*** NOTES AND WARNINGS / READ FIRST ***
+
+This library is research-level software which is in development.
+This is NOT a release version. For sure, features will be added,
+bugs will be fixed and the API will change in the future.
+
+Even thought the software is in principal designed to run cross-plattfrom,
+it most likely will only work on a recent 64-bit linux (without the need
+of adaptations...) It was tested on Ubuntu 11.10 - 64 bit.
+
+(Note there might be problems on 32bit linux related to Eigen3.
+ http://eigen.tuxfamily.org/dox/TopicUnalignedArrayAssert.html.
+ I followed the guide describe on this website, but I have not tested it on
+ 32-bit linux yet. Any bug reports/patches are welcome!)
+
+WARNING: There is a bug concerning Eigen3 and gcc/g++-4.4. Do not compile
+ScaViSLAM, g2o, etc. using gcc/g++-4.4! It will compile but might produce wrong
+results! To find out your compiler version type "g++ -v".
+see:
+ http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2011/04/msg00013.html
+&
+ http://comments.gmane.org/gmane.comp.lib.eigen/2046
+ (Yes, CUDA 4.0 requires gcc/g++-4.4. Simply set the default compiler to
+ gcc/g++-4.5 or 4.6..., but compile your CUDA code using gcc/g++-4.4, e.g.
+ see http://hdfpga.blogspot.com/2011/05/install-cuda-40-on-ubuntu-1104.html)
+
+
+***INSTALLATION***
+
+First download sample image sequences. This will take a while, so do it first.
+(These are already rectified stereo images from the New College dataset:
+http://www.robots.ox.ac.uk/NewCollegeData/)
+
+>>
+cd MY_DATA_DIRECTORY
+mkdir newcollege
+cd newcollege
+wget -nH --cut-dirs=4 -r -l2 --no-parent -A "*.pnm" http://pub1.willowgarage.com/~konolige/data/NewCollege/FullData/StereoImages_1225720041.455302_to_1225720118.251935
+wget -nH --cut-dirs=4 -r -l2 --no-parent -A "*.pnm" http://pub1.willowgarage.com/~konolige/data/NewCollege/FullData/StereoImages_1225720118.301927_to_1225720193.248630
+wget -nH --cut-dirs=4 -r -l2 --no-parent -A "*.pnm" http://pub1.willowgarage.com/~konolige/data/NewCollege/FullData/StereoImages_1225720193.298630_to_1225720268.945303
+<<
+
+Now, checkout/clone the ScaViSLAM repository.
+
+>>
+cd MY_SOFTWARE_DIRECTORY
+git clone git@github.com:strasdat/ScaViSLAM.git
+<<
+
+Now, enter the project directory
+
+>>
+cd ScaViSLAM
+<<
+
+and then enter the directory for EXTERNAL libraries:
+
+>>
+cd EXTERNAL
+<<
+
+The ScaViSLAM build system is designed in a way such that all
+dependencies are installed locally in a sub-folder. In this way we avoid
+version conflicts (e.g. different OpenCV version which might be installed
+system-wide). Please follow the guide step by step and only deviate form
+it if you reallty know what you are doing ;-)
+
+Check out and install g2o (revision 22):
+
+>>
+svn co -r 22 https://svn.openslam.org/data/svn/g2o/trunk g2o
+cd g2o
+mkdir svs_build
+cd svs_build
+cmake ..
+make
+cd ../..
+<<
+
+Download and install opencv (version 2.3.1a) inside EXTERNAL:
+
+>>
+wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2
+tar xvf OpenCV-2.3.1a.tar.bz2
+mv OpenCV-2.3.1 opencv2
+cd opencv
+mkdir svs_build
+cd svs_build
+cmake ..
+<<
+
+If you wish to use CUDA support, which is highly recommended, make
+sure OpenCV recognizes CUDA ("Use Cuda: YES").
+
+>>
+make
+<<
+
+In case you get an compiler error in "cap_ffmpeg.cpp", simply
+deactive "USE_FFMPEF", e.g. using cmake-gui.
+
+>>
+cd ../..
+<<
+
+Download eigen (version 3.0.3) in folder EXTERNAL
+
+>>
+wget http://bitbucket.org/eigen/eigen/get/3.0.3.tar.bz2
+tar xvf 3.0.3.tar.bz2
+mv eigen-eigen-3.0.3/ eigen3
+<<
+
+Clone and install Pangolin (68d75c2d54450d90efd2e6e2cfcd72a6a599ef58)
+
+>>
+git clone -v https://github.com/stevenlovegrove/Pangolin.git
+cd Pangolin
+git checkout 68d75c2d54450d90efd2e6e2cfcd72a6a599ef58
+mkdir svs_build
+cd svs_build
+cmake ..
+make //or "make -j8"
+cd ../..
+<<
+
+Clone and install Sophus in folder EXTERNAL
+
+>>
+git clone git@github.com:strasdat/Sophus.git
+cd Sophus
+mkdir svs_build
+cd svs_build
+cmake ../src
+make
+cd ../..
+<<
+
+Install VisionTools in folder EXTERNAL
+
+>>
+git clone git@github.com:strasdat/VisionTools.git
+cd VisionTools
+mkdir svs_build
+cd svs_build
+cmake ../src
+make
+<<
+
+Move to main project folder "ScaViSLAM" and install ScaViSLAM:
+
+>>
+cd ../../../
+mkdir svs_build
+cd svs_build
+<<
+
+In case you would like to compile ScaViSLAM WITHOUT CUDA support, open
+"../src/CMakeLists.txt" using your favorite editor and change
+"SET(CUDA_SUPPORT ON)" --> "SET(CUDA_SUPPORT ON)".
+
+>>
+cmake ../src
+make
+<<
+
+Make sure the "New College" data set is downloaded completely.
+Then add a sym-link inside "ScaViSLAM/data":
+
+>>
+cd ../data
+ln -s PATH_TO_MY_DATA_DIRECTORY/newcollege newcollege
+<<
+
+Run ScaViSLAM on new college image sequence:
+>>
+cd ../svs_build
+./stereo_slam ../data/newcollege.cfg
+<<
@@ -0,0 +1,24 @@
+cam.width = 512;
+cam.height = 384;
+cam.f = 389.956085;
+cam.px = 254.903519 ;
+cam.py = 201.899490;
+cam.baseline = 0.120005;
+framepipe.skip_imgs = 0;//240;
+framepipe.mask_img = 0;
+framepipe.disp_img = 0;
+framepipe.right_img = 1;
+framepipe.color_img = 1;
+framepipe.format_str = pnm;
+framepipe.path_str = /home/strasdat/data/test;
+framepipe.base_str = .*rectified.*;
+frontend.save_dense_cloud = 1;
+frontend.new_keyframe_featureless_corners_thr = 1;
+frontend.new_keyframe_pixel_thr = 70;
+frontend.newpoint_clearance = 2;
+frontend.num_frames_metric_loop_check = 50;
+frontend.covis_thr = 25;
+graph.outer_window = 300;
+graph.inner_window = 25;
+use_n_levels_in_frontent = 3;
+ui_parallax_thr = 0.75
Binary file not shown.
Oops, something went wrong.

0 comments on commit 9b8c4ea

Please sign in to comment.