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

最新文章

  1. 阿里开源消息中间件RocketMQ的前世今生-转自阿里中间件
  2. 浅析.NET泛型
  3. win PPTP场景与搭建
  4. fetchField 和 fetchColumn
  5. PHP面向对象之将数据库的查询结果序列化成json格式
  6. linux+asp.net core+nginx四层负载均衡
  7. EffectiveTensorflow:Tensorflow 教程和最佳实践
  8. iOS开发之三:常用控件--UILabel的使用
  9. Myeclipse10.7添加本地插件方法
  10. 通过VuePress管理项目文档(一)
  11. python--爬取豆瓣热门国产电视剧保存为文件
  12. R语言-优化作图
  13. tf.matmul函数和tf.multiply函数
  14. idea 打包java程序
  15. python 两个队列进行对比
  16. JS中的this机制
  17. 基于LNMP的小米电子商务网站平台
  18. Hbase(二)hbase建表
  19. 长沙Uber优步司机奖励政策(12月28日到1月3日)
  20. 【Educational Codeforces Round20】

热门文章

  1. Event对象的事件句柄
  2. 关于grub的那些事(三)
  3. MongoDB学习(翻译3)
  4. Android Chronometer控件使用,计时器
  5. Sublime Text快捷键:
  6. 改ext界面
  7. Android Device Chooser中显示Target unknown解决方法
  8. DataOutputStream的writeBytes(String s)
  9. sqlplus中显示sql执行计划和统计信息
  10. java编程思想笔记(一)——面向对象导论