Motion Estimation for Self-Driving Cars With a Generalized Camera
摘要
本文提出了基于非完整约束的2-point法计算本质矩阵。提出了至少一对inter-camera匹配即可计算2-point的方法,以及只有intra-camera匹配的特例求解。
通用相机模型
图2为车上的通用相机排布,其中车体坐标系为V,记相机的内参为KiK_iKi,外参为TCi=[RCi,tCi]T_{C_i}=[R_{C_i},t_{C_i}]TCi=[RCi,tCi],归一化相机坐标为x^ij=Ki−1xij\hat{x}_{ij}=K^{-1}_ix_{ij}x^ij=Ki−1xij。使用6维的Plucker线消除单一相机投影中心描述3D点XjX_jXj的依赖:
它描述了连接xijx_{ij}xij和XjX_jXj的光线,uij=RCix^ju_{ij}=R_{C_i}\hat{x}_juij=RCix^j为在V系下该光线的单位方向。(1) 将两个图像坐标系的点关联变为两条光线相交,极限约束变为:
其中,lij,k,lij,k+1l_{ij,k},l_{ij,k+1}lij,k,lij,k+1为第k帧和k+1帧的Plucker线关联。EGCE_{GC}EGC为通用本质矩阵,RRR为通用相机系的相对旋转,E=[t]×RE=[t]_{\times}RE=[t]×R为原来的本质矩阵。
运动估计
图3为运动估计流程图。2-point RANSAC使用intra-camera关联计算相对运动,对于2-point RANSAC估计出来的yaw角θ\thetaθ接近于0时,使用inter-camera关联通过1-point法计算尺度ρ\rhoρ,使用1-point法计算时θ\thetaθ是固定住的。最后,估计得到的θ,ρ\theta,\rhoθ,ρ会经过非线性优化和Kalman滤波。
匹配关联
本文的运动估计算法依赖两种关联——intra-camera和inter-camera,前者为同一相机在时序上的关联,后者为不同相机在时序上的关联,如图4所示。在实际中,inter-camera关联会远少于intra-camera,因此我们使用intra-camera关联作为默认case,而在直行case时使用inter-camera关联来恢复尺度。
2-point solution
图5描述了k时刻到k+1时刻的阿克曼转向模型,VkV_kVk和Vk+1V_{k+1}Vk+1间的相对运动R,tR,tR,t为待估计量,由该模型可得:
其中,θ\thetaθ为yaw角变化量,ρ\rhoρ为尺度,ϕ=θ/2\phi=\theta/2ϕ=θ/2。可以看出,两帧之间的相对运动只有2个自由度——尺度和yaw角。将(3) 代入 (2) 的EGCE_{GC}EGC,有:
为书写方便,记k时刻的Plucker线为l=[uT,(tC×u)T]Tl=[u^T,(t_C\times u)^T]^Tl=[uT,(tC×u)T]T,k+1k+1k+1时刻为l′=[u′T,(tC′×u′)T]Tl'=[u'^T,(t_{C'}\times u')^T]^Tl′=[u′T,(tC′×u′)T]T,则公式 (2) 可写为:
其中,
式 (5) 为新的GEC约束,需要2组Plucker线关联求解。记Plucker线的系数分别为(a1,b1,c1,d1,e1)(a_1,b_1,c_1,d_1,e_1)(a1,b1,c1,d1,e1) 和(a2,b2,c2,d2,e2)(a_2,b_2,c_2,d_2,e_2)(a2,b2,c2,d2,e2),根据三角形半角公式:
我们有:
其中,α=cosθ2\alpha=\cos \frac{\theta}{2}α=cos2θ,β=sinθ2\beta=\sin\frac{\theta}{2}β=sin2θ,联立(7a)(7b)消除ρ\rhoρ,我们有:
由于α2+β2=1\alpha^2+\beta^2=1α2+β2=1,将其代入(8)消除α\alphaα,并令γ=β2\gamma=\beta^2γ=β2,则(8)可以简化为:
A,B,C,DA,B,C,DA,B,C,D为由(a,b,c,d,e)(a,b,c,d,e)(a,b,c,d,e)组成的系数,其中D具有特殊性质:
对于intra-camera关联有tC=tC′t_C=t_C'tC=tC′,此时最后两项关于a的系数会被消掉,并且有a=−ea=-ea=−e,由此可得D=0D=0D=0,因此(10b)变为:
其中一个解为γ=0\gamma=0γ=0,另外两解为γ=−B±B2−4AC2A\gamma=\frac{-B\pm\sqrt{B^2-4AC}}{2A}γ=2A−B±B2−4AC。将γ\gammaγ带回γ=β2\gamma=\beta^2γ=β2,可得β\betaβ最多有6组解,其中两组为0。最终θ\thetaθ可由β=sinθ2\beta=\sin\frac{\theta}{2}β=sin2θ解出,ρ\rhoρ由公式(7)解出。
退化case
当直行时,只有intra-camera关联无法确定尺度,但是至少只要一组inter-camera关联就可以确定尺度。对于inter-camera关联,有tC=tC′t_C=t'_CtC=tC′,此时a≠−ea\ne -ea=−e,因此ρ\rhoρ可以由公式(7)确定。这表明,当使用intra-camera关联估计出的内点解为(ρ=1,θ=0)(\rho=1,\theta=0)(ρ=1,θ=0)时,可使用inter-camera关联来求解尺度。
鲁棒估计
使用2-point RANSAC剔除外点,对于每个相机,使用估计的R、t和相机外参TCiT_{C_i}TCi来计算本质矩阵,通过检查Sampson 误差来计算内点比例。RANSAC的迭代次数为m=ln(1−p)ln(1−vn)m=\frac{\ln(1-p)}{\ln(1-v^n)}m=ln(1−vn)ln(1−p),其中nnn为关联对数,ppp为期望内点比例,vvv为所有关联都是内点的概率,假设p=0.99,v=0.5p=0.99,v=0.5p=0.99,v=0.5,则总共需要16次迭代。
非线性优化
在外点剔除后,进行一次非线性优化来得到准确的ρ,θ\rho,\thetaρ,θ,损失函数为:
其中,(xij↔xi′j)(x_{ij}\leftrightarrow x_{i'j})(xij↔xi′j)为前后帧的关联,XjX_jXj为三角化的3D点,CCC包括了intra-camera和inter-camera的关联。Pi,Pi′P_i,P_{i'}Pi,Pi′为相机投影矩阵:
优化的初值由上一部RANSAC的估计得到。
卡尔曼滤波
我们基于恒速模型实现了对ρ,θ\rho,\thetaρ,θ的卡尔曼滤波,由于车体运动由转向和速度两者控制,因此我们分别对尺度和yaw角实现1D卡尔曼滤波,图6对比了直接估计和卡尔曼滤波的结果,其中蓝色线为直接2-point估计,绿色线为卡尔曼滤波结果。