【ORBSLAM2点线融合】点特征图模型构建

在SLAM中,通常用BA(Bundle Adjustment)来实现多个三维点和不同相机位姿的优化
本文描述如何建立基于点特征的图优化,并推导相应的雅克比矩阵,并用g2o实现相应的类

1. 点特征误差及观测模型

假设相机位姿为 T c w T_{cw} Tcw表示世界坐标系到相机坐标系的变换,或者表示成 R c w , t c w R_{cw},t_{cw} Rcw,tcw。三维空间点表示成
世界坐标下 P w = [ P x w , P y w , P z w ] T P^{w}=\begin{bmatrix} P^{w}_{x}, P^{w}_{y}, P^{w}_{z}\end{bmatrix}^{T} Pw=[Pxw,Pyw,Pzw]T
相机坐标下 P c = [ P x c , P y c , P z c ] T P^{c}=\begin{bmatrix} P^{c}_{x}, P^{c}_{y}, P^{c}_{z}\end{bmatrix}^{T} Pc=[Pxc,Pyc,Pzc]T
相机内参为 K K K
重投影误差为 e p = p − p ′ = [ u v ] − [ u ′ v ′ ] e_{p}=p-p^{'}=\begin{bmatrix} u \\ v\end{bmatrix}-\begin{bmatrix} u^{'} \\ v^{'}\end{bmatrix} ep=pp=[uv][uv]
其中 p p p为当前图像中提取的点, p ′ p^{'} p为与 p p p匹配的三维空间点的投影点,计算方式为
P c = R c w P w + t c w u ′ = f x P x c P z c + c x v ′ = f y P y c P z c + c y \begin{aligned} P^{c}&=R_{cw}P^{w}+t_{cw} \\ u^{'} &= \frac {f_{x}P^{c}_{x}} {P^{c}_{z}}+c_{x} \\ v^{'} &= \frac {f_{y}P^{c}_{y}} {P^{c}_{z}}+c_{y} \end{aligned} Pcuv=RcwPw+tcw=PzcfxPxc+cx=PzcfyPyc+cy

2. 点特征重投影误差关于位姿增量的雅克比矩阵

利用链式法则,可以求得
∂ e p ∂ δ ξ = ∂ e p ∂ P c ∂ P c ∂ δ ξ \frac{\partial e_{p}}{\partial \delta\xi}=\frac{\partial e_{p}}{\partial P^{c}}\frac{\partial P^{c}}{\partial \delta\xi } δξep=PcepδξPc
下面分别计算等式右边两项

这里注意,这里需要涉及到矩阵求导,矩阵求导通常分为分子布局和分母布局,这两种情况只是表达形式的不同,本身并没有两样,下面统一都用分母布局,具体求导结果可以看这篇文章

第一部分
∂ e p ∂ P c = ∂ [ u − u ′ v − v ′ ] ∂ P c = [ ∂ ( u − u ′ ) ∂ P x c ∂ ( u − u ′ ) ∂ P y c ∂ ( u − u ′ ) ∂ P z c ∂ ( v − v ′ ) ∂ P x c ∂ ( v − v ′ ) ∂ P y c ∂ ( v − v ′ ) ∂ P z c ] = − [ f x P z c 0 f x P x c P z c 2 0 f y P z c f y P y c P z c 2 ] 2 × 3 \begin{aligned} \frac{\partial e_{p}}{\partial P^{c}}&= \frac{\partial \begin{bmatrix} u-u^{'}\\ v-v^{'}\end{bmatrix}}{\partial P^{c}} \\ &= \begin{bmatrix} \frac{\partial(u-u^{'})}{\partial P_{x}^{c}} & \frac{\partial(u-u^{'})}{\partial P_{y}^{c}} & \frac{\partial(u-u^{'})}{\partial P_{z}^{c}} \\ \frac{\partial(v-v^{'})}{\partial P_{x}^{c}} & \frac{\partial(v-v^{'})}{\partial P_{y}^{c}} & \frac{\partial(v-v^{'})}{\partial P_{z}^{c}} \end{bmatrix} \\ &= -\begin{bmatrix} \frac{f_{x}}{P_{z}^{c}} & 0 & \frac{f_{x}P_{x}^{c}}{P_{z}^{c2}} \\ 0 & \frac{f_{y}}{P_{z}^{c}} & \frac{f_{y}P_{y}^{c}}{P_{z}^{c2}} \end{bmatrix}_{2 \times 3} \end{aligned} Pcep=Pc[uuvv]= Pxc(uu)Pxc(vv)Pyc(uu)Pyc(vv)Pzc(uu)Pzc(vv) =[Pzcfx00PzcfyPzc2fxPxcPzc2fyPyc]2×3
第二部分
∂ P c ∂ δ ξ = ∂ T c w P w ∂ δ ξ = lim ⁡ δ ξ → 0 e x p ( δ ξ ∧ ) T c w P w − T c w P w δ ξ \begin{aligned} \frac{\partial P^{c}}{\partial \delta\xi} &= \frac{\partial T_{cw}P^{w}}{\partial \delta\xi} \\ &=\lim_{\delta\xi \rightarrow 0} \frac{exp(\delta\xi^{\wedge})T_{cw}P^{w}-T_{cw}P^{w}}{\delta\xi} \end{aligned} δξPc=δξTcwPw=δξ0limδξexp(δξ)TcwPwTcwPw e x p ( δ ξ ∧ ) exp(\delta\xi^{\wedge}) exp(δξ) δ ξ = 0 \delta\xi=0 δξ=0处一阶泰勒展开,则上式变成
∂ P c ∂ δ ξ = lim ⁡ δ ξ → 0 e x p ( δ ξ ∧ ) T c w P w − T c w P w δ ξ = lim ⁡ δ ξ → 0 ( I + δ ξ ∧ ) T c w P w − T c w P w δ ξ = lim ⁡ δ ξ → 0 δ ξ ∧ T c w P w δ ξ \begin{aligned} \frac{\partial P^{c}}{\partial \delta\xi} &=\lim_{\delta\xi\rightarrow 0} \frac{exp(\delta\xi^{\wedge})T_{cw}P^{w}-T_{cw}P^{w}}{\delta\xi} \\ &= \lim_{\delta\xi\rightarrow 0} \frac{(I+\delta\xi^{\wedge})T_{cw}P^{w}-T_{cw}P^{w}}{\delta\xi} \\ &= \lim_{\delta\xi \rightarrow 0} \frac{\delta\xi^{\wedge}T_{cw}P^{w}}{\delta\xi} \end{aligned} δξPc=δξ0limδξexp(δξ)TcwPwTcwPw=δξ0limδξ(I+δξ)TcwPwTcwPw=δξ0limδξδξTcwPw已知 δ ξ ∧ = [ δ ϕ ∧ δ ρ 0 T 0 ] \delta\xi^{\wedge}=\begin{bmatrix} \delta\phi^{\wedge} & \delta\rho \\ 0^{T} & 0\end{bmatrix} δξ=[δϕ0Tδρ0],则上式变成
∂ P c ∂ δ ξ = lim ⁡ δ ξ → 0 δ ξ ∧ T c w P w δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ δ ρ 0 T 0 ] [ R c w P w + t c w 1 ] δ ξ \begin{aligned} \frac{\partial P^{c}}{\partial \delta\xi} &= \lim_{\delta\xi \rightarrow 0} \frac{\delta\xi^{\wedge}T_{cw}P^{w}}{\delta\xi} \\ &= \lim_{\delta\xi \rightarrow 0} \frac{\begin{bmatrix} \delta\phi^{\wedge} & \delta\rho \\ 0^{T} & 0\end{bmatrix} \begin{bmatrix} R_{cw}P^{w}+t_{cw} \\ 1\end{bmatrix}}{\delta\xi} \end{aligned} δξPc=δξ0limδξδξTcwPw=δξ0limδξ[δϕ0Tδρ0][RcwPw+tcw1]这个地方 P w P^{w} Pw由齐次坐标转换成了非齐次坐标,把最后一行删去,就变成
∂ P c ∂ δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ δ ρ ] ( R c w P w + t c w ) δ ξ = lim ⁡ [ δ ϕ δ ρ ] → 0 δ ϕ ∧ ( R c w P w + t c w ) + δ ρ [ δ ϕ δ ρ ] = [ − ( R c w P w + t c w ) ∧ I ] = [ − P c ∧ I ] 3 × 6 \begin{aligned} \frac{\partial P^{c}}{\partial \delta\xi} &= \lim_{\delta\xi \rightarrow 0} \frac{\begin{bmatrix} \delta\phi^{\wedge} & \delta\rho \end{bmatrix} (R_{cw}P^{w}+t_{cw})}{\delta\xi} \\ &= \lim_{\begin{bmatrix}\delta\phi \\ \delta\rho \end{bmatrix} \rightarrow 0} \frac{\delta\phi^{\wedge}(R_{cw}P^{w}+t_{cw})+\delta\rho}{\begin{bmatrix} \delta\phi \\ \delta\rho\end{bmatrix}} \\ &= \begin{bmatrix} -(R_{cw}P^{w}+t_{cw})^{\wedge} & I \end{bmatrix} \\ &= \begin{bmatrix} -P^{c\wedge} & I \end{bmatrix}_{3 \times 6} \end{aligned} δξPc=δξ0limδξ[δϕδρ](RcwPw+tcw)=[δϕδρ]0lim[δϕδρ]δϕ(RcwPw+tcw)+δρ=[(RcwPw+tcw)I]=[PcI]3×6其中, δ ξ = [ δ ϕ δ ρ ] \delta\xi=\begin{bmatrix}\delta\phi \\ \delta\rho \end{bmatrix} δξ=[δϕδρ] δ ϕ \delta\phi δϕ表示旋转矩阵的增量, δ ρ \delta\rho δρ表示平移向量的增量,当然这里哪个在前哪个在后不会产生很大的影响,只是最终的雅克比矩阵前三列和后三列的位置不同而已。
点特征重投影误差关于位姿增量的雅克比矩阵为
∂ e p ∂ δ ξ = ∂ e p ∂ P c ∂ P c ∂ δ ξ = − [ f x P z c 0 f x P x c P z c 2 0 f y P z c f y P y c P z c 2 ] [ − P c ∧ I ] = − [ − f x P x c P y c P z c 2 f x + f x P x c 2 P z c 2 − f x P y c P z c f x P z c 0 − f x P x c P z c 2 − f y − f y P y c 2 P z c 2 f y P x c P y c P z c 2 f y P x c P z c 0 f y P z c − f y P y c P z c 2 ] 2 × 6 \begin{aligned} \frac{\partial e_{p}}{\partial \delta\xi} &= \frac{\partial e_{p}}{\partial P^{c}}\frac{\partial P^{c}}{\partial \delta\xi} \\ &= -\begin{bmatrix} \frac{f_{x}}{P_{z}^{c}} & 0 & \frac{f_{x}P_{x}^{c}}{P_{z}^{c2}} \\ 0 & \frac{f_{y}}{P_{z}^{c}} & \frac{f_{y}P_{y}^{c}}{P_{z}^{c2}} \end{bmatrix} \begin{bmatrix} -P^{c\wedge} & I \end{bmatrix} \\ &= -\begin{bmatrix} -\frac{f_{x}P_{x}^{c}P_{y}^{c}}{P_{z}^{c2}} & f_{x}+\frac{f_{x}P_{x}^{c2}}{P_{z}^{c2}} & -\frac{f_{x}P_{y}^{c}}{P_{z}^{c}} & \frac{f_{x}}{P_{z}^{c}} & 0 & -\frac{f_{x}P_{x}^{c}}{P_{z}^{c2}} \\ -f_{y}-\frac{f_{y}P_{y}^{c2}}{P_{z}^{c2}} & \frac{f_{y}P_{x}^{c}P_{y}^{c}}{P_{z}^{c2}} & \frac{f_{y}P_{x}^{c}}{P_{z}^{c}} & 0 & \frac{f_{y}}{P_{z}^{c}} & -\frac{f_{y}P_{y}^{c}}{P_{z}^{c2}} \end{bmatrix}_{2 \times 6} \end{aligned} δξep=PcepδξPc=[Pzcfx00PzcfyPzc2fxPxcPzc2fyPyc][PcI]= Pzc2fxPxcPycfyPzc2fyPyc2fx+Pzc2fxPxc2Pzc2fyPxcPycPzcfxPycPzcfyPxcPzcfx00PzcfyPzc2fxPxcPzc2fyPyc 2×6前面的负号主要和误差定义方式有关,这里我们是定义成匹配点减去空间投影点,如果误差是反过来定义的,则前面负号去掉就行。

