aliwaqas333 / openvslam

openvslam adapted to be built in eclipse cdt, tested, and may be modified.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Welcome

Original openvslam was adapted to be built on eclipse instead of using cmake, to allow programmers modify the code mainly for testing and usability purposes.

This project is built in eclipse CDT with C++17 and opencv 4, on Ubuntu 20.04. Should work on any:

  • C++11+ (this can change if I start rewritting using ranges)
  • any C++ IDE, but tips in this file asume you're using eclipse CDT and gcc
  • opencv 3+
  • any Debian (it includes any Ubuntu, any Linux Mint...)

This readme will be updated with status and compilation tips. Please read ORIGINAL README.md, a copy from the original openvslam README.

Status

Finshed.

This is finished and unpolished work started and finished on May 2020. Work on this is no longer expected, but can happen any time on without guarantee.

May 25, 2020, it compiles and runs, interactive GUI appears on screen, two threads have names (openVSLAM and Viewer, useful for debugging), but it isn't grabing images from input video file. No errors.

Compilation tips

You need dependencies installed as indicated in openvslam installation manual.

You also need orb_vocab_dbow2, a 44MB file provided with openvslam.

The following setting are already set up in eclipse .project files in this repository.

Libraries settings

You'll need to set up these dependencies libraries in your IDE:

Assuming local viewer (I didn't try web viewer):

  • pangolin
  • GL
  • GLEW

OpenCV (this list may contain some unneeded opencv library):

  • opencv_core
  • opencv_imgproc
  • opencv_highgui
  • opencv_features2d
  • opencv_calib3d
  • opencv_video
  • opencv_videio
  • opencv_imgcodecs

g2o:

  • g2o_core
  • g2o_stuff
  • g2o_types_sba
  • g2o_types_sim3
  • g2o_solver_dense
  • g2o_solver_eigen
  • g2o_solver_csparse
  • g2o_csparse_extension
  • cxsparse

other:

  • gomp
  • tbb
  • yaml-cpp

Include paths

  • /usr/include/suitesparse
  • /usr/local/include/eigen3
  • /usr/local/include/opencv4 <= Only if you have opencv 4!
  • "${workspace_loc:/${ProjName}/src}"
  • "${workspace_loc:/${ProjName}/3rd/popl/include}"
  • "${workspace_loc:/${ProjName}/3rd/spdlog/include}"
  • "${workspace_loc:/${ProjName}/3rd/json/include}"

Preprocessor constants

Also, set up these preprocessor settings in your IDE:

  • USE_PANGOLIN_VIEWER
  • USE_DBOW2

Miscelanous

  • GCC C++ compiler dialect: ISO C++17
  • GCC C++ compiler miscelanous: Support for pthreads
  • GCC Linker General: Support for pthreads

May there be warnings about uninitialized members en spdlog/thread_pool.h .

Exclude source

This folders are excluded from compilation:

  • cmake
  • docs
  • example
  • ros
  • test
  • src/socket_publisher

Changes in code

  • Some zero initialization on uninitialized members to silence warnings
  • Changed #include <Eigen/... with #include <eigen3/Eigen/... because eigen3/Eigen can be found in usual include path. Adding the include path /usr/local/include/eigen3 didn't work for me, I don't know why.
  • src/main.cc is based on example/run_video_slam.cc

About

openvslam adapted to be built in eclipse cdt, tested, and may be modified.

License:Other


Languages

Language:C++ 92.9%Language:CMake 4.8%Language:JavaScript 1.9%Language:C 0.3%Language:HTML 0.1%Language:Dockerfile 0.0%