视觉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的呢?它有两个模式:
- module模式:在 CMAKE_MODULE_NAME 下搜索 Find<package_name>.cmake,然后读取变量等等。十四讲的代码采取的就是这个方法,作者先将 cmake_modules 文件夹路径放入 CMAKE_MODULE_NAME,然后建立 Find<package_name>.cmake 文件,并在里面写明 include 和 lib 的路径。
- config模式:一般库在安装后都会有 <package_name>Config.cmake 或 <lower_package_name>-config.cmake 文件,而此模式就是去搜索这个文件并读取。
我在自己电脑里搜索了一下,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十四讲中的修改代码总结相关推荐
- 视觉slam十四讲ch5 joinMap.cpp 代码注释(笔记版)
视觉slam十四讲ch5 joinMap.cpp 代码注释(笔记版) 转载自大神 #include <iostream> #include <fstream> using na ...
- [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵
[视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵 1点.向量和坐标系 2 坐标系间的欧式变换 2.1 欧式变换之旋转 2.2 欧式变换之平移 3 变换矩阵与齐次坐标 4 Eigen库的简 ...
- 视觉SLAM十四讲(第二版)环境安装心得体会
前言 将高博的视觉SLAM14讲(第二版)看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑.为了后来的人能够更加快速上手SLAM,现将书中环境安装心得记录如下. 环境安装 1. 安 ...
- 【视觉SLAM十四讲】第一章理论详解
文章目录 第一讲 概述与预备知识 SLAM是什么 室内/室外定位 稀疏-半稠密重建 稠密重建 SLAM可以用在哪些地方? **作业1.** SLAM会在哪些场合中⽤到?⾄少列举三个⽅向. SLAM: ...
- slam入门3:2D-2D对极几何中的对极约束公式详细解释(参考 视觉slam十四讲)
声明:下面一些内容引用了高翔的视觉slam十四讲, 感谢作者. 对于我这种刚入门的小白(cai bi)来说,对极约束公式中的某些步骤理解起来还是有些难度的,下面把个人对相关内容的理解写下来,以备日后翻 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 《视觉SLAM 十四讲》第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问题及解决方法
<视觉SLAM 十四讲>第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问 ...
- 视觉SLAM十四讲笔记-第三讲 刚体运动
目录 1.两条基本公式:运动方程和观测方程 2.点与坐标系: 3. 旋转矩阵 3.1 两个条件: 4.旋转向量和欧拉角 4.1 旋转向量(Rotation Vector,又称角轴/轴角(Angle A ...
- 视觉SLAM十四讲 报错 Could not find a configuration file for package “OpenCV“ that is compatible with reques
视觉SLAM十四讲 报错 Could not find a configuration file for package "OpenCV" that is compatible w ...
- 视觉SLAM十四讲学习记录 第五讲
之前第四讲的地址 以及第四讲习题的地址 第五讲 相机与图像 前面两讲中,我们介绍了"机器人如何表示自身位姿"的问题,部分地解释了SLAM经典模型中变量的含义和运动方程部分.本讲 ...
最新文章
- Oracle 表的创建 及相关參数
- AcWing - 171 送礼物(双向dfs)
- oracle 对象管理 07_PLSQL基础与异常
- ElasticDL:首个基于 TensorFlow 实现弹性深度学习的开源系统
- IDEA SpringBoot多模块项目搭建详细过程(转)
- php实现商城评论,谁能写一个thinkphp 商城购物评论回复能例子?
- 生成对抗网络(十)----------infoGAN
- PCB正片和负片的个人理解
- 贝叶斯(一)先验分布与后验分布
- Android flag详解
- 再探阿里的“数据+业务”双中台架构
- 打造国内专业企业研发管理解决方案,ONES完成华创资本领投A+轮600万美元融资
- fckeditor 上传图片 php_FCKeditor上传文件重命名for php
- 期货投资者教育系列丛书 铝
- 农村商业银行服务器未收到证书,不及时更新“证书” 当心网银U盾失效
- HTML的奇葩嵌套规则
- MSET算法参差分析(二)
- Spring Boot —— Mybatis-Plus(小试小刀)
- 如何充分利用实时聊天系统?
- 刚刚毕业,就收到了字节的面试邀请,艰难四面终拿offer!