=== Building === This library was tested on Windows (using MSVC 2008 and above), Mac, Linux and BSD. There was an optimizer issue in g++ 4.2 or earlier which causes the code to crash at runtime. You can download thestable sources in a zip file from SourceForge, or checkout the newest sources from the svn: $ mkdir slam $ cd slam $ svn checkout svn://svn.code.sf.net/p/slam-plus-plus/code/trunk . There is a CMakeFile. To be able to change the code and commit back to the svn, do an out-of-source build, like this: $ cd build $ cmake .. This will configure the project without any configuration. To change configuration, run cmake -i .. instead of the last line above (or at a later time, should a change in the configuration be needed). One interesting option is to specify the default linear solver. Supernodal CHOLMOD or block Cholesky are the fastest, CSparse is slightly slower and simplical CHOLMOD is the slowest. Another option is to enable GPU acceleration support, which currently applies to the Schur complement solver only (specify -us when running SLAM ++; requires CUDA and CULA toolkits). On Mac, you might want to configure your C and C++ compilers to be the GNU ones (e.g. from the MacPorts project) rather than Clang which does not support OpenMP nowadays and your code will be somewhat slower. You can do that by using: $ cmake -D CMAKE_C_COMPILER=/opt/local/bin/gcc-mp-4.7 \ $ -D CMAKE_CXX_COMPILER=/opt/local/bin/g++-mp-4.7 .. Where you might want to change the version to the latest one that you have installed. But it will build and run correctly even without that. $ make Will finish the building process. You should now be able to run by typing: $ ../bin/slam_plus_plus --help You can also use fast parallel build, like this: $ make -j And that should take care of the build. In case you are working on Windows, there is a pre-configured workspace inside the build15 folder in the source code distribution. In the previous CMake versions, there were varius issues with Windows. Since CMake 3.x, you can easily generate Visual Studio workspace using cmake-gui, that will work just as well. It only does not have project grouping, which is a very minor cosmetic issue. We tested this with Visual Studio 2008, 2012, 2013, 2015 and 2017. There is an internal compiler error in Visual Studio 2012 if Eigen complex BLAS is enabled (added an extra CMake option to enable it, as it is usually not needed). Some Ubuntu distributions have linking problem which yields errors such as: $ Timer.cpp:(.text+0x18): undefined reference to `clock_gettime' This is solved by adding the "-Wl,--no-as-needed" (written together, exactly like that) in the EXE_LINKER_FLAGS field in CMake (the "-lrt" option is already there by default and adding it won't change anything). If you have trouble building or during your development, you can visit https://sourceforge.net/p/slam-plus-plus/wiki/Bug%20Atlas to see descriptions of the commonly observed errors and ways to fix them. === Data === Data can be downloaded from SourceForge, at: http://sourceforge.net/projects/slam-plus-plus/files/data/ === References (please cite these if using this software) === V Ila, L Polok, M Solony and K Istenic, "Fast Incremental Bundle Adjustment with Covariance Recovery", proceedings of the International Conference on 3D Vision (3DV). Qingdao, China, 2017. L Polok and P Smrž, "Pivoting Strategy for Fast LU decomposition of Sparse Block Matrices", proceedings of the 25th High Performance Computing Symposium. Virginia Beach, USA, 2017. V Ila, L Polok, M Šolony and P Svoboda, "SLAM++. A Highly Efficient and Temporally Scalable Incremental SLAM Framework", The International Journal of Robotics Research, Online First, 2017, ISSN 1741-3176, DOI 10.1177/0278364917691110. L Polok, V Ila and P Smrž, "3D Reconstruction Quality Analysis and Its Acceleration on GPU Clusters," in proceedings of European Signal Processing Conference 2016. Budapest, Hungary, 2016. L Polok, V Lui, V Ila, T Drummond, R Mahony, "The Effect of Different Parameterisations in Incremental Structure from Motion," proceedings of the Australian Conference on Robotics and Automation. Australia, 2015. L Polok and P Smrz, "Increasing Double Precision Throughput on NVIDIA Maxwell GPUs," proceedings of the 24th High Performance Computing Symposium. Pasadena / Los Angeles, USA, 2016. S Pabst, H Kim, L Polok, V Ila, T Waine, A Hilton, J Clifford and P Smrz, "Jigsaw - Multi-Modal Big Data Management in Digital Film Production," SIGGRAPH (poster). Los Angeles, USA, 2015. L Polok, S Pabst, J Clifford, "A GPU-Accelerated Bundle Adjustment Solver," GPU Technology Conference 2015. San Diego, USA, 2015. M Solony, E Imre, V Ila, L Polok, H Kim and P Zemcik, "Fast and Accurate Refinement Method for 3D Reconstruction from Stereo Spherical Images," proceedings of the 10th International Conference on Computer Vision Theory and Applications. Berlin: Institute of Electrical and Electronics Engineers. Berlin, Germany, 2015. V Ila, L Polok, M Solony, P Zemcik, P Smrz, "Fast covariance recovery in incremental nonlinear least square solvers," proceedings of IEEE International Conference on Robotics and Automation (ICRA). Seatle, USA, 2015. L Polok, V Ila, P Smrz, "Fast Sparse Matrix Multiplication on GPU," 23rd High Performance Computing Symposium. Alexandria, USA, 2015 L Polok, V Ila, P Smrz, "Fast Radix Sort for Sparse Linear Algebra on GPU," 22nd High Performance Computing Symposium. Tampa, USA, 2014 L Polok, V Ila, M Solony, P Smrz and P Zemcik, "Incremental Block Cholesky Factorization for Nonlinear Least Squares in Robotics," in Proceedings of Robotics: Science and Systems 2013. MIT Press, 2013 L Polok, M Solony, V Ila, P Smrz and P Zemcik, "Incremental Cholesky Factorization for Least Squares Problems in Robotics," in Proceedings of The 2013 IFAC Intelligent Autonomous Vehicles Symposium (IFAC). 2013. L Polok, M Solony, V Ila, P Zemcik, and P Smrz, "Efficient implementation for block matrix operations for nonlinear least squares problems in robotic applications," in Proceedings of the IEEE International Conference on Robotics and Automation. IEEE, 2013. L Polok, V Ila and P Smrz, "Cache Efficient Implementation for Block Matrix Operations," in Proceedings of the 21st High Performance Computing Symposium. ACM, 2013. === Contact us === If a need arises to contact the authors of this implementation, use: viorela.ila 'at' anu.edu.au or lukas 'at' lukas-polok.cz or isolony 'at' fit.vutbr.cz
Wuxinxiaoshifu/SLAM_plus_plus
This is not official repo of SLAM++ (just my private copy for experiments) - GOTO official website
C++NOASSERTION