前言
以下根据ORB_SLAM2 的安装步骤完成安装。
昨天在 ubuntu16.04 orbslam 安装笔记 安装了orbslam,今天在此基础上安装orbslam2.
不过安装的时候出了问题,所以最后是重装了ubuntu,然后才编译成功的。
安装步骤
按照 官方教程,一步步来吧
安装 Pangolin
按照 Pangolin 的指示
OpenGL
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
glew
sudo apt-get install libglew-dev
然后正式build
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
获取ORB_SLAM2源代码 并 正式编译
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
然后使用脚本 build.sh
to build the Thirdparty libraries and ORB-SLAM2:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
以下为编译链接时的错误处理方法
编译时的错误1:虚拟内存不够
build的时候可能会提示virtual memory exhausted: Cannot allocate memory
,我以为内存太小,增加了内存,还是不行,搜索发现是没有给swap空间,怎么建立swap呢?
切换到根目录
cd /
建立一个相应大小的空文件(这里count=1000
就是1G啦):
sudo dd if=/dev/zero of=swapfile bs=1M count=1000
然后把该文件变成swap file:
sudo mkswap swapfile
开启swap file:
sudo swapon swapfile
编译时的错误2: link的错误, TIFF 无法link
link的时候会出现这种类型错误:
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1: undefined reference to TIFFReadRGBAStrip@LIBTIFF_4.0
马后炮一下,我猜测这个问题的根源在于我装了ubuntu之后先装了anaconda,然后装的opencv以及ros(明显ros中的opencv是ros自带的啦),而anaconda自带了libtiff等库,但不知道为啥又用不了,很郁闷。
上面的出错信息表示它找的是我的ros中的opencv,我把cmakelist.txt中的opencv requied设为我安装的opencv版本数字时出错信息就变成非ros自带的opencv的了,还是 TIFF相关。
其实这就表明俺的opencv有问题!不过重装opencv还是不行!
当我按照别人的说法将conda的tiff去掉:conda uninstall libtiff
发现还是不行,这里让我用sudo make
也不行。
坚决不要先装 anaconda 再装 opencv,不能这么搞!
我重装了ubuntu,不装anaconda,直接用系统自带的Python,就成功啦!