ORB SLAM2在window下的配置 1

2021-08-04 02:42:26 字數 1240 閱讀 5048

第一篇部落格,獻給slam.

本系列部落格,記錄的是我在window下配置orb-slam2的全過程。orb-slam2在linux下的配置詳情包括其原始碼在 [其github主頁]上可以了解到。在window上配置稍顯麻煩一點,因為那些現有的說明包括cmakelist.txt、依賴庫,甚至是原始碼不能直接照搬,還需要動點腦筋修改才行。我在配置的時候碰到了不少蜜汁問題,也成功摸索出解決方案,現在將其記錄於此以作備忘。

首先明確一下我們的目標平台和一些軟體工具:

我就不詳述怎麼安裝這些東西了。接下來我們將會用到的原始碼,根據orb-slam2的要求,我們同樣需要以下這些東西:

好了,準備差不多結束了,最後闡述一下我的配置思路。首先,我們將會從各個依賴庫開始配置起,因為這些原始碼自帶cmakelist.txt,我們用win下的cmake將它們一鍵配置成vs的工程,然後在vs中生成我們所需要的目標庫檔案(.dll, .lib),生成的這些東西,我本人是將他們放在專門放package的資料夾中,當然會分類放好,每乙個庫資料夾下,對應兩個資料夾:lib和include. lib的內容就是由vs生成的,include的內容就直接從原始碼中拿。當然也可以把這些packages拷貝到乙個主要工程中(比如orb-slam),當成第三方庫,在vs中配置這些庫時,使用相對路徑,可以實現不同電腦間移動工作。

在vs中,右鍵專案->新建屬性表的方式可以配置這些庫的目錄,包括lib檔案以及標頭檔案的目錄,在其他工程中可以輕鬆地將這些屬性表包含進來,完成庫的配置。但是,dll檔案目錄的配置無法通過屬性表,只能是在右鍵專案->屬性->除錯->環境實現工程間的配置差異。因為這個原因,大多數配置庫的教程都會有一步,就是所謂的設定系統環境變數,這也可以實現本機不同vs工程即使不配置dll環境,也可以執行庫程式。

這是程式執行的過程決定的,程式執行需要載入dll時,首先它會在自身周圍,也即當前目錄下尋找,找不到時再去更大的環境中找。如果不設定vs環境,那麼程式就會直接去系統環境中尋找dll,相反,如果設定了vs環境,系統環境就會被忽略,無論vs環境下能否找得到。

聽起來設定vs環境十分繁瑣,但是我仍然使用它,考慮的原因有:

1. 我不能假定別的機器上有跟我一樣的庫;

2. 隨隨便便追加系統環境,會讓其變得雜亂不堪;

3. 有時候我們需要使用同乙個庫的不同版本,統一安置在系統環境下的做法就不太可取了。

大概就是這麼一回事了。第一次寫部落格,廢話還是太多了點。

ORB SLAM2 定位模式

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

ORBSLAM2之LocalMapping執行緒

一 處理新關鍵幀processnewkeyframe 五 區域性ba 六 刪除冗餘關鍵幀keyframeculling 七 將當前關鍵幀插入閉環檢測佇列 更新當前關鍵幀的共檢視updateconnections a 遍歷當前關鍵幀的mp,更新共檢視 b 更新當前關鍵幀的子關鍵幀與父關鍵幀 i.與當前...

ORB SLAM2詳解(四)跟蹤

這一部分是orb slam系統中最基本的一步,會對每一幀影象進行跟蹤計算。tracking執行緒執行在主線程中,主要思路是在當前幀和 區域性 地圖之間尋找盡可能多的對應關係,來優化當前幀的位姿。每次新採集到一幀影象,就是用下列介面將影象傳入slam系統就行處理。該 位於主程式中 pass the i...