vSLAM位姿优化中雅克比矩阵的求解

Last updated on November 26, 2023 pm

[TOC]

概述

SLAM,即 同时定位与建图,视觉SLAM的 定位 即 求取相机位姿(旋转和平移 $[\mathbf{R} \quad \mathbf{t}]$);在SLAM中,我们一般使用 李代数 $\boldsymbol{\xi}$ 来表示 旋转和平移。

  • 记 相机内参矩阵 $\mathbf{K}$,相机位姿 $\mathbf{T} = [\mathbf{R} \quad \mathbf{t}]$ (or $\boldsymbol{\xi}$)

  • 记 $I_1$ 的图像坐标系下,一像素点 $\mathbf{p}(u,v)$;在 $O_1$ 相机坐标系下,其对应的 三维点 $\mathbf{P}(X,Y,Z)$

  • 记 $I2$ 的图像坐标系下,一像素点 $\mathbf{p’}(u’,v’)$;在 $O_2$ 相机坐标系下,其对应的 三维点 $\mathbf{P’}(X’,Y’,Z’)$,归一化坐标为$\mathbf{p’}{norm}$

优化位姿 时,其思想是构造一个关于位姿变化的误差函数,当这个误差函数最小时,认为此时估计的位姿最优。视觉SLAM主要分为 直接法 和 特征点法,但无论是直接法还是特征点法,位姿的迭代优化都是求解一个 最小二乘问题

  • 直接法 最小化 光度误差,即 前后帧像素的灰度误差
  • 特征点法 最小化 重投影误差,即地图点到当前图像投影点与匹配点的坐标误差

误差函数对于位姿的 雅可比矩阵(Jacobian Matrix),决定着下一步最优迭代估计时 位姿增量的方向。

根据上面位姿变换的流程,我们可以用 链式法则 来表示 $\mathbf{J}$

由此,直接法 与 特征点法 雅克比矩阵 只区别于 $\mathbf{J}_0$。

本文主要介绍 SLAM优化位姿时误差函数对位姿雅可比矩阵的推导。

雅克比矩阵 推导

$J_0$

直接法

我们已知, 在直接法中,单像素点的误差函数是关于像素值的函数,即 光度误差

由于对于一个特定的像素点,$\mathbf{I}_1(\mathbf{p})$ 是关于 $\boldsymbol{\xi}$ 的常量,所以

为 图像 $\mathbf{I}_2$ 在 $\mathbf{p}’$ 点处的 像素梯度

特征点法

我们已知, 在直接法中,单像素点的误差函数是关于像素坐标的函数

由于对于一个特定的像素点,$\mathbf{p}$ 是关于 $\boldsymbol{\xi}$ 的常量,所以

$J_1$

由于

$\mathbf{J}_1$ 的计算跟 相机投影模型 有关,本文以 针孔相机模型 (不考虑畸变)为例 对其进行计算。

针孔相机模型(不考虑畸变) 的 数学模型 为

所以

$J_2$

根据

计算得

$J_3$

使用 李代数

其中

类似高数中,求取 $f(x)$ 的导数

我们可以 根据李代数加法来对李代数进行求导,计算雅克比矩阵。

一般更使用的,利用李群来左乘或者右乘微小扰动,在对这个扰动的李代数进行求导,利用 扰动模型 $\delta \boldsymbol{\xi} = [\delta \boldsymbol{\rho} \quad \delta \boldsymbol{\phi}]$,计算如下

所以

注意:

  • 上面的 $\boldsymbol{\xi}$ 中 平移 $\boldsymbol{\rho}$ 在前, 旋转 $\boldsymbol{\phi}$ 在后;如果 旋转在前,平移在后,则 $\mathbf{J}_3$ 的前三列与后三列须对调。

  • ch4 为什么能用左扰动模型来求导啊?[gaoxiang12/slambook Issues #183]

    按照定义,左乘一个扰动,然后令扰动趋于零,求目标函数相对于扰动的变化率,作为导数来使用。同时,在优化过程中,用这种导数算出来的增量,以左乘形式更新在当前估计上,于是使估计值一直在SO(3)或SE(3)上。这种手段称为“流形上的优化”。

  • 四元数矩阵与 so(3) 左右雅可比

使用 四元数

若旋转使用 四元数 表示,则更新小量为 $\begin{bmatrix} \delta \mathbf{t} \ \delta \boldsymbol{\theta} \end{bmatrix}$,则

with

此时

总结

直接法

特征点法

  • 使用 李代数
  • 使用 四元数

注意事项

  • $\mathbf{J}_1$ 的计算是根据 针孔相机模型(不考虑畸变) 进行计算的
  • 本文的 $\boldsymbol{\xi}$ 中 平移 $\boldsymbol{\rho}$ 在前, 旋转 $\boldsymbol{\phi}$ 在后;如果 旋转在前,平移在后,则 $\mathbf{J}_3$ 的前三列与后三列须对调
  • 本文定义的 误差函数 $r(\boldsymbol{\xi})$预测值减观测值;如果定义成 观测值减预测值,本文计算的结果 $\mathbf{J}$ 前须加 负号

参考文献


vSLAM位姿优化中雅克比矩阵的求解
https://cgabc.xyz/posts/6a2809e2/
Author
Gavin Gao
Posted on
December 15, 2018
Licensed under