视觉SLAM十四讲学习5 位姿估计(6)ICP

视觉SLAM十四讲学习5 位姿估计(6)ICP

前言

本篇继续学习3D-3D的方法,ICP

SVD方法

基于RGBD相机或者Lidar的SLAM前端常用ICP。

已知匹配点在上一帧的世界坐标 P ′ P' P,以及在当前帧的相机坐标 P P P,则可以把问题转化为最小二乘:
e = P ′ − ( R P + t ) arg min ⁡ R , t ∑ i = 1 n 1 2 ∣ ∣ P ′ − ( R P + t ) ∣ ∣ 2 2 e=P'-(RP+t) \\ \argmin_{R,t} \sum_{i=1}^n \frac {1}{2} || P'-(RP+t) ||_2^2 e=P(RP+t)R,targmini=1n21P(RP+t)22
首先计算每帧所有匹配点的中心坐标:
P c = 1 n ∑ i = 1 n P i P c ′ = 1 n ∑ i = 1 n P i ′ P_c = \frac{1}{n} \sum_{i=1}^n P_i \\ \quad \\ P'_c = \frac{1}{n} \sum_{i=1}^n P'_i \\ \quad \\ Pc=n1i=1nPiPc=n1i=1nPi

接着代入最小二乘公式:
1 2 ∑ i = 1 n ∣ ∣ P ′ − ( R P + t ) ∣ ∣ 2 2 = 1 2 ∣ ∣ P ′ − ( R P + t ) − P c ′ + R P c + P c ′ − R P c ∣ ∣ 2 = 1 2 ∣ ∣ P ′ − P c ′ − R ( P − P c ) + P c ′ − R P c − t ∣ ∣ 2 = 1 2 ( ∣ ∣ P ′ − P c ′ − R ( P − P c ) ∣ ∣ 2 + ∣ ∣ P c ′ − R P c − t ∣ ∣ 2 + ( P ′ − P c ′ − R ( P − P c ) ) T ( P c ′ − R P c − t ) + ( P c ′ − R P c − t ) T ( P ′ − P c ′ − R ( P − P c ) ) ) \frac {1}{2} \sum_{i=1}^n || P'-(RP+t) ||_2^2 \\ \quad \\ = \frac {1}{2} || P' - (RP+t)-P'_c+RP_c+P_c' - RP_c ||^2 \\ = \frac {1}{2} || P' - P_c' - R(P-P_c) + P'_c - RP_c - t ||^2 \\ = \frac {1}{2} ( || P'-P_c' - R(P-P_c) ||^2 + || P_c' - RP_c - t ||^2 \\ + (P'-P_c'-R(P-P_c))^T(P_c' - RP_c - t)+(P_c' - RP_c - t)^T(P'-P_c'-R(P-P_c))) 21i=1nP(RP+t)22=21P(RP+t)Pc+RPc+PcRPc2=21PPcR(PPc)+PcRPct2=21(PPcR(PPc)2+PcRPct2+(PPcR(PPc))T(PcRPct)+(PcRPct)T(PPcR(PPc)))

由于:
n P c ′ − n R P c − n t = ∑ i = 1 n P i ′ − ∑ i = 1 n ( R P i + t ) = 0 n ( P c ′ − R P c − t ) = 0 nP_c' - nRP_c - nt = \sum_{i=1}^nP'_i - \sum_{i=1}^n (RP_i + t) =0 \\ n(P_c' - RP_c - t) = 0 nPcnRPcnt=i=1nPii=1n(RPi+t)=0n(PcRPct)=0
因此:
arg min ⁡ R , t 1 2 ∑ i = 1 n ∣ ∣ P ′ − ( R P + t ) ∣ ∣ 2 2 = arg min ⁡ R , t 1 2 ( ∣ ∣ P ′ − P c ′ − R ( P − P c ) ∣ ∣ 2 + ∣ ∣ P c ′ − R P c − t ∣ ∣ 2 ) \argmin_{R,t} \frac {1}{2} \sum_{i=1}^n || P'-(RP+t) ||_2^2 \\ \quad \\ = \argmin_{R,t} \frac {1}{2} ( || P'-P_c' - R(P-P_c) ||^2 + || P_c' - RP_c - t ||^2) \\ R,targmin21i=1nP(RP+t)22=R,targmin21(PPcR(PPc)2+PcRPct2)
上面的式子中,左边的式子与R有关,右边的式子与R,t有关,也就是说求出一个R后,可以通过改变t使得右式为0,故最终的最小二乘为:
arg min ⁡ R , t ∣ ∣ P ′ − P c ′ − R ( P − P c ) ∣ ∣ 2 t = P c ′ − R P c \argmin_{R,t} || P'-P_c' - R(P-P_c) ||^2 \\ t = P_c' - RP_c R,targminPPcR(PPc)2t=PcRPc

s e t p i = P i − P c , p i ′ = P i ′ − P c ′ s e t W = ∑ i = 1 n p i ′ p i T t h e n W = U Σ V T R = U V T set \quad p_i=P_i-P_c, \quad p_i'=P_i'-P_c' \\ \quad \\ set \quad W= \sum_{i=1}^n p_i'p_i^T \\ then \quad W=U\Sigma V^T \\ R=UV^T setpi=PiPc,pi=PiPcsetW=i=1npipiTthenW=UΣVTR=UVT

BA方法

与PnP的BA方法基本相同:
arg min ⁡ δ 1 2 ∑ i = 1 n ∣ ∣ P ′ − e δ ∧ P ∣ ∣ 2 2 \argmin_{\delta} \frac {1}{2} \sum_{i=1}^n || P' - e^{\delta^\land}P ||_2^2 \\ \quad \\ δargmin21i=1nPeδP22
然后通过高斯牛顿法优化迭代即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值