在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 總列數 固定長度和...