文章目录

  • 前言
  • 一、运行环境配置
    • 1.在虚拟机上安装Ubuntu14.04
    • 2.方便Ubuntu使用
  • 二、《十四讲》的实践部分过程与问题
    • 1.Ubuntu下安装包的两种方法
    • 2.编译高翔的源码
      • ch2
      • ch3/useEigen
      • ch3/useGeometry
      • ch3/visualizeGeometry
      • ch4/useSophus
      • ch5/imageBasics
      • ch5/joinMap
      • ch6/ceres_curve_fitting
      • ch6/g2o_curve_fitting
  • 总结

前言

最近在看高博的《视觉SLAM十四讲》,几乎每一章都有实践部分。自己在实际操作中出现了一些问题,浪费了很多时间。于是想要把实践的过程和解决问题的过程记录下来,方便查阅。文中几乎所有问题都由前人解答过了,所以很多只是贴出链接。


一、运行环境配置

1.在虚拟机上安装Ubuntu14.04

链接: https://blog.csdn.net/qq_38410730/article/details/90954665.

2.方便Ubuntu使用

1.安装VMware Tools(用来跨系统复制粘贴,自由调整屏幕大小)
链接: https://blog.csdn.net/dcrmg/article/details/74090307.
之后可在虚拟机和Windows上相互复制粘贴,节省输入网址和代码的时间

2.解决火狐(Firefox)无法联网的问题(用来下载压缩包)
链接: https://blog.csdn.net/coding_Wen/article/details/108988911.
在第一步之后,我就能连上网了,搜索引擎自动变成了百度
进行第二步之后,我又上不了网了,原因是搜索引擎又跳回了Google,没找到百度,改成bing又可以了。

3.从文件目录下启动终端(在终端里切换目录太麻烦)
链接: https://blog.csdn.net/yuhengyue/article/details/98176655.

二、《十四讲》的实践部分过程与问题

1.Ubuntu下安装包的两种方法

使用apt-get命令安装

/*直接打开终端,输入*/
sudo apt-get install g++

使用cmake安装,(只要高博的源码3rdparty文件中包含的库,尽量不要自己下载,不同的版本可能会出现新问题。)

/*在解压好的文件夹内部,右键打开终端并输入*/
mkdir build
cd build
cmake ..
make
/*可以使用cmake -j4实现快速编译,但容易ram内存不足报错*//*如果是需要install的库,再加上一句*/
sudo make install

2.编译高翔的源码

在Firefox下打开https://github.com/gaoxiang12/slambook.,下载保存,并解压文件

ch2

在ch2文件夹内右键打开终端

mkdir build && cd build
cmake ..
make
cd ..
build/helloSLAM

ch3/useEigen

//使用apt-get命令安装Eigen
sudo apt-get install libeigen3-dev//在useEigen文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/eigenMatrix

ch3/useGeometry

//在useGeometry文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/eigenGeometry

ch3/visualizeGeometry

//安装Pangolin依赖项
sudo apt-get install libglew-dev//安装Pangolin
/*在解压好的Pangolin文件夹内打开终端*/
mkdir build && cd build
cmake ..
make
sudo make install//在visualizeGeometry文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/eigenGeometry

1.最后运行出现报错Pangolin X11: Unable to retrieve framebuffer options已放弃(核心已转储),看这篇文章:
https://blog.csdn.net/abcwoabcwo/article/details/107959192.

ch4/useSophus

//安装Sophus
/*在解压好的Sophus文件夹内打开终端*/
mkdir build && cd build
cmake ..
make //在useSophus文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/useSophus

ch5/imageBasics

//安装OpenCV依赖项
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev
libopenexr-dev libtbb-dev//安装opencv
/*在解压好的opencv-3.1.0文件夹内打开终端*/
mkdir build && cd build
cmake ..
make
sudo make install//在imageBasics文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/imageBasics ubuntu.png

1.opencv下载
在Firefox里打开https://opencv.org/releases,选择OpenCV – 3.1.0的Sources下载保存,并解压文件。

2.一个安装错误
在安装过程中可能会出现ICV: Downloading ippicv_linux_20151201.tgz 超时,下载该文件替换opencv-3.1.0/3rdparty/ippicv/downloads/linux-*目录下的同名文件,重新cmake。
参考文章:https://blog.csdn.net/qq_30163461/article/details/80441522.
替换文件:https://github.com/ZhengHui-Z/ippicv_linux_20151201.

3.高翔书中的可执行文件名错写如下,上面代码最后一行已经更正

build/image_basics ubuntu.png

ch5/joinMap

//使用apt-get命令安装PCL
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all//在joinMap文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/joinMap
pcl_viewer map.pcd

ch6/ceres_curve_fitting

//安装Ceres依赖项
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev//安装Ceres
/*在解压好的ceres-solver文件夹内打开终端*/
mkdir build && cd build
cmake ..
make
sudo make install//在ceres_curve_fitting文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/curve_fitting

ch6/g2o_curve_fitting

//安装g2o依赖项sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2
libcholmod-dev//安装g2o
/*注意g2o不可以在中文目录下,否则报错*/
/*在解压好的g2o文件夹内打开终端*/
mkdir build && cd build
cmake ..
make
sudo make install//在g2o_curve_fitting文件内打开终端
mkdir build && cd build
cmake ..
make
cd ..
build/curve_fitting

