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.
- 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.
- 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!!! :)
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