视觉SLAM十四讲中的修改代码总结
目錄
Chapter 3
visualizeGeometry
Chapter 4
Chapter 6
關于cmake_modules
g2o_curve_fitting
Chapter 7
Chapter 12
首先,關于數據集下載,直接下載又慢又容易失敗;現在我用 free download manager(迅雷更好,但我是ubuntu)。
高翔的《視覺SLAM十四講》提供了很多代碼,但所用的庫版本比較老,我用新版本庫在編譯的時候常會遇到問題。在此記錄我的修改。持續更新ing....
我的版本:opencv3.4.1
Chapter 3
visualizeGeometry
CMakeLists.txt: C++版本改為14。注:C++版本的標記似乎是有兩種寫法:
set( CMAKE_CXX_FLAGS "-std=c++14 -O3" ) set( CMAKE_CXX_STANDARD 14)Chapter 4
sophus庫的安裝:
SLAM十四講中Sophus庫的make報錯 lvalue required as left operand of assignment unit_complex_.real()_supercolar的博客-CSDN博客
Chapter 6
關于cmake_modules
從第6講開始,代碼里開始有cmake_modules文件夾。這個與 find_packages 有關,find_package是怎么find的呢?它有兩個模式:
我在自己電腦里搜索了一下,Ceres, g2o, OpenCV 等都有自己的<package_name>Config.cmake文件,所以實際上很多章節的cmake_modules文件夾都可以刪掉,讓find_package直接使用第二個模式。
一個例外是,第7講的g2o里include了外部的庫CSparse,它沒有<package_name>Config.cmake,所以需要自己寫Find<package_name>.cmake。不過這個文件不用自己寫,它也在OpenCV庫的安裝包里:Downloads/g2o-master/cmake_modules/FindCSparse.cmake,直接把文件copy過來就行(十四講代碼就是這么做的)。
g2o_curve_fitting
CMakeLists.txt: C++版本改為14。
另外,新版本的opencv中的一些普通指針改為了智能指針unique_ptr。unique_ptr中,為了防止重復構造,delete了拷貝構造函數、賦值函數,用移動構造、移動賦值替代——所以代碼中會涉及到把左值引用通過std::move()轉換為右值引用。
//<------------------old version---------------------->// // Block::LinearSolverType* linearSolver = new g2o::LinearSolverDense<Block::PoseMatrixType>(); // 線性方程求解器 // Block* solver_ptr = new Block( linearSolver ); // 矩陣塊求解器 // g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( solver_ptr ); //<------------------new version---------------------->// std::unique_ptr<Block::LinearSolverType> linearSolver(new g2o::LinearSolverDense<Block::PoseMatrixType>()); std::unique_ptr<Block> solver_ptr(new Block(std::move(linearSolver)));// 矩陣塊求解器 g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( std::move(solver_ptr) );疑問:g2o的變量和其他的不一樣?
Chapter 7
同Chapter6。VertexSBAPointXYZ 改為 VertexPointXYZ。
Chapter 12
gen_vocab_large.cpp: associate.py的對齊操作不是必須,把相關內容替換成自己數據集路徑即可。
總結
以上是生活随笔為你收集整理的视觉SLAM十四讲中的修改代码总结的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【教训】rm -fr ./* 教训
 - 下一篇: gdb pwndbg插件安装