《基于RGBD相机的Active SLAM的研究》-PNP方法

针对map_frame到camera_frame的转换的问题,打算采用基于PNP的ORB_SLAM2,故有必要对PNP好好回顾一下。

1,P3P

在 SLAM 当中,通常的做法是先使用 P3P/EPnP 等方法估计相机位姿,然后构建最小二乘优化问题对估计值进行调整(Bundle Adjustment)。
顾名思义,P3P仅仅使用3对匹配点,如图
在这里插入图片描述
由余弦定理可知
x 2 + y 2 − 2 x y c o s ⟨ a , b ⟩ = A B 2 / O C 2 y 2 + 1 − 2 y c o s ⟨ b , c ⟩ = B C 2 / O C 2 x 2 + 1 − 2 x c o s ⟨ a , c ⟩ = A C 2 / O C 2 x^{2}+ y^{2} − 2xy cos ⟨a, b⟩ = AB^{2}/OC^{2} \\ y ^{2}+ 1 − 2y cos ⟨b, c⟩ = BC^{2} /OC^{2}\\ x ^{2}+ 1 − 2x cos ⟨a, c⟩ = AC^{2} /OC^{2}\\ x2+y22xycosa,b=AB2/OC2y2+12ycosb,c=BC2/OC2x2+12xcosa,c=AC2/OC2
第二个公式和第三个公式分别除第一个公式,得到

( 1 − u ) y 2 − u x 2 − c o s ⟨ b , c ⟩ y + 2 u x y c o s ⟨ a , b ⟩ + 1 = 0 ( 1 − w ) x 2 − w y 2 − c o s ⟨ a , c ⟩ x + 2 w x y c o s ⟨ a , b ⟩ + 1 = 0 (1 − u) y 2 − ux 2 − cos ⟨b, c⟩ y + 2uxy cos ⟨a, b⟩ + 1 = 0 \\ (1 − w) x 2 − wy 2 − cos ⟨a, c⟩ x + 2wxy cos ⟨a, b⟩ + 1 = 0\\ (1u)y2ux2cosb,cy+2uxycosa,b+1=0(1w)x2wy2cosa,cx+2wxycosa,b+1=0
其中
x = O A / O C x=OA/OC x=OA/OC待求
y = O B / O C y=OB/OC y=OB/OC待求
u = B C 2 / A B 2 u=BC^{2}/AB^{2} u=BC2/AB2已知
w = A C 2 / A B 2 w=AC^{2}/AB^{2} w=AC2/AB2已知

使用吴消元法解出,比较复杂,但是有现成的包,可以快速的求解出来。最后得出在当前相机坐标系下面,landmark的3D坐标。两个问题

  1. P3P 只利用三个点的信息。当给定的配对点多于 3 组时,难以利用更多的信息。
  2. 如果 3D 点或 2D 点受噪声影响,或者存在误匹配,则算法失效。

2,EPnP

EPnP 更加复杂,需要明确几个概念

1,参考点与控制点
参考点是指用于参与到相机坐标系下坐标求解的点
控制点是EPnP 的特定的一个概念,由 c i c_i ci i = 1 , 2 , 3 , 4 i=1,2,3,4 i=1,2,3,4表示。参考点与控制点的关系为
p i w ​ = ∑ j = 1 4 ​ α i j ​ c j w ​ , w i t h ∑ j = 1 4 α i j ​ = 1 p_i^w​=∑_{j=1}^4​α_{ij}​c_j^w​, with ∑_{j=1}^4α_{ij}​=1 piw=j=14αijcjw,withj=14αij=1
p i c ​ = ∑ j = 1 4 ​ α i j ​ c j c p_i^c​=∑_{j=1}^4​α_{ij}​c_j^c pic=j=14αijcjc

2,Barycentric Coordinates
这个指的是 α i j ​ α_{ij}​ αij,由于参考点都是非齐次的(3维),并且满足约束关系 ∑ j = 1 4 α i j ​ = 1 ∑_{j=1}^4α_{ij}​=1 j=14αij=1,所以是数值唯一的。

3,控制点的选择,这个无需多深究,只要不妨碍有关Barycentric的求解
https://img-blog.csdnimg.cn/20201210165122197.png在这里插入图片描述
4,求解特征向量 v i v_i vi相机坐标系下的坐标,比较复杂,目前就大概了解吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先求出0空间对应的特征向量 v i v_i vi,当N=4的时候,可以近似求解出 β 1 , β 2 , β 3 , β 4 \beta_1,\beta_2,\beta_3,\beta_4 β1,β2,β3,β4的数值,之后使用高斯牛顿法对 β 1 , β 2 , β 3 , β 4 \beta_1,\beta_2,\beta_3,\beta_4 β1,β2,β3,β4进行优化。优化的目标函数为
E r r o r ( β ) = ∑ ( i , j ) s . t . i < j ​ ( ∥ ∥ ​ c i c ​ − c j c ​ ∥ ∥ ​ 2 − ∥ ∥ ​ c i w ​ − c j w ​ ∥ ∥ 2 ) 2 Error(β)=∑_{(i,j) s.t. i<j}​(∥∥​c_i^c​−c_j^c​∥∥​^2−∥∥​c_i^w​−c_j^w​∥∥^2)^2 Error(β)=(i,j)s.t.i<j(ciccjc2ciwcjw2)2
最后得到控制点在现有相机坐标系下面的表示
在这里插入图片描述
也就得到参考点在现有相机坐标系下的表示
在这里插入图片描述
参考

3,Bundle Adjustment

把 PnP 问题构建成一个定义于李代数上的非线性最小二乘问题,首先使用G-N的基本步骤

  1. 给定初始值 x 0 x_0 x0
  2. 对于第 k 次迭代,求出当前的雅可比矩阵 J ( x k ) J (x_k ) J(xk) 和误差 f ( x k ) f (x_k ) f(xk)
  3. 求解增量方程: H ∆ x k = g H∆x_k = g Hxk=g.
  4. ∆ x k ∆x_k xk 足够小,则停止。否则,令 x k + 1 = x k + ∆ x k x_k+1 = x_k + ∆x_k xk+1=xk+xk ,返回 2.

在BA算法中,误差函数为 u i − K e x p ( ξ u_i − K exp (ξ uiKexp(ξ^ ) P i ) P_i )Pi,优化变量为ξ,所以最小二乘的问题化成了
在这里插入图片描述
然而,高翔仅仅只有对单个点提出解释,对于单个点的相机位姿可以了,但是对于n个点估计来讲,没有占到什么便宜,并且对同时优化参考点的位姿没有解释清楚,针对这两点,我做了相关调研。

查了一圈,貌似这个在g2o中是通过增加边来解决的,即如果有N个点,就要有N个边,限于水平,具体图优化的算法不深入探究。此外,优化变量也可以添加到参考点的坐标。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值