1.下载代码   https://github.com/raulmur/ORB_SLAM/    (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文)

2.打开后如下

就好像是用一件新产品一样,我们首先要看一下说明书“README.md”,

README.md介绍了很多关于这个工程的东西,比如作者,发表的论文,研究的人员,代码的下载以及更新

那么我们首先从有用的信息开始操作:(备注:以下内容都是我的个人理解,都是别人的东西,我拿来学习而已)

3.解决依赖项

3.1 Boost   :用这个Boost库在SLAM运行过程中开辟不同的线程

3.2 ROS:使用ROS采集摄像头或者记录下来的视频(rosbag)的图像信息,进行可视化

我的电脑安装的是indigo版本的所以安装教程是:wiki.ros.org/indigo/Installation/Ubuntu

安装完成运行  roscore 出现如下界面说明安装成功,同时也就可以学习ROS的基本教程了

wiki.ros.org/ROS/Tutorials

3.3 OpenCV 使用OpenCV去处理图像特征,ORB-SLAM的OpenCV版本是OpenCV 2.4,下载和安装OpenCV

http://opencv.org/  或者任意百度一下都有好多教程。

3.4 g20(第三方库) 这里用的是修改后的G2O版本,那么原始代码在 https://github.com/RainerKuemmerle/g2o ,G2O即是通用图优化,g2o是一个算法集的C++实现,根据前人求解非线性最小二乘的理论,根据具体的问题,选用最合适的算法,

为了能够编译G2O,需要安装一些东东是:BLAS, LAPACK and Eigen3,直接命令:

sudo apt-get install libblas-dev
                          sudo apt-get install liblapack-dev
                          sudo apt-get install libeigen3-dev

3.5 DBow2(第三方库)DBow2是一种高效的回环检测算法,DBOW2算法的全称为Bags of binary words for fast place recognition in image sequence,使用的特征检测算法为Fast,描述子使用的是brief描述子,是一种离线的方法。使用了DBow2和DLib库的一些算法,进行位置识别和特征匹配,不需要为它添加其他依赖项(代码地址: https://github.com/dorian3d/DBoW2)

4.安装

4.1  确认已经安装了ROS以及他的依赖项 (boost, eigen3, opencv, blas, lapack).

添加所下在的ORB-SLAM的路径到环境变量下,比如我的ORB-SLAM的路径为:

所以需要打开配置ubuntu环境变量的~/.bashrc文件,在文件最底处添加如图所示的命令行:然后source ~/.bashrc.

4.2 build g2o 安照说明一步一步来

前往 /home/salm/Monocular/ORB_SLAM/Thirdparty/g2o ;

依次命令为:     cd  ~/Monocular/ORB_SLAM/Thirdparty/g2o

mkdir build
                              cd build
                              cmake .. -DCMAKE_BUILD_TYPE=Release
                              make

g2o编译成功。

4.3 Buid DB0W2  与编译g2o时相似命令如下

cd ~/Monocular/ORB_SLAM/Thirdparty/DBoW2

mkdir build
                              cd build
                              cmake .. -DROS_BUILD_TYPE=Release
                              make

4.4 Build ORB-SLAM,这里有一个提示**If you use ROS Indigo, remove the depency of opencv2 in the manifest.xml.**

(按照理解就是把manifest.xml中的opencv2注释就好了呗),如下图:

然后就按照步骤来执行,

更改之后就可以进入编译:

cd  ~/Monocular/ORB_SLAM

mkdir build
                                  cd build
                                  cmake .. -DROS_BUILD_TYPE=Release
                                  make

但是在执行到cmake .. -DROS_BUILD_TYPE=Release发现会有错误,

然后就开始百度搜索答案呗,我也是这样想的,就会看到此博客  http://blog.csdn.net/wishchin/article/details/50468950

就会提示说路径设置有问题,然后我就各种设置,每设置一次就编译一次,只记得用了好长时间,都没有成功,过了一段时间

想想  我应该把这三个都注释掉就有

<!--<depend package="opencv2"/>
            <depend package="image_transport"/>
            <depend package="cv_bridge"/> -->

如下图然后执行cmake .. -DROS_BUILD_TYPE=Release这样虽然生成了Makefile,但是在接下来的make肯定会出错的,因为我们把所有关于opencv的依赖项都给注释了

所以就导致编译出错了(但是这里可以我也没找到什么原因,为什么我按照说明书,却行不通,我怀疑是我的opencv没有安装好,或者路径设置不对,但是这些都不管了,我知道我已经安装了opencv)

(注释了三个依赖项然后make 的结果如下图)

可能也会出现其他错误,提示找不到opnecv的库函数,或者说找不cv_bridge等函数

所以我就按照网上找各种方案的就结合我就只是把manifest.xml文件注释了OPENCV2,进去到ORB_SALM文件下:

执行:

后面是我手动添加的opencv的链接库,

cmake .. && make -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -lopencv_nonfree

如下图,

(也就是说在我的电脑上(ubuntu14.04 32位 ros_indigo)在camke 和make 都需要添加opencv 的链接库,编译成功了)

因为创建了两个工作空间导致我的程序又出错误了,之前运行

rosrun ORB_SLAM ORB_SLAM /home/salm/ORB_SLAM/Data/ORBvoc.txt /home/salm/ORB_SLAM/Data/Settings.yaml
 rosrun ORB_SLAM ORB_SLAM ~/ORB_SLAM/Data/ORBvoc.txt ~/ORB_SLAM/Data/Settings.yaml
都是可以运行的,不知道为啥又出现错误了

就是很不知怎么回事说我的路径有问题

后来我运行

rosrun ORB_SLAM ORB_SLAM /Data/ORBvoc.txt /Data/Settings.yaml
(不是绝对路径,而是在ORB_SLAM路径下的绝对路径)就可以运行了

以下是我在整理问题是所遇到的有关的网页

askubuntu.com/questions/510606/error-adding-symbols-dso-missing-from-command-line

blog.csdn.net/dreamer_lhs/article/details/51297432

www.voidcn.com/blog/wishchin/article/p-4970975.html

blog.csdn.net/real_myth/article/details/51798557

blog.csdn.net/dourenyin/article/details/48055441

运行ORB-SLAM笔记_编译篇(一)相关推荐

  1. python小海龟画粗细渐变的线_Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle)...

    Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle) turtle 是一个简单的绘图工具 提供一个小海龟, 可以把它理解为一个机器人, 只能听懂有限的命令, 且绘图窗口的原点 ...

  2. 运行ORB-SLAM笔记_使用篇(二)

    1. 编译完成之后就可以使用了,按照说明我们可以知道,首先开启roscore 再打开一个命令窗口使用命令:rosrun ORB_SLAM ORB_SLAM PATH_TO_VOCABULARY PAT ...

  3. Python笔记_第一篇_面向过程_第一部分_9.Ubuntu基础操作

    第一部分   Ubuntu简介 Ubuntu(乌班图)是一个机遇Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的"Ubuntu"一词,意思是 ...

  4. python神奇的小海龟_Python笔记_第一篇_面向过程_第一部分_8.画图工具(小海龟turtle)...

    turtle 是一个简单的绘图工具. 提供一个小海龟,可以把它理解为一个机器人,只能听懂有限的命令,且绘图窗口的原点(0,0)在中间,默认海龟的方向是右侧 海龟的命令包括三类:运动命令.笔画控制命令. ...

  5. 嵩天python笔记_第一篇python笔记

    缩进: 它属于语法的一部分 体现代码之间的层次和所属关系,也是唯一的表示形式 一般用四个空格 注释: 单行注释:以 # 开头,其后内容为注释 多行注释:以=='''== (三个单引号),开头和结尾 中 ...

  6. Python笔记_第二篇_面向过程_第二部分_4.常用模块的简单使用_操作系统模块(os)和队列模块(collections)...

    1. 用递归函数遍历目录: import osdef getAllDir(path,sp=" "):# 得到当前目录下所有的文件filesList = os.listdir(pat ...

  7. Python笔记_第一篇_面向过程_第一部分_0.开场白

    *什么是Python? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido(吉多) van Rossum于1989年发明,第一个公开版本发行于1991年.在国外应用非常的广泛,国 ...

  8. Python笔记_第一篇_童子功_0.开场白

    *什么是Python? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido(吉多) van Rossum于1989年发明,第一个公开版本发行于1991年.在国外应用非常的广泛,国 ...

  9. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

