VINS ---视觉约束的雅克比推导

1 注

高博SLAM 十四讲 P186 中介绍了点的视觉重投影误差相对各个优化变量的雅克比
这儿做一个大概的公式介绍

1.1 投影误差公式

  1. 我们选择定义:(与高博书上相反,VINS确是这样定义的,为了与代码对应,我们也这样)
    误差 = 理论预测值 - 观测值
  2. 十四讲 是使用像素平面下的像素坐标做差,我们也为了与VINS对应,使用归一化坐标系的点做差

我们记世界坐标系下一点 P w = [ X Y Z ] P_w=\begin{bmatrix}X\\Y\\Z\end{bmatrix} Pw=XYZ 通过 T w c T_{wc} Twc转到相机坐标 P c = [ x y z ] P_c=\begin{bmatrix}x\\y\\z\end{bmatrix} Pc=xyz ,再转到归一化坐标系 p p p p p p为理论预测值:

P c = R c w ( P w + t c w ) = [ x y z ] P_c=R_{cw}(P_w+t_{cw})=\begin{bmatrix}x\\y\\z\end{bmatrix} Pc=Rcw(Pw+tcw)=xyz
p    =    [ x / z y / z 1 ] p\;=\;\begin{bmatrix}x/z\\y/z\\1\end{bmatrix} p=x/zy/z1
且在相机归一化坐标系下有 p p p 对应的观测值 p ′ = [ x ′ / z ′ y ′ / z ′ 1 ] p^{'} = \begin{bmatrix}x^{'}/z^{'}\\y^{'}/z^{'}\\1\end{bmatrix} p=x/zy/z1

投影误差即为:
e = [ x / z y / z ] − [ x ′ / z ′ y ′ / z ′ ] e=\begin{bmatrix}x/z\\y/z\end{bmatrix} - \begin{bmatrix}x^{'}/z^{'}\\y^{'}/z^{'}\end{bmatrix} e=[x/zy/z][x/zy/z]
这样的观测点 p p p与路标点 P w P_w Pw点对,就能构成一项投影残差,实际情况下,就是有很多对这样的点对,组成多项投影误差,然后我们通过调整相机位姿 T w c T_{wc} Twc使得整体的误差最小化,这个时候的位姿也就是最优化的位姿,这就是构建最小二乘问题去优化变量。

1.2 投影误差相对于待优化变量的雅克比

待优化的变量即为 相机的位姿 T w c T_{wc} Twc 由 旋转与平移构成,可以用李代数 ξ \xi ξ 6维向量表示,也可以用四元数与平移量表示 [ t Q ] \begin{bmatrix}t&Q\end{bmatrix} [tQ]

  1. 十四讲使用的是 李代数表示,误差相对于李代数的雅克比为:
    ∂ e ∂ δ ξ = ∂ e ∂ P c ∂ P c ∂ δ ξ \frac{\partial e}{\partial\delta\xi}=\frac{\displaystyle\partial e}{\displaystyle\partial P_c}\frac{\displaystyle\partial P_c}{\displaystyle\partial\delta\xi} δξe=PceδξPc
    ∂ e ∂ P c = [ ∂ ( x / z ) ∂ x ∂ ( x / z ) ∂ y ∂ ( x / z ) ∂ z ∂ ( y / z ) ∂ x ∂ ( y / z ) ∂ y ∂ ( y / z ) ∂ z ] 2 × 3 = [ 1 / z 0 − x / z 2 0 1 / z − y / z 2 ] 2 × 3 \frac{\displaystyle\partial e}{\displaystyle\partial P_c}={\begin{bmatrix}\frac{\partial(x/z)}{\partial x}&\frac{\displaystyle\partial(x/z)}{\displaystyle\partial y}&\frac{\displaystyle\partial(x/z)}{\displaystyle\partial z}\\\frac{\displaystyle\partial(y/z)}{\displaystyle\partial x}&\frac{\displaystyle\partial(y/z)}{\displaystyle\partial y}&\frac{\displaystyle\partial(y/z)}{\displaystyle\partial z}\end{bmatrix}}_{2\times3}={\begin{bmatrix}1/z&0&-x/z^2\\0&1/z&-y/z^2\end{bmatrix}}_{2\times3} Pce=x(x/z)x(y/z)y(x/z)y(y/z)z(x/z)z(y/z)2×3=[1/z001/zx/z2y/z2]2×3
    ∂ P c ∂ δ ξ = [ I 3 × 3 − P c ^ ] 3 × 6 \frac{\displaystyle\partial P_c}{\displaystyle\partial\delta\xi}={\begin{bmatrix}I_{3\times3}&-\hat{P_c}\end{bmatrix}}_{3\times6} δξPc=[I3×3Pc^]3×6

    注: ∂ P c ∂ δ ξ \frac{\displaystyle\partial P_c}{\displaystyle\partial\delta\xi} δξPc 投影点(投影到相机坐标系)关于位姿的雅克比,见书本推导 ;误差函数中 [ x ′ / z ′ y ′ / z ′ ] \begin{bmatrix}x^{'}/z^{'}\\y^{'}/z^{'}\end{bmatrix} [x/zy/z] 为观测值,是常数。

  2. VINS中的位姿使用的是四元数与平移量表示,误差相对于四元数与平移量的雅克比为:
    ∂ e ∂ T = ( ∂ e ∂ P c ∂ P c ∂ T ) 2 × 7    \frac{\displaystyle\partial e}{\displaystyle\partial T}={\begin{pmatrix}\frac{\displaystyle\partial e}{\displaystyle\partial P_c}\frac{\displaystyle\partial P_c}{\displaystyle\partial T}\end{pmatrix}}_{2\times7}\; Te=(PceTPc)2×7
    维度变成 2 × 7 2\times7 2×7, ∂ e ∂ P c \frac{\displaystyle\partial e}{\displaystyle\partial P_c} Pce 在上面已经算出
    ∂ P c ∂ T 3 × 7 =    [ ∂ P c ∂ t ∂ P c ∂ Q ] = [ R c w − P c    ^ 3 × 3 ] 3 × 7 {\frac{\displaystyle\partial P_c}{\displaystyle\partial T}}_{3\times7}=\;\begin{bmatrix}\frac{\displaystyle\partial P_c}{\displaystyle\partial t}&\frac{\displaystyle\partial P_c}{\displaystyle\partial Q}\end{bmatrix}={\begin{bmatrix}R_{cw}&-{\hat{P_{c\;}}}_{3\times3}\end{bmatrix}}_{3\times7} TPc3×7=[tPcQPc]=[RcwPc^3×3]3×7
    ∂ P c ∂ T 3 × 7 {\frac{\displaystyle\partial P_c}{\displaystyle\partial T}}_{3\times7} TPc3×7 的雅克比矩阵维度为 3 × 7 3\times7 3×7,但是最后一列全为0 。
    这样就与VINS 对应上了,只不过VINS 中包含IMU 坐标系,还要注意的是这儿讲的是投影误差,并不是重投影误差

1.3重投影误差公式

通过对上面的投影误差介绍,我们接下来介绍 VINS 中的重投影误差,投影的起点不是从世界坐标系开始,而是从相机i 的归一化平面一点 P i P_i Pi 开始,重投影到相机j 的归一化平面下为 P i ′ P_i^{'} Pi ,与相机j下的观测值 P j P_j Pj 做差。

1.4重投影误差相对各个待优化变量的雅克比

整个过程中涉及到的变量有:
相机i的位姿,相机j的位姿,相机与IMU的外参, P i P_i Pi 对应的逆深度
雅克比计算过程和上面的类似,VINs在代码中,预先计算了 ∂ e ∂ P c \frac{\displaystyle\partial e}{\displaystyle\partial P_c} Pce,所有的雅克比都是通过 P c P_c Pc作为桥梁,进行链式求导。

并且在对重投影误差乘上了一个协方差

(具体推导后续有空补上)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值