Skip to content

apl-ocean-engineering/lsd-slam

 
 

Repository files navigation

LSD-SLAM: Large-Scale Direct Monocular SLAM

See my Development Blog for current status.

December 2017 Not as much time as I would like to work on this over the last year (clearly). One thing I've discovered is I'm not a huge fan of Conan. I ended up making a lot of infrastructure to get what I wanted out of it --- which was the ability to define dependencies and have them all built locally. ======= See my Development Blog for current status.

So if you've got here, I've thrown out Conan and moved to fips. fips ain't perfect, but it does the job I need it to do.

It's good enough I'm deprecating the Conan build. If you don't want to use fips, see the cmake branch.

If you really loved the Conan build, the last commit with Conan is 7b8b76f.

This also means master no longer builds Thomas' Pangolin-based GUI. That's now in its own repo which includes this repo. Think of this repo as the "LSD SLAM Library (w/o a GUI)", with frontends elsewhere...

This fork started from Thomas Whelan's fork which "relieves the user of the horrors of a ROS dependency and uses the much nicer lightweight Pangolin framework instead."

Here is Jakob's original description:

LSD-SLAM is a novel approach to real-time monocular SLAM. It is fully direct (i.e. does not use keypoints / features) and creates large-scale, semi-dense maps in real-time on a laptop. For more information see http://vision.in.tum.de/lsdslam where you can also find the corresponding publications and Youtube videos, as well as some example-input datasets, and the generated output as rosbag or .ply point cloud.

This repo contains my experiments with LSD-SLAM, for performance, functionality and structure. As of November 2016, it diverges significantly from either Jakob or Thomas's branches in structure (I refactored as a way of learning the code), but not significantly in terms of functionality (except for all the ways in which I've broken it in the refactoring).

master is my working / stable-ish branch. unstable is my really unstable branch. Please note: BOTH BRANCHES ARE MOVING TARGETS. it's just that unstable is, uh, moving faster.

Quickstart

My targeted environments are Ubuntu 18.04/16.04, the Jetson TX1 using NVidia Jetpack 2.3 , and OS X 10.12 with Homebrew.

If you want a GUI, start with to lsd-slam-pangolin-gui

Common jobs are encoded in Makefile.This includes tasks for installing dependencies (in Travis and Docker images for example), and for automating building and testing.

Assuming all of the "standard" (apt-gettable/Brew-able) deps have been installed,

./fips gen
./fips build

Both configuration (Release vs. Debug) and platform are controlled through fips settings, so on a linux machine, either

./fips gen linux-make-release
./fips build linux-make-release

or

./fips set config linux-make-release
./fips gen
./fips build

will build release binaries. linux-make-debug will build debug binaries and the unit tests.

======

Running

Supports directories or sets of raw images. For example, you can download any dataset from here, and run:

./fips run LSD -- -c datasets/LSD_machine/cameraCalibration.cfg -f datasets/LSD_machine/images/

I've started to document my performance testing in doc/Performance.md

=======

Docker

For repeatability, builds can occur inside a Docker container. To do this, first run rake docker:image which is create a local copy of the development Docker image called lsdslam-build:local. This is a minor iteration on the published amarburg/lsdslam-dev-host image.

Then rake docker:debug:build or rake docker:release:build which will build the release in a Docker container up through testing.

This build process will mount and build the current source tree in its own build_docker-* tree, which is not ephemeral.

For now the Docker process is focused on building and testing, not actually running in the Docker image. Soon enough...

5. Related Papers

  • LSD-SLAM: Large-Scale Direct Monocular SLAM, J. Engel, T. Schöps, D. Cremers, ECCV '14

  • Semi-Dense Visual Odometry for a Monocular Camera, J. Engel, J. Sturm, D. Cremers, ICCV '13

License

LSD-SLAM is licensed under the GNU General Public License Version 3 (GPLv3), see http://www.gnu.org/licenses/gpl.html.

TODOS

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.7%
  • CMake 3.0%
  • Other 0.3%