最新文章

  1. 自然语言处理NLP-100例 | 第三篇:骚扰短信识别 MultinomialNB实现(内附源码)
  2. InvalidateRect()、UpdateWindow()、RedrawWindow()区别
  3. DOS命令大全(一)
  4. java数据结构博客园_Java数据结构
  5. element UI 制作带快捷选项的时间选择器
  6. 腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?
  7. 《Java高级程序设计》期末作业【2】-进度安排
  8. 聊聊RPC之Provider
  9. 万万没想到!ModelArts与AppCube组CP了
  10. 模拟电子技术不挂科学习笔记1(半导体基础、二极管)
  11. mysql xp系统时间_【MySQL】时间函数
  12. IPTV码流分析指标
  13. SpringBoot Logback配置,SpringBoot日志配置
  14. 计算机截图方法,电脑7种快速截图方法,很多人都不知道!
  15. QUT期末考试《电子商务概论》思维导图
  16. linux里画pcb软件有哪些,Linux系统用什么软件画pcb啊
  17. 常用的eclipse插件下载地址
  18. 帆软报表参数传给网络报表_报表开发工具FineReport的使用: 程序网络报表
  19. Arduino应用开发——通过小爱同学控制灯光
  20. python爬虫之爬取“唯美“主流图片

热门文章

  1. pycharm+PyQt5+python最新开发环境配置,踩坑过程详解
  2. Django框架之第二篇
  3. Ubuntu 划词翻译
  4. 计算机软件属于输入还是输出,计算机基本输入输出系统是什么意思(基本输入输出系统简介)...
  5. gdoi2017总结
  6. 实测 Mysql UUID 性能(转)
  7. C++排序算法实现(更新中)
  8. usaco Network of Schools
  9. 荣耀30pro系统_荣耀30 pro:正式再见!
  10. python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法