第六篇 相机位姿优化问题一 :雅克比矩阵推导

一 相机位姿优化问题背景概述

   在SLAM系统或者自动驾驶系统中有一个很重要的模块,就是定位模块。基于视觉的定位基本思路就是采用将地图中的特征重投影到相机的UV平面,使相同特征之间的重投影误差最小。
   例如,自动驾驶中,高精度地图车道线如下左图所示,车载相机看到的车道线如下右图所示,求解车辆位姿就是将下左图的车道线根据相机位姿和外参投影到相机的UV平面,是它和下游图的线完全重合。

在这里插入图片描述

二 相机位姿优化问题解决思路

高精度地图根据估计位姿可以投影到相机UV平面,然后求出每个相机UV观测的点到高精度地图的点线距离。那么每个点就可以观测到一个误差E。
d E d V = J \frac {dE}{dV} = J dVdE=J
其中 J 是 雅克比矩阵,V 是位姿误差矢量。
Δ V = ( J T J ) − 1 ∗ J T ∗ Δ E \Delta V = (J^T J)^{-1}*J^T*\Delta E ΔV=(JTJ)1JTΔE
设定位姿初值,然后多次迭代,即可以使重投影误差最小。那么最困难的问题是求出E对V 的雅克比。

三 相机位姿优化雅克比矩阵分步求解

3.1 符号约定

位姿表达式:姿态的等效旋转矢量和位置矢量
θ = [ θ 1 θ 2 θ 3 ] R m r = t o R o t a t e ( θ ) t m r = [ x y z ] V = [ θ t m r ] ′ \theta = [\theta1 \quad \theta2 \quad \theta3] \newline R_{mr} = toRotate(\theta) \newline t_{mr} = [x \quad y \quad z]\newline V = [\theta \quad t_{mr}]' θ=[θ1θ2θ3]Rmr=toRotate(θ)tmr=[xyz]V=[θtmr]
地图上的点:
P m = [ m x m y m z ] P_m = [m_x \quad m_y \quad m_z] Pm=[mxmymz]
车辆载体系下的点:
P r = [ r x r y r z ] P_r = [r_x \quad r_y \quad r_z] Pr=[rxryrz]
转到相机坐标系下的点:
P c = [ c x c y c z ] P_c = [c_x \quad c_y \quad c_z] Pc=[cxcycz]
转到相机UV平面的点
P m u v = [ u m v m ] P_{muv} = [u_m \quad v_m] Pmuv=[umvm]
相机观测到的UV平面的点
P c u v = [ u c v c ] P_{cuv} = [u_c \quad v_c] Pcuv=[ucvc]

3.2 分步求解

P m = R m r ∗ P r + t m r P r = R m r ′ ( P m − t m r ) P c = R c r ∗ P r + t c r P m u v = [ c x c z c y c z ] ′ E = P c u v − P m u v P_m = R_{mr}*P_r + t_{mr} \newline P_r = R_{mr}'(P_m - t_{mr}) \newline P_c = R_{cr}*P_r + t_{cr} \newline \newline P_{muv} = \begin{matrix}[ \frac {c_x}{c_z} \quad \frac {c_y}{c_z} \end{matrix}] ' \newline E = P_{cuv} - P_{muv} Pm=RmrPr+tmrPr=Rmr(Pmtmr)Pc=RcrPr+tcrPmuv=[czcxczcy]E=PcuvPmuv
于是方向逐级求雅克比:
J 1 = d E d P m u v = − 1 J1 = \frac {d E}{d P_{muv}} = -1 \newline J1=dPmuvdE=1
J 2 = d P m u v d P c = [ 1 c z 0 − c x c z 2 0 1 c z − c y c z 2 ] J2 = \frac {d P_{muv}} {d P_c} = \begin{bmatrix} \frac{1}{c_z} & 0 & -\frac{c_x}{c_z^2} \\ 0 & \frac{1}{c_z} & -\frac{c_y}{c_z^2} \end{bmatrix} J2=dPcdPmuv=[cz100cz1cz2cxcz2cy]
J 3 = d P c d P r = R c r J3 = \frac {d P_c}{d P_r} = R_{cr} J3=dPrdPc=Rcr
J 4 = d P r d V = [ d P r d θ d P r d t m r ] ′ d P r d t m r = − R m r ′ d P r d θ = ? ? ? ? ? J4 = \frac{d P_r}{d V} = [\frac{d P_r}{d \theta} \quad \frac{d P_r}{d t_{mr}} ] '\newline \frac{d P_r}{d t_{mr}} = -R_{mr}'\newline \frac{d P_r}{d \theta} = ????? J4=dVdPr=[dθdPrdtmrdPr]dtmrdPr=RmrdθdPr=?????
问号处求导见第六篇文章。
J = J 1 ∗ J 2 ∗ J 3 ∗ J 4 = d E d P m u v ∗ d P m u v d P c ∗ d P c d P r ∗ d P r d V J = J1*J2*J3*J4 = \frac {d E}{d P_{muv}} * \frac {d P_{muv}} {d P_c} * \frac {d P_c}{d P_r} * \frac{d P_r}{d V} J=J1J2J3J4=dPmuvdEdPcdPmuvdPrdPcdVdPr

求出误差函数相对于状态量的雅克比后,运用本章最前面的方法求出状态量的误差量,并减去误差量后,重新计算。反复迭代N次收敛。此方法为高斯牛顿法。
还有一个问题没有解决,就是 J4 中求出相对于等效旋转矢量的雅克比如何求?待后续分解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值