ORBSLAM 重定位 一

2021-10-24 07:22:38 字數 1300 閱讀 6544

變數含義:

mcurrentframe.

computebow()

;

detectrelocalizationcandidates

(&mcurrentframe)

;

step3.1對每乙個候選幀進行詞袋匹配

int nmatches = matcher.

searchbybow

);

pnpsolver* psolver =

newpnpsolver);

psolver-

>

setransacparameters

(0.99,10

,300,4

,0.5

,5.991

);

step4.1通過5次epnp+ransac迭代計算當前幀位姿

cv::mat tcw = psolver-

>

iterate(5

,bnomore,vbinliers,ninliers)

;

step4.3ba優化,僅優化相機位姿,返回認為正確匹配點的數量,如果正確匹配數量小於10,則放棄此候選幀。

int ngood = optimizer::

poseoptimization

(&mcurrentframe)

;

step4.4如果上一步得到的內點數量在10到50之間,則通過投影的方式對之前未進行匹配的點再次進行匹配。如果最後得到的內點大於50,則認為與當前候選關鍵幀計算得到的pose為正確的pose,重定位成功,結束迴圈。

step4.4.1 對之前沒有進行匹配上的點在一定的閾值之內投影匹配

ORB SLAM2 定位模式

void load const string filename,systemsetting mysystemsetting,keyframedatabase mpkeyframedatabase 別忘了新增標頭檔案和命名空間中的類宣告。同樣,需要在map.cc檔案中修改load 函式。laod 函式...

重定位 介紹 一

重定位 為什麼需要重定位?重定位是什麼?怎麼實現重定位?環境 1 s3c2440裸板 2 linux version 4.15.0 首先1 為什麼需要重定位?s3c2440啟動有兩種方式 a nand 啟動 b nor啟動 nornand 可以像記憶體一樣讀,不能像記憶體一樣寫,因此當 存在全域性變...

共享可寫節包含重定位 理解重定位

一 段的概念 段是程式的組成元素。將整個程式分成乙個乙個段,並且給每個段起乙個名字,然後在鏈結時就可以用這個名字來指示這些段,使得這些段排布在合適的位置。乙個程式通常包含以下五個段 段 text 存放 指令 唯讀資料段 rodata 存放有初始值並且const修飾的全域性類變數 全域性變數或stat...