RGBDTAM: A Cost-Effective and Accurate RGB-D Tracking and Mapping System

0.引言

IROS2017.一個小衆的不太出名的RGBD-SLAM系統,無意中搜索到,發現是開源的。學習一下。

主要貢獻:

  • 1.系統結合半稠密光度誤差和稠密集合誤差作爲VO的優化error,並證明了這樣選擇是精確度最高的組合;
  • 2.構建了多視圖約束及其在tracking和mapping線程的誤差模型;

.  In the case of the geometric error, all the pixels have a high signal/noise ratio. There are some degenerated cases, though, where some degrees of freedom are not constrained, and those justify the combination of both residuals. As they are complementary, the minimization of both errors achieves the best performance. The photometric error is useless in texture-less scenarios, and the geometric one is useless in structure-less scenarios.

系統說明:

  • 1.vo_system launch the three threads, tracking, semidense mapping and dense mapping (3D superpixels)
///Launch semidense tracker thread
boost::thread thread_semidense_tracker(&ThreadSemiDenseTracker,&images,&semidense_mapper,&semidense_tracker,&dense_mapper,&Map,&vis_pub,&pub_image);
//Launch semidense mapper thread
boost::thread thread_semidense_mapper(&ThreadSemiDenseMapper,&images,&images_previous_keyframe,&semidense_mapper,&semidense_tracker,&dense_mapper,&Map,&pub_cloud);
///Launch viewer updater.
boost::thread thread_viewer_updater(&ThreadViewerUpdater, &semidense_tracker,&semidense_mapper,&dense_mapper);
  • 2.mapping線程構建新幀:M\mathcal{M}
    關鍵幀:{K1,,Kj,,Km}\left\{\mathcal{K}_{1}, \ldots, \mathcal{K}_{j}, \ldots, \mathcal{K}_{m}\right\}其中Kj={Twj,Pj}\mathcal{K}_{j}=\left\{T_{w}^{j}, P^{j}\right\}
    點雲幀:Pwj=P_{w}^{j}={pw1,,pwi,,pwn}\left\{p_{w}^{1}, \dots, p_{w}^{i}, \dots, p_{w}^{n}\right\}
  • 3.代碼使用openmp加速,boost管理線程。

1.相關係統(direct RGB-D odometry)

1.KinectFusion:只利用了深度信息;
2.Kintinuous:KinectFusion的改進,對內存機制進行了改進,能進行較大場景的重建且加入了閉環與位姿優化;
3.DVO-SLAM:基於圖優化,關鍵幀約束,based on dense photometric and geometric error minimization,CPU實時,但是輸入系統的圖像分辨率被降低(不是640*480);
4.ElasticFusion:ICP + photometric reprojection error.

Alt

2. tracking thread

最小化光度誤差rphr_{ph}與幾何誤差rgr_g.

{T^,a^,b^}=argminT,a,brph+λrg\{\hat{T}, \hat{a}, \hat{b}\}=\underset{T, a, b}{\arg \min } r_{p h}+\lambda r_{g}

其中,aba、b是當前圖像的增益和亮度.TT是當前相機姿態的運動估計增量。λ\lambda是對光度和幾何項進行加權的學習常數。tracking線程只優化TabT、a、b三個量。
優化在李代數空間進行:

T=[expSO(3)(δω)δt01×31] T=\left[\begin{array}{cc}{\exp _{\mathrm{SO}(3)}(\delta \omega)} & {\delta t} \\ {0_{1 \times 3}} & {1}\end{array}\right]
GN優化得到的結果右乘更新:
TwfTwfT^1 T_{w}^{f} \leftarrow T_{w}^{f} \hat{T}^{-1}

2.1.Photometric error (rphr_{ph} )

We minimize the photometric error only for those pixels belonging to Canny edges.Their inverse depth is estimated using the mapping method.

photometric error:

rph=i=1nwp((Ik(π(Twkpwi))aIf(π(TwfT1pwi))+b)2σph2) r_{p h}=\sum_{i=1}^{n} w_{p}\left(\frac{\left(I_{k}\left(\pi\left(T_{w}^{k} p_{w}^{i}\right)\right)-a I_{f}\left(\pi\left(T_{w}^{f} T^{-1} p_{w}^{i}\right)\right)+b\right)^{2}}{\sigma_{p h}^{2}}\right)
其中:

  • Ik(π(Twkpwi)I_{k}\left(\pi\left(\boldsymbol{T}_{w}^{k} p_{w}^{i}\right)\right.爲關鍵幀IkI_k中3D點的PwiP_w^i的灰度(或則說光照強度);
  • If(π(TwfT^1pwi)))\left.I_{f}\left(\pi\left(\boldsymbol{T}_{w}^{f} \hat{T}^{-1} p_{w}^{i}\right)\right)\right)爲當前幀IfI_f中3D點的PwiP_w^i的灰度(或則說光照強度);
  • π()\pi()爲重投影函數;
  • a和b是當前幀相對於當前關鍵幀的增益和亮度,通過估計a和b來解決全局光照明暗的變化;
  • wpw_p是Geman-McClure魯棒cost function,用於消除遮擋和動態對象的影響;
  • σph2\sigma_{p h}^{2}是什麼?論文中沒提到。是高維高斯傳遞的方差??

