vins外參ric的的估計

2021-09-29 11:36:03 字數 1627 閱讀 1147

在feature detection and tracking模組中,利用harris特徵點匹配通過基礎矩陣和ransac恢復出rck

+1ck

r_^rc

k+1c

k​,相應的使用imu陀螺儀資料積分得到rbk

+1bk

r^_rb

k+1b

k​;這兩個測量滿足:

r ck

+1ck

⋅rbc

=rbc

⋅rbk

+1bk

r_^ \cdot r_^=r_^ \cdot r_^

rck+1c

k​⋅r

bc​=

rbc​

⋅rbk

+1bk

​將測量得到的r用四元數表示,並用四元數的運算(左乘右乘),可以得到乙個約束方程:

q k+

1k⋅q

bc=0

q_^ \cdot q_^=0

qk+1k​

⋅qbc

​=0利用多組資料可以獲得乙個超定方程:

q n⋅

qbc=

0q_ \cdot q_^=0

qn​⋅qb

c​=0

通過求解最小二乘解,得到qbc

q_b^c

qbc​

。注意其中q

nq_n

qn​是包含使用huber核的權重的,權重通過計算imu項和視覺findfundamentalmat計算得到的旋轉矩陣之間的殘差得到,殘差越大的項權重越大。

bool initialexrotation::

calibrationexrotation

(vector> corres, quaterniond delta_q_imu, matrix3d &calib_ric_result)

//svd分解中最小奇異值對應的右奇異向量作為旋轉四元數

jacobisvd

svd(a, computefullu | computefullv)

; matrix<

double,4

,1> x = svd.

matrixv()

.col(3

);quaterniond estimated_r

(x);

ric = estimated_r.

torotationmatrix()

.inverse()

;//cout << svd.singularvalues().transpose() << endl;

//cout << ric << endl;

vector3d ric_cov;

ric_cov = svd.

singularvalues()

.tail<

3>()

;//至少迭代計算了window_size次,且r的奇異值大於0.25才認為標定成功

if(frame_count >= window_size &&

ric_cov(1

)>

0.25

)else

return

false

;}

2D到3D 外參矩陣估計

1.背景 最近正在做姿態估計,簡單搜姿態估計的關鍵字得到的資訊不夠完整,所以把搜到的資訊加上自己的理解整合在這篇文章。2.正向3d到2d的過程 首先3d物體在世界座標系,也就是我們現實世界,物體是現實中的絕對尺寸,以m為單位。現實世界的物體認為成剛體,那麼這個剛體和相機之間會有乙個相對位置。對於物體...

VINS 執行遇到的問題

講真,建議用跟專案一樣的環境去跑,不然真的很麻煩,各種問題.相信大家看進來也不是看我瞎扯的,上點乾貨.這裡可以參考一下 1 opencv error 遇到這個問題其實就是opencv的版本問題.如果你的本機是ubuntu16.04,那麼很簡單你只需要在本機安裝opencv3,然後找到各個包裡面的cm...

估計堆的大小

可以使用以下步驟估計在堆中儲存資料所需的空間量 指定表中顯示的行數 num rows 表中的行數 指定固定長度和可變長度列的數量,並計算儲存所需的空間 計算每組列在資料行中所佔據的空間。列的大小取決於資料型別和長度說明。有關詳細資訊,請參閱 資料型別 資料庫引擎 num cols 總列數 固定長度和...