1.在中文目录下安装,会出现报错。移动到非中文目录下重新编译安装即可。
参考文章:https://blog.csdn.net/rsvp2012/article/details/53817613
2.报错:c++: fatal error: 已杀死 signal terminated program cc1plus
原因是使用多线程语句make -j4导致虚拟机的运行内存不足,减少线程或者干脆使用make即可解决问题。
参考文章:https://www.codeleading.com/article/10915219351/


总结

系统环境在虚拟机上使用Ubuntu14.04。目前除了opencv的包,其他的都使用apt-get命令安装或者使用作者提供的库。尽量与《十四讲》作者保持一致。

【《视觉SLAM十四讲》前ch2-ch6实践全过程和遇到的问题及解决办法】相关推荐

  1. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

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

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

  3. 视觉SLAM十四讲从理论到实践第二版源码调试笔记(理论基础1-6章)

    2019-2020-2学期机器人工程专业需要开设SLAM技术课程,使用教材为视觉SLAM十四讲从理论到实践第二版. 为方便学生学习课程知识,将Arduino.ROS1.ROS2和SLAM集成到课程定制 ...

  4. 《视觉slam十四讲从理论到实践》第一讲习题自测解答

    0x00 前言 <视觉slam十四讲从理论到实践>第一讲习题自测解析. 借助自身知识储备和搜索引擎后完成习题,仅供参考. 部分答案会觉得没有说明的必要就会略   0x01 习题部分 1.有 ...

  5. 《视觉slam十四讲》ch4学习笔记——sophus库使用的问题及解决方法

    在看完<视觉slam十四讲>第四章李群和李代数后,准备调试相应的代码,但是出现了各种各样的问题,但最后还是万幸,成功完成了调试.在这里记录一下期间遇到的问题和相应的解决方法以及最后的感想. ...

  6. 《视觉SLAM十四讲——从理论到实践》学习笔记

    第1讲:预备知识 1.3 风格约定 矩阵 A∧A^{\wedge}A∧: AAA的反对称矩阵. 坐标点 坐标点用向量表示,具体来说,是用列向量表示,vetcor(3,1): Eigen学习手册 数据结 ...

  7. 视觉slam十四讲 pdf_视觉SLAM十四讲|第12讲 回环检测

    1. 什么是回环检测 前面有说过累积误差的问题,前一时刻的误差会积累到后面,导致画不成圈圈,如图12-1所示,而画圈圈(全局一致性)很重要,所以需要有一个步骤来纠正当前的计算偏差. 回环检测通过判断相 ...

  8. 【视觉SLAM入门】一些关于视觉SLAM十四讲的重要基础概念

    文章目录 高翔. *视觉SLAM十四讲 从理论到实践*. 电子工业出版社, 2017. Print. 第二章:初识SLAM 第三章:三维空间刚体运动 第四章:李群与李代数 第五章:相机与图像 第六章: ...

  9. 视觉SLAM十四讲笔记-1

    视觉SLAM十四讲笔记-1 文章目录 视觉SLAM十四讲笔记-1 第一讲:预备知识 1.1 本书讲什么 1.2 如何使用本书 参考链接: link link 高翔,张涛,等. 视觉 SLAM 十四讲: ...

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

    2022年6月16日,现在是大学本科毕业准研一的暑假,老师开组会让我们确定了研究方向,我的研究方向是协同探测与自动驾驶.与师兄交流后建议我阅读一本书<视觉SLAM十四讲从理论到实践>.怕自 ...

最新文章

  1. “一百万行Python代码对任何人都足够了”
  2. CSDN并购博客园遐想
  3. 干货回顾 | 泛娱乐社交 APP 出海的破与立
  4. 【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
  5. 一、MySQL数据库基础
  6. 关于处理百万级大批量数据的mysql运行几个重要点
  7. C语言中的转义字符【转ce123的技术博客】
  8. VLC音频重采样Audio resample核心流程梳理
  9. Travel(HDU 4284状压dp)
  10. 组态软件MCGS(昆仑通态)初识
  11. 微信二次开发html,基于mvc的微信二次开发c#源代码
  12. 失控的摄像头,谁是窥视者!
  13. Excel中的LEN和LENB,VBA中的Len和LenB
  14. 机器学习算法——集成学习1(个体与集成)
  15. 实战 —— 生存唯一随机数
  16. Elasticsearch的DSL搜索
  17. android 控制wifi模块,Android 控制wifi 相关操作实例
  18. ros 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。
  19. 算法:最长回文子串(js)
  20. 来自远方的“僵尸之手”

热门文章

  1. 投资银行理论与实务(二):证券的发行承销与交易
  2. Keil to STM32CubeIDE标准库移植
  3. CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)
  4. 亲爱的,60句感人歌词,有没有一句触动了你
  5. wlop一张多少钱_小白有个问题,为什么很多人都说 WLOP 的画不够好?
  6. 用DevExpress.Xpo 直接维护后台的 数据表,在这四列中录入的数据,即时插入或更新到关联的数据表中
  7. Vue中watch监听路由的使用场景
  8. 今天是我的生日,十年如一日
  9. WPF字体图标——FontAwesom
  10. CleanMyMac最新版V4.11.4版MAC电脑系统加速器