原创 小白學習大型C++源碼項目系列之利用git版本控制高效率閱讀代碼

使用一款適合自己的編譯器,適合自己的就是最好的。 高效地使用快捷鍵,鼠標點來點去真的很浪費時間,等你操作完思路都斷了。 不要通過Debug的方式來閱讀代碼,這樣會失去全局觀,思路不能連續。 先將工程跑起來,戰術上藐

原创 視覺SLAM十四講第五講代碼實現原理詳細解讀+代碼實現詳細註釋-g2oCurveFitting.cpp

文章目錄G20基礎知識講解註釋代碼詳細解讀 G20基礎知識講解 SLAM的後端一般分爲兩種處理方法: 一種是以擴展卡爾曼濾波(EKF)爲代表的濾波方法, 一種是以圖優化爲代表的非線性優化方法。 濾波方法的優缺點: 優點:在當時計算

原创 視覺SLAM十四講第七講代碼實戰-feature_extraction.cpp

這部分代碼主要就是調用opencv的方法,下面說一下具體流程吧! 通過命令行輸入圖片的路徑讀取圖片 初始化特徵點:std::vector<KeyPoint> keypoints_1, keypoints_2; 初始化描述子:Ma

原创 opencv3.4.0 源碼編譯安裝

本文講解Ubuntu16.04下用源碼安裝OpenCV3.4.0,並實現兩種版本的opencv的相互切換,以及編譯文件如何寫。其實不用安裝那麼多的依賴,並且也不需要開啓那麼多功能,根據實際項目去編譯吧。 源碼下載 [下載OpenC

原创 視覺SLAM十四講第七講代碼實戰-orb_self.cpp

// compute the descriptor void ComputeORB(const cv::Mat &img, vector<cv::KeyPoint> &keypoints, vector<DescType> &de

原创 視覺SLAM十四講第七講代碼實戰-triangulation.cpp

//-- 三角化 vector<Point3d> points; triangulation(keypoints_1, keypoints_2, matches, R, t, points); vector<Point

原创 視覺SLAM十四講第七講代碼實戰-pose_estimation_2d2d.cpp

//-- 驗證對極約束 Mat K = (Mat_<double>(3, 3) << 520.9, 0, 325.1, 0, 521.0, 249.7,

原创 小白學習大型C++源碼項目系列之git版本控制

github是國外的代碼管理服務器。gitee碼雲國內的代碼管理服務器。gitlab是私人搭建的代碼管理服務器。 三者都是裝有git代碼管理服務器,都用到的git纔是最主要的代碼管理方法。 生成ssh公鑰並添加公鑰到git服務器

原创 視覺SLAM十四講第五講代碼實戰-joinMap.cpp

經過漫長的基礎知識學習,終於到了驗證收貨的時候了,網上關於這裏的內容已經很多了,我這裏只講一些我認爲重要的地方。 首先什麼是針孔相機模型? 針孔相機模型主要用到的原理就是“三角形的相似關係”。 z 軸指向相機前方、x 向右、y

原创 視覺SLAM進階從零開始手寫VIO學習筆記(二)

文章目錄圖優化後端原理講解圖優化後端代碼實踐 圖優化後端原理講解 圖優化本質上是一個優化問題而優化問題有三個最重要的因素:目標函數、優化變量、優化約束。 多時候目標函數𝐹(𝑥)的形式太複雜,導致我們沒法寫出導數的解析形式,或者難以

原创 小白學習大型C++源碼項目系列之狀態機和圖靈機

文章目錄狀態機什麼是狀態機?如何描述有限狀態機代碼實踐狀態機圖靈機什麼是圖靈機圖靈機的結構 狀態機 什麼是狀態機? 以操作系統中的任務調度爲例來說明什麼是狀態機。在操作系統的任務調度中經常見到狀態機,其作用是根據任務的狀態和當前資

原创 視覺SLAM進階從零開始手寫VIO學習筆記(一)

文章目錄g2o官方文檔依賴編譯安裝gtsam官方文檔安裝依賴編譯安裝ceresceres官方文檔安裝依賴ceres的編譯命令ceres的安裝位置AprilSAMSophus官方教程編譯 g2o

原创 小白學習大型C++源碼項目系列之開篇詞(乾貨滿滿)

遲到的開篇詞,好飯不怕晚,下面的可全是吐血總結啊! 先來思考什麼是大型項目?無非就是由很多文件而已,一個文件負責一個功能;那麼問題來了文件和文件之間是怎麼聯繫的呢?答案就是頭文件,如果我想調用另一個文件那我就在當前文件中包含另一個