Skip to content

Commit c16e1c7

Browse files
authored
Update README.md
Add documentation from 2019
1 parent 6514e03 commit c16e1c7

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

README.md

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,39 @@
1-
# QDVO: Quasi-Direct Visual-Inertial Odometry
1+
# [QDVO: Quasi-Direct Visual Odometry](https://youtu.be/pYeO0l5dH5Q)
22

3+
[![Presentation](https://img.shields.io/badge/Purdue_AAE_RSS-Presentation-blue)](QDVO_presentation.pdf)
34
![](https://github.com/k-sheridan/qdvo/workflows/C/C++%20CI/badge.svg)
5+
6+
QDVO is a real-time monocular visual odometry algorithm which combines the benefits of a indirect and direct methods. It does this by modelling point correspondences with a non-gaussian *correspondence distribution*. By doing this, QDVO is able to use both corner and edge landmarks which overcoming the sensistivity to illumination changes often seen with direct (photometric) methods.
7+
8+
This work was presented at [Purdue's AAE Research Symposium Series in 2019](https://engineering.purdue.edu/AAE/academics/studentorgs/aaerss/past_presenters/index_html) and won "Best Undergraduate Presentation". You can find the slides for this presentation [here](https://github.com/k-sheridan/qdvo/blob/master/QDVO_presentation.pdf).
9+
10+
## Demo Videos
11+
[![TUM VI Demo](http://img.youtube.com/vi/TU5lfFeBUuo/0.jpg)](https://youtu.be/TU5lfFeBUuo)
12+
[![Euroc V101 Demo](http://img.youtube.com/vi/5oMmafv2QXk/0.jpg)](https://youtu.be/5oMmafv2QXk)
13+
14+
# A Note on Correspondence Distributions
15+
16+
The correspondence distributions are represented with gaussian mixture models. In QDVO, the similarity score used is ZNCC. To ensure convergence far from the optimial solution, QDVO filters low similarity pixels in the correspondence distribution.
17+
<img width="950" height="536" alt="correspondence_distribution" src="https://github.com/user-attachments/assets/0e6de5ba-1b13-4a2d-a1ca-65095fa17b96" />
18+
19+
## Quasi-Direct Residual
20+
To ensure we can efficiently minimimize the negative log likelihood, QDVO uses *Iteratively Reweighted Non-Linear Least Squares* optimization. By doing this, QDVO is able to practically bound the compute per residual by exploiting the exponential fall-off in the influence of far away gaussians in the GMM.
21+
<img width="953" height="637" alt="Quasi-Direct_Residual_1" src="https://github.com/user-attachments/assets/a101fa79-1840-41cd-9ff6-195f34577c2f" />
22+
<img width="949" height="714" alt="Quasi-Direct_Residual_2" src="https://github.com/user-attachments/assets/b881e9eb-01a2-44d5-aefa-268b37ebac5d" />
23+
24+
# ArgMin: a semi-generic, fully templated optimizer designed for Sliding Window Estimators
25+
26+
The CPP implementation of QDVO is based on a custom optimizer with the following capabilities:
27+
- Supports arbitrary manifold variables
28+
- Built in support for SE3, SO3, InverseDepth, and Scalar
29+
- Supports arbitrary error terms
30+
- Built in support for marginalization of error terms and variables into a gaussian prior
31+
- Based on a Sparse Schur Solver implementation to exploit sparsity in landmark variables.
32+
- Built on top of [SlotMap and Slot Array](docs/source/SlotMap.md) implementation for cache friendly access of sub-matrices
33+
34+
## ArgMin: Examples
35+
The most complete example on how to use ArgMin is in this test: [TestArgMinExampleProblem.cpp](https://github.com/k-sheridan/qdvo/blob/master/test/TestArgMinExampleProblem.cpp)
36+
37+
## ArgMin: Documentation
38+
The most complete documentation of ArgMin's SSEOptimizer can be found [here](docs/source/SSEOptimizer.md)
39+

0 commit comments

Comments
 (0)