ORB-SLAM2编译遇到的一些问题
来源:互联网 发布:超高温灭菌牛奶 知乎 编辑:程序博客网 时间:2024/06/05 02:52
最近开始接触SLAM的东西,在初步做了一些了解之后,接触到了ORB-SLAM,知乎上有关于这个的讨论:orb-slam在众多SLAM方法中处于怎样的地位?。
ORB SLAM项目主页:http://webdiis.unizar.es/~raulmur/orbslam/
现在已经有ORB SLAM2了,鉴于它提供双目的接口,就打算去试试。
我的系统ubuntu 14.04 LTS。
源码地址:https://github.com/raulmur/ORB_SLAM2
这个库的编译主要的依赖:OpenCV,Eigen3,g2o,DBoW2,另外还有一个UI库Pangolin。其中g2o和DBoW2在它的Thirdparty文件夹中就有,作者还写了一个脚本build.sh,依赖库准备好后只需要到的目录下,然后运行这个即可:
cd path
chmod +x build.sh
./build.sh
而且ORB-SLAM2并不需要依赖ROS,编译还是很方便的。但是我在编译Pangolin的时候遇到了很多问题,这里记录一下。
Pangolin源码:https://github.com/stevenlovegrove/Pangolin
终端进入目录,执行:
cd path
mkdir build
cd build
cmake ..
make
然后在make的时候就出现了:
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
网上查了很多,给的解决方法都是这些:
找到configure 文件,在类似这个位置修改echo make CC=$GCCPATCH/bin/gcc -fPIC
.
(1)在makefile文件里的CFLAGS里加上 -fPIC选项,这样可以一劳永逸
(2)如果你的makefile很大,CFLAGS也不明确,那就在配置时手动加上:CFLAGS=”-fPIC” ./configure …………..如果这样还不行,你需要试一下sudo:$sudo CFLAGS=”-fPIC” ./configure …………..
.
在configure的时候加上 –enable-shared和–enable-pic这两个选项
下面这个没怎么看懂,也不知道该怎么尝试,不过挺有趣的
Linux共享对象之编译参数fPIC
但是Pangolin源码没有Configure文件,无从修改,然后我对MakeFile也不了解,改了半天只是越改越糟糕。之后在Stackoverflow看到了这个:http://stackoverflow.com/questions/25539034/opencv-make-fails-recompile-with-fpic,因为之前倒腾FFmpeg的时候弄得很乱,所以很有可能就是FFmpeg的问题。
重下了FFmpeg:http://ffmpeg.org/download.html#releases
用下面的方法重新编译了FFmpeg,就没有上面的问题了,然后ORB-SLAM2的编译就很顺利了。
./configure –enable-nonfree –enable-pic –enable-shared
make
make install
这里提一下一个问题,FFmpeg别装3.0.2的,因为API都变更了,编译的时候会找不到。
这里有一些别人整理出来的变更记录:http://blog.csdn.net/leixiaohua1020/article/details/41013567
由于双目测试数据集还没有,等之后熟悉一些我再写点关于这个库的理解。
- ORB-SLAM2编译遇到的一些问题
- ORB-SLAM2编译过程中遇到libavcodec.a问题解决
- ubuntu 14.04调试ORB-SLAM2 编译时死机的解决方案
- ORB-SLAM2
- ORB-SLAM2
- ORB-SLAM2运行自己的数据集
- ORB-SLAM2的LOCAL MAPPING代码阅读
- ORB-SLAM2的ORBMATCHER代码阅读
- ORB-SLAM2运行自己的数据集
- 编译ORB-SLAM2提示:undefined reference to symbol '_ZN2cv6String10deallocateEv'
- Ubuntu下Kintinuous+ElasticFusion+ORB-Slam2配置中的问题记录
- Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题
- ORB-SLAM2实现
- ORB-SLAM2源码详解
- ORB-SLAM2安装
- orb-slam2+win10+vs2015
- ORB-SLAM2 学习1
- 跑通ORB SLAM2
- startActivityForResult和setResult详解
- 分布式实战--zookeeper
- 那些折腾了自己很久,一下子却又能解决的问题
- 网络编程模型及网络编程三要素
- 【SSH】Dispatcher initialization failed && Exception startingfilter struts2
- ORB-SLAM2编译遇到的一些问题
- 现在开始学程序还不晚吧
- ACM-2012 素数判定
- InetAddress类的使用
- 【CS231n Winter 2016 Lecture 1 (Brief history&course overview)】
- static和const的作用
- 为一个java项目生成文档by eclipse
- 6.关联容器
- 网络端口、协议、Socket