2.2.Covariance-weighted Geometric error (rgr_g )

(1)Covariance-weighted Geometric error:
rg=i=1nwp((1ezTTwfT1pwiDf(π(TwfT1pwi))2σg2))\left.r_{g}=\sum_{i=1}^{n} w_{p}\left(\frac{\left(\frac{1}{e_{z}^{T} T_{w}^{f} T^{-1} p_{w}^{i}}-D_{f}\left(\pi\left(T_{w}^{f} T^{-1} p_{w}^{i}\right)\right)^{2}\right.}{\sigma_{g}^{2}}\right)\right)

其中:

  • 1ezTTwfpxi\frac{1}{e_{z}^{T} \boldsymbol{T}_{w}^{f} p_{x}^{i}} 3D點雲與投影幀對齊後的逆深度?錯了:是當前幀的逆深度(殘差構建就是預測的逆深度減去測量的你深度值,從而優化TT);
  • DfD_{f}測量值的逆深度;
  • ez=[0,0,1]e_{z}=[0,0,1]爲三維向量;

.   in order to achieve CPU real-time performance. We use four pyramid levels (from 80 × 60 to 640 × 480). For the first level we use all pixels. For the second, third and fourth levels we use one in every two, three and four pixels respectively –horizontally and vertically.

(2)Covariance Propagation for Structured Light Cameras:

只對結構光深度相機??有什麼區別嗎?雙目!!
深度:
z=fbdz=\frac{f b}{d}
逆深度:
ρ=dfb\rho=\frac{d}{f b}

標準差:
σz=zdσd=fbd2σd=z2fbσd \sigma_{z}=\frac{\partial z}{\partial d} \sigma_{d}=\frac{f b}{d^{2}} \sigma_{d}=\frac{z^{2}}{f b} \sigma_{d}

逆深度標準差:

σρ=ρdσd=σdfb \sigma_{\rho}=\frac{\partial \rho}{\partial d} \sigma_{d}=\frac{\sigma_{d}}{f b}

2.3.Scaling parameters

As we combine residuals of different magnitudes, we need to scale them according to their covariances. For the geometric error we propagate its uncertainty using equations 8 and 9.(就是上面的標準差) For the photometric error we use the median absolute deviation of the residuals of the previous frame to extract a robust estimation of the standard deviation.
對於光度誤差,使用前一幀殘差的中值絕對偏差來提取標準偏差的可靠估計:
σph=1.482median(rphmedian(rph)) \sigma_{p h}=1.482 * \operatorname{median}\left(r_{p h}-\operatorname{median}\left(r_{p h}\right)\right)

3.Mapping thread

添加關鍵幀到地圖。每個像素有兩種方式來估計其逆深度:傳感器測量ρ1\rho 1以及多視圖三角化ρ2\rho 2.The inverse depth ρ2\rho 2 for every high-gradient pixel uu^* in a keyframe IjI_j is estimated by minimizing its photometric error rphor_{ph}^o with respect to several overlapping views IoI_o .

ρ^2=argminρ2rph \hat{\rho}_{2}=\underset{\rho_{2}}{\arg \min } r_{p h}
rph=o(Ij(su)Io(G(su,Twj,Two,ρ)))22 r_{p h}=\sum_{o}\left\|\left(I_{j}\left(s_{u^{*}}\right)-I_{o}\left(G\left(s_{u^{*}}, T_{w}^{j}, T_{w}^{o}, \rho\right)\right)\right)\right\|_{2}^{2}

其中:

  • ρ=j=12ρjσj2j=121σj2,σ=1j=121σj2\rho=\frac{\sum_{j=1}^{2} \frac{\rho_{j}}{\sigma_{j}^{2}}}{\sum_{j=1}^{2} \frac{1}{\sigma_{j}^{2}}}, \quad \sigma=\frac{1}{\sum_{j=1}^{2} \frac{1}{\sigma_{j}^{2}}}
  • SuS_{u} *:座標
  • G()G()投影函數,IjI_j投影到IoI_o
  • σj\sigma_{j}爲前面的標準差;

4.LOOP CLOSURE AND MAP REUSE

略.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章