DSO

DSO - EFResidual

Posted by Tong on April 17, 2020

Direct sparse odometry

Variable

Variable Formula Description
JpJdF \(\begin{bmatrix} (\frac{\partial r_{ji}}{\partial \boldsymbol{\xi}_{ji}})^T\frac{\partial r_{ji}}{\partial \rho_{i}} \\ (\frac{\partial r_{ji}}{\partial \begin{bmatrix} -e^{a_{ji}} \\ -b_{ji}\end{bmatrix}})^{T}\frac{\partial r_{ji}}{\partial \rho_{i}} \end{bmatrix}\)  

Function

void fixLinearizationF()

/** \brief Fix a point's residual */
void fixLinearizationF(EnergyFunctional* ef);
  • This function is usually called when we want to remove some point, so we need to fix the residual (not update it anymore).
    • The formula to compute the residual is \(r_{ji} = r_{ji}^{0} + \begin{bmatrix} \frac{\partial r_{ji}}{\partial \mathbf{p}_{j}} & \frac{\partial r_{ji}}{\partial \mathbf{a}_{ji}}\end{bmatrix} \begin{bmatrix}\delta{\mathbf{p}_{j}} \\ \delta{\mathbf{a}_{ji}}\end{bmatrix}\), where
\[\delta \mathbf{p}_{j} = \begin{bmatrix} \frac{\partial \mathbf{p}_{j}}{\partial \mathbf{C}} & \frac{\partial \mathbf{p}_{j}}{\partial \boldsymbol{\xi}_{ji}} & \frac{\partial \mathbf{p}_{j}}{\partial \rho_{i}} \end{bmatrix} \begin{bmatrix} \delta \mathbf{C} \\ \delta \boldsymbol{\xi}_{ji} \\ \delta \rho_{i} \end{bmatrix}\] \[\delta{\boldsymbol{\xi}_{ji}} = \begin{bmatrix} \frac{\partial \boldsymbol{\xi}_{ji}}{\partial \boldsymbol{\xi}_{iw}} & \frac{\partial \boldsymbol{\xi}_{ji}}{\partial \boldsymbol{\xi}_{jw}}\end{bmatrix} \begin{bmatrix}\delta{\boldsymbol{\xi}_{iw}} \\ \delta{\boldsymbol{\xi}_{jw}}\end{bmatrix}\] \[\delta{\mathbf{a}_{ji}} = \begin{bmatrix} \frac{\partial \mathbf{a}_{ji}}{\partial \mathbf{a}_{i}} & \frac{\partial \mathbf{a}_{ji}}{\partial \mathbf{a}_{j}}\end{bmatrix}\begin{bmatrix} \delta{\mathbf{a}_{i}} \\ \delta{\mathbf{a}_{j}}\end{bmatrix}\]