原创 VINS-Mono 代碼詳細解讀——基於滑動窗口的緊耦合後端非線性優化 optimization()

本講是VINS最核心部分了,前面經歷了  1)視覺跟蹤feature_tracker、IMU預積分integrationBase類; 2)初始化中SFM純視覺估計滑動窗中所有幀的位姿和3D路標點深度、SFM與IMU預積分鬆耦合對齊求解初始

原创 VINS-Mono 代碼詳細解讀——基礎儲備:在線Cam到IMU的外參標定 InitialEXRotation類

本講還是爲了estimator類中最主要的函數processImage()做知識儲備。 前面兩講知識儲備主要講了IMU預積分相關的integrationBase類以及圖像特徵點管理器feature_manager.cpp,本節將對proc

原创 VINS-Mono 代碼詳細解讀——IMU離散中值預積分

IMU離散中值預積分 1.1、IMU模型 測量值:加速度計a^、陀螺儀w^, 加上了bias遊走和隨機白噪聲。 真實值:加速度計a、陀螺儀w。 實際情況下,可以獲得測量值a^和w^,需要反推真實值。一般忽略隨機遊走高斯噪聲n w=w^-

原创 C++ STL find和find_if

LZ在VINS-Mono中看源代碼時,vins_estimator/src/feature_manager.cpp的addFeatureCheckParallax()查看視差判斷是否爲關鍵幀函數中,尋找featuer list中是否之前出

原创 VINS-Mono 代碼詳細解讀——feature_manager.cpp

LZ發現estimator.cpp中關鍵函數爲processImage(),裏面包含了IMU預積分、圖像處理特徵點跟蹤等一系列流程,上一節中對processIMU()以及預積分的integrationBase類進行解讀,本節繼續做基礎儲備

原创 VINS論文解讀與代碼詳解目錄

Vins-mono是香港科技大學開源的一個VIO算法,用緊耦合的方法,通過單目+IMU恢復出尺度,效果非常棒。 VINS的功能模塊可包括五個部分:數據預處理、初始化、後端非線性優化、閉環檢測及閉環優化。代碼中主要開啓了四個線程,分別是:

原创 VINS-Mono 代碼詳細解讀——Estimator_node.cpp

estimator_node.cpp int main(int argc, char **argv) { // 1.ROS初始化設置節點vins_estimator,設置句柄n ros::init(argc, argv,

原创 C++11多線程---互斥量mutex、鎖lock、條件變量std::condition_variable

一、lock_guard<mutex>  lock() 多線程訪問同一資源時,爲了保證數據的一致性,必要時需要加鎖mutex。 任一時刻,只能有一個線程訪問該對象,加鎖mutex 1. 直接操作mutex的lock/unlock函數 #

原创 VINS-Mono 代碼詳細解讀——初始化2:視覺慣性聯合初始化

本節主要介紹Estimator模塊的視覺慣性聯合初始化模塊,visualIntialAlign()函數內第一步VisualIMUAlignment()函數 bool Estimator::visualInitialAlign()主要過程爲

原创 extern關鍵字

1、extern用於兩個或多個文件共享相同的全局變量或者函數。對於所有的程序文件是可用的。 2、而且當使用extern時可以找到已經定義的變量或函數的引用。\ 第一個文件: int count ; int main(){ coun

原创 VINS未讀懂代碼

run_euroc.cpp 主函數中 pSystem.reset(new System(sConfig_path));// shared_ptr引用計數減一,這裏的用法是?????  System.cpp的getMeasurements

原创 目標跟蹤--模板匹配

模板匹配原理 算法步驟 opencv調用函數 matchTemplate minMaxLoc cvSetMouseCallback Rect rectangle 代碼  模板匹配原理 根據已知模板圖像T在被搜索圖S中平移,

原创 構造函數與析構函數

  一、構造函數 名字與類名相同,可以有參數,不能有返回值(void也不行) 作用:對對象進行初始化,給成員變量賦值。默認的構造函數無參數,不進行任何操作。 對象生成時構造函數自動被調用,一旦對象生成,再也不能在其上執行構造函數。 //

原创 SLAM求職問題

多視圖幾何求解 相似、仿射、射影變換區別 基本矩陣F、本質矩陣E、單應矩陣H 處理關鍵幀、李羣李代數、特徵點法與直接法 手推BA RANSAC在圖像匹配上應用 PnP(3D-2D)、ICP(3D-3D) 直接法與光流法 常見SLAM SL

原创 move

vector::push_back 等這類函數時,會對參數的對象進行復制,連數據也會複製.這就會造成對象內存的額外創建,  move是將對象的狀態或者所有權從一個對象轉移到另一個對象,只是轉移,沒有內存的搬遷或者內存拷貝。 結果:原字符串