目录

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的呢?它有两个模式:

  1. module模式:在 CMAKE_MODULE_NAME 下搜索 Find<package_name>.cmake,然后读取变量等等。十四讲的代码采取的就是这个方法,作者先将 cmake_modules 文件夹路径放入 CMAKE_MODULE_NAME,然后建立 Find<package_name>.cmake 文件,并在里面写明 include 和 lib 的路径。
  2. 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十四讲中的修改代码总结相关推荐

  1. 视觉slam十四讲ch5 joinMap.cpp 代码注释(笔记版)

    视觉slam十四讲ch5 joinMap.cpp 代码注释(笔记版) 转载自大神 #include <iostream> #include <fstream> using na ...

  2. [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵

    [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵 1点.向量和坐标系 2 坐标系间的欧式变换 2.1 欧式变换之旋转 2.2 欧式变换之平移 3 变换矩阵与齐次坐标 4 Eigen库的简 ...

  3. 视觉SLAM十四讲(第二版)环境安装心得体会

    前言 将高博的视觉SLAM14讲(第二版)看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑.为了后来的人能够更加快速上手SLAM,现将书中环境安装心得记录如下. 环境安装 1. 安 ...

  4. 【视觉SLAM十四讲】第一章理论详解

    文章目录 第一讲 概述与预备知识 SLAM是什么 室内/室外定位 稀疏-半稠密重建 稠密重建 SLAM可以用在哪些地方? **作业1.** SLAM会在哪些场合中⽤到?⾄少列举三个⽅向. SLAM: ...

  5. slam入门3:2D-2D对极几何中的对极约束公式详细解释(参考 视觉slam十四讲)

    声明:下面一些内容引用了高翔的视觉slam十四讲, 感谢作者. 对于我这种刚入门的小白(cai bi)来说,对极约束公式中的某些步骤理解起来还是有些难度的,下面把个人对相关内容的理解写下来,以备日后翻 ...

  6. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  7. 《视觉SLAM 十四讲》第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问题及解决方法

    <视觉SLAM 十四讲>第五讲 实践:拼接点云-编译遇到的terminate called after throwing an instance of 'pcl::IOException问 ...

  8. 视觉SLAM十四讲笔记-第三讲 刚体运动

    目录 1.两条基本公式:运动方程和观测方程 2.点与坐标系: 3. 旋转矩阵 3.1 两个条件: 4.旋转向量和欧拉角 4.1 旋转向量(Rotation Vector,又称角轴/轴角(Angle A ...

  9. 视觉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 ...

  10. 视觉SLAM十四讲学习记录 第五讲

    之前第四讲的地址 以及第四讲习题的地址 第五讲 相机与图像   前面两讲中,我们介绍了"机器人如何表示自身位姿"的问题,部分地解释了SLAM经典模型中变量的含义和运动方程部分.本讲 ...

最新文章

  1. Oracle 表的创建 及相关參数
  2. AcWing - 171 送礼物(双向dfs)
  3. oracle 对象管理 07_PLSQL基础与异常
  4. ElasticDL:首个基于 TensorFlow 实现弹性深度学习的开源系统
  5. IDEA SpringBoot多模块项目搭建详细过程(转)
  6. php实现商城评论,谁能写一个thinkphp 商城购物评论回复能例子?
  7. 生成对抗网络(十)----------infoGAN
  8. PCB正片和负片的个人理解
  9. 贝叶斯(一)先验分布与后验分布
  10. Android flag详解
  11. 再探阿里的“数据+业务”双中台架构
  12. 打造国内专业企业研发管理解决方案,ONES完成华创资本领投A+轮600万美元融资
  13. fckeditor 上传图片 php_FCKeditor上传文件重命名for php
  14. 期货投资者教育系列丛书 铝
  15. 农村商业银行服务器未收到证书,不及时更新“证书” 当心网银U盾失效
  16. HTML的奇葩嵌套规则
  17. MSET算法参差分析(二)
  18. Spring Boot —— Mybatis-Plus(小试小刀)
  19. 如何充分利用实时聊天系统?
  20. 刚刚毕业,就收到了字节的面试邀请,艰难四面终拿offer!

热门文章

  1. mySQL及可视化界面navicat在window的配置
  2. c语言坐标画图,C语言中绘图的函数库
  3. Java案例—学生管理系统
  4. Google Earth Engine——Landsat (数据介绍)GEE数据到底是否满足几何和辐射校正?
  5. 2网口全网通4G工业路由器特点
  6. PDF区域文本提取工具
  7. python ImportError: cannot import name Template解决方法
  8. 让XP远程桌面连接支持网络身份验证
  9. 基于能量采集的认知无线电功率分配
  10. 微分方程数值解法的matlab程序