3. 点特征重投影误差关于三维点坐标的雅克比矩阵

相比之下,误差关于三维点坐标的雅克比矩阵推导就容易多了。同样根据链式法则得
∂ e p ∂ P w = ∂ e p ∂ P c ∂ P c ∂ P w \frac{\partial e_{p}}{\partial P^{w}}=\frac{\partial e_{p}}{\partial P^{c}}\frac{\partial P^{c}}{\partial P^{w} } Pwep=PcepPwPc
第一项上一节已经算过了,第二项也容易
∂ P c ∂ P w = ∂ ( R c w P w + t c w ) ∂ P w = R c w \begin{aligned} \frac{\partial P^{c}}{\partial P^{w}} &= \frac{\partial (R_{cw}P^{w}+t_{cw})}{\partial P^{w}} \\ &= R_{cw}\end{aligned} PwPc=Pw(RcwPw+tcw)=Rcw所以
∂ e p ∂ P w 2 × 3 = ∂ e p ∂ P c ∂ P c ∂ P w = − [ f x P z c 0 f x P x c P z c 2 0 f y P z c f y P y c P z c 2 ] R c w \begin{aligned} \frac{\partial e_{p}}{\partial P^{w}} _{2 \times 3} &= \frac{\partial e_{p}}{\partial P^{c}}\frac{\partial P^{c}}{\partial P^{w}} \\ &= -\begin{bmatrix} \frac{f_{x}}{P_{z}^{c}} & 0 & \frac{f_{x}P_{x}^{c}}{P_{z}^{c2}} \\ 0 & \frac{f_{y}}{P_{z}^{c}} & \frac{f_{y}P_{y}^{c}}{P_{z}^{c2}} \end{bmatrix}R_{cw} \end{aligned} Pwep2×3=PcepPwPc=[Pzcfx00PzcfyPzc2fxPxcPzc2fyPyc]Rcw

