Skip to content

krrish94/dvo_python

Repository files navigation

dvo_python: Dense visual odometry in Python(3.6(.6))

Coded up in slightly longer than a night! :)

Someone tweeted about this elegant implementation , and that's what made my day (rather, my night). I was like, "Hmm, a good refresher on dense SLAM would be to implement this, let me do it in Python."

The first coding sprint ran for about 7.5 hours, in which I implemented most of the framework, i.e., the residual and Jacobian computation, and a simplish gradient-descent optimizer.

Micromanagement

  • Work out dependencies (numpy, OpenCV, some SE(3) package(??), matplotlib)
  • Read in a pair of pointclouds and visualize them
  • Construct image and depth pyramids
  • Compute the residual (warping error)
  • Implement SE(3) routines
  • Implement image gradient computation
  • Compute Jacobian of the error function
  • Write a Gradient-descent optimizer
  • Write a Gauss-Newton optimizer
  • Robustify the error function (IRLS / M-Estimators)
  • Debug the two-image alignment case
  • Extend to a sequence of several images
  • Setup class to load a TUM RGB-D sequence and run dvo _python on it.
  • Debug!
  • Check for any possibile visualization glitches/enhancements.

Big picture checklist

  • Barebones version of repo up
  • Chalk out repo structure, order in which to code
  • Put the order up as a checklist
  • Code & Debug (on a pair of images)!
  • Code & Debug on a sequence of images
  • Get it to run on TUM RGB-D!
  • Benchmark (time and accuracy)
  • Finish up documentation and README
  • Take a moment to revel in a sense of accomplishment ;)
  • Get some sleep!!! :)

Activity Log

Times are in 24-hour format.

Night 1: 21 November-22 November 2018

  • 2000 - 2020: Chalk out action plan.
  • 2020 - 2050: Dinner break.
  • 2100 - 2130: Download a sequence from TUM RGB-D, load and display stuff
  • 2140 - 2300: Build pyramid levels (plus a lot of interruptions :|)
  • 2330 - 0115: Compute the photometric warp error
  • 0115 - 0145: Get SE(3) helper functions in
  • 0200 - 0220: Image gradient computation, fetch SE(3) Jacobian helper functions
  • 0220 - 0310: Implement Jacobian computation
  • 0310 - 0330: Implement gradient descent optimizer

Day 2: 22 November 2018

  • 1100 - 1130: Vectorize image pyramid level construction
  • 1614 - 1645: Vectorize edge-preserving depth pyramid level construction

About

Coding dense visual odometry in a little more than a night (yikes)!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages