Skip to content

Visual SLAM

Anthony Olive edited this page Apr 14, 2017 · 12 revisions

Right now, there are three parallel paths to visual navigation:

Ralph & David: Forward camera SLAM and stereo point cloud generation

David: Visual Odometry from conventional optical flow

Tess: PTAM/DTAM + MonoSLAM for down-camera

Jake: SVO + MonoSLAM for down-camera


  • Work in an underwater "outdoor" environment
  • Handle occlusion due to opaqueness of water
  • Handle occlusion in general
  • Provide a motion estimate based on world knowledge, and not just integrating velocity (i.e. DVL)
  • Generate a traversibility map
  • Work in real-time


  • Do we need to enhance the simulator to support visual SLAM activities?
  • Do we need better cameras?
  • Should we consider using a signed Distance Function (SDF) for mapping? The researchers at TMU show that is significantly faster than Octrees and claim that it is robust to noise and occlusion. Their paper [5] is listed under references.


  • Down-camera and forward camera SLAM are almost certainly different problems. Each works with remarkably different scene disparity, and the forward cameras work with much more occlusion than the down-camera


Implementation Milestones

Topics that appear to be common to essentially every monocular SLAM implementation, or will likely come in handy

  • Depth-Filter

  • 2D-2D correspondence -> 3D transform estimation

  • Sparse bundle adjustment for depth initialization (Tools exist for this)


  • PTAM is widely regarded as one of the best MAV SLAM approaches

  • Why don't we just gather features and do the 5-pt algorithm?

    • The results are extremely noisy
    • Can't make a useful map/recover scene depth
    • No way to reason about the quality of the track produced
    • Each relative pose is known only to a translational scaling!!!!

General Knowledge



  • OpenGV - Open Geometric Computer Vision (C++)

    • Documentation is sparse (Maybe I'm not looking hard enough?)
  • OpenMVG - Open Multi-View Geometry Tools (C++)

    • (Is this a good idea?)
  • SBA - Sparse Bundle Adjustment library (C++)

  • Theia - Open Structure from Motion library

  • Ceres Solver - Google's very own "not-your-mother's-solver" NLLS/general minimization solver

  • RobotOptim - A robot optimization toolkit that binds to a IPOPT and a bunch of other optimization tools, doing all of the hard work. "Batteries included"

  • libviso (Crazy great visual odometry)


  • Structured Light Projector: 10 Lumens Pico Microvision laser projector
You can’t perform that action at this time.