4. g2o构建相应的顶点边

更新中

参考文献

[1] 高翔. 视觉SLAM十四讲[M].

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《基于点线综合特征的双目视觉SLAM方法》是一篇研究双目视觉SLAM(Simultaneous Localization and Mapping)的论文。该方法通过综合利用特征和线特征来进行三维地构建和相机的定位。 在双目视觉SLAM中,通过双目相机获取的像序列可以提取出特征和线特征,这些特征可以用来进行像匹配和三维地构建。传统的SLAM方法大多基于特征,而忽略了线特征的潜力。该论文通过将特征和线特征进行融合,提出了一种综合的特征表达方法。 具体而言,该方法首先利用ORB算法提取像中的特征,然后通过FAST算法检测像中的线特征。在融合点线特征之前,需要进行特征匹配。论文提出了一种基于霍夫变换的方法来进行点线特征的匹配,通过匹配得到的特征特征线,可以计算相机的运动信息并更新三维地。 实验证明,基于点线综合特征的双目视觉SLAM方法相比于传统的特征方法具有更高的定位和重建精度。该方法通过充分利用线特征来提高对环境结构的感知能力,从而提升了SLAM系统的性能。 总的来说,《基于点线综合特征的双目视觉SLAM方法》提出了一种新颖的双目视觉SLAM方法,通过综合利用特征和线特征,可以提高三维地构建精度和相机的定位精度,对于室内导航、无人车等领域的应用有着重要的意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值