LSD-SLAM External Dependencies

As noted in the README, LSD-SLAM uses a number of “non-standard” external dependencies. For a number of reasons, I’ve provided the option to have CMake build a copy of those dependencies “in-tree” with LSD-SLAM — though this can be disabled with the BUILD_LOCAL_* flags in CMake. This was largely a matter of control. Most of the external deps had some slight wierdness or prickliness (or not-quite-right-CMake-iness). It made sense to essentially provide written instructions on getting the right configuration.

In a most cases I’ve taken the further step of using my own forks of a few of the repos within the LSD-SLAM code. In general these are for some fairly minor edits (could I do it with patch files instead?), but I thought it was worth documenting why I’d done what I’ve done.

  • G2O. Their original CMakeLists.txt was using @rpath for the libraries on OS X. I wanted full control over library paths to ensure we were always using the in-tree builds, so I made changes to CMakeLists. It might be possible to achieve the same thing by manipulating CMake on the command line. I might also be doing the rpath thing wrong.
  • g3log. Started by disabling the generated_definitions.hpp file which was causing extraneous rebuilding in the external project. This concern was reduced somewhat by removing the external projects from make all and sequestering them in make dep. I subsequently added an #define-level option to disable DEBUG messages as something of a halfway house to full dynamic logging.
  • Pangolin. I was having problems with OpenGL error 1280 with XQuartz on OS X. Don’t know the root of the problem, so I explicitly squelch it in the error reporting function. Also fiddled with the RPath settings for the dylib on OS X and issues with the FFMpeg API.

The following external projects are unchanged:

2 thoughts on “LSD-SLAM External Dependencies”

  1. RE:I was having problems with OpenGL error 1280

    –> Two opengl calls in GUI.cpp are only supported by Nvidia cards; others cause errors. You can safely comment out these two lines:

    void GUI::drawKeyframes()
    glHint(GL_MULTISAMPLE_FILTER_HINT_NV, GL_NICEST);

    void GUI::postCall()
    glGetIntegerv(GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX, &cur_avail_mem_kb);

Leave a Reply

Your email address will not be published. Required fields are marked *