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.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.