Ubuntu14.04下运行PTAM(Parallel Tracking And Mapping)

来源:互联网 发布:知乎 许嵩 李荣浩 编辑:程序博客网 时间:2024/06/16 18:22

1 环境搭建

配置:ubuntu14.04.

1.1 前期准备

First. 更新软件源

sudo apt-get update(更新软件列表)

sudo apt-get upgrade(更新已安装的软件)

Second. 安装build工具

sudo apt-get install build-essential cmake pkg-config

Third. 安装C++库

sudo apt-get install libboost-dev libboost-doc

Fourth. 安装图像IO和摄像机驱动

sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libv4l-dev

Fifth. 安装视频IO,编解码和视频显示库

sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libavdevice-dev libsdl-dev

sudo apt-get install libgtk2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

Sixth. 安装OpenGL(Open Graphics Library)

sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

1.2 安装OpenCV(Open Source Computer Vision Library)

First. 卸载任何以前安装的ffmpeg和x264软件。Ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

sudo mkdir Opencv

cd Opencv

sudo apt-get -qq remove ffmpeg x264 libx264-dev

Second. 安装依赖文件

sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

Third. 安装ffmpeg

sudo add-apt-repository ppa:mc3man/trusty-media

sudo apt-get update

sudo apt-get install ffmpeg gstreamer0.10-ffmpeg

Fourth. 下载和解压提取OpenCV

sudo wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip

unzip OpenCV-2.4.9.zip

cd opencv-2.4.9

Fifth. 开始编译安装

mkdir build

cd build

如果安装了cuda,运行包含以下参数的cmake命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

如果没有安装cuda,添加参数-D WITH_CUDA=OFF

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_CUDA=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

Sixth. 重启,运行OpenCV的测试程序

cd OpenCV/samples/c

sudo ./build_all.sh

./facedetect "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" lena.jpg

运行结果如下:

 Ubuntu14.04下运行PTAM代码


用sudo gedit /etc/ld.so.conf打开文件,在其中添加以下lib目录:

include /home/weixinyu/LearnAndWork/gaoyanyuan/Opencv/opencv-2.4.9/build/lib

ld.so.conf记录了编译时使用的动态链接库的路径,把opencv库的路径添加到ld.so.conf,这样以后程序在运行时如果需要调用opencv的库,系统会自己找到而不用手动指定。

Ps.一般在更改ld.so.conf文件后需要运行ldconfig命令,此命令把所有的库文件都被缓存到ld.so.cache中,如果不运行这个命令,即使写入了ld.so.conf,系统也可能找不到相关库)

附参考链接:

http://sysads.co.uk/2014/05/install-opencv-2-4-9-ubuntu-14-04-13-10/ 

http://www.linuxidc.com/Linux/2014-12/110045.htm 

1.3 安装 TooN && libCVD && Gvars3

TooN:与线性代数有关的头文件库。

libCVD:一个与图像处理、视频获取和计算机视觉有关的库。

Gvars3:一个libCVD的子项目。

libCVD是需要TooN库的,所以安装顺序为TooN->libCVD->Gvars3

由于TooN 、libCVD、Gvars3和PTAM源码的版本兼容问题,推荐采用以下的版本搭配:TooN 、libCVD、Gvars3:在https://github.com/slowlythinking/PTAM 中获得(其中也包含PTAM的源码,但是存在问题);

PTAM:在其官网http://www.robots.ox.ac.uk/~gk/PTAM/download.html中获得。

First. 安装TooN

make clean

./configure

sudo make install

Second. 安装libcvd

make clean

export CXXFLAGS=-D_REENTRANT

./configure --without-ffmpeg

make

sudo make install

Third. 安装gvars3

make clean

./configure --disable-widgets

make

sudo make install

Fourth. 运行ldconfig让动态链接库为系统所共享

cd ..

sudo ldconfig

2 安装PTAM

2.1 获取源码

将PTAM/Build/Linux所有文件拷到 PTAM目录下。

附源码链接:http://www.robots.ox.ac.uk/~gk/PTAM/download.html 

2.2 更改makefile和Tracker.cc文件

在makefile文件中更改COMPILEFLAGS、LINKFLAGS和VIDEOSOURCE如下:

COMPILEFLAGS = -I /usr/include -I /usr/local/include -D_LINUX -D_REENTRANT -Wall -O3 -march=nocona -msse3

LINKFLAGS = -L /usr/local/lib -lGVars3 -lcvd -lopencv_legacy -lopencv_core -lopencv_video -lopencv_highgui -lGLU -lGL -llapack -lblas -lgfortran

# Edit this line to change video source

VIDEOSOURCE = VideoSource_Linux_V4L.o

在Tracker.cc的头文件中添加:

#include<unistd.h>

2.3 编译运行

编译:在PTAM所在的目录中直接运行make命令,运行成功后会得到两个可执行文件CameraCalibrator和PTAM(这两个可执行文件依然在PTAM目录中)。

运行make时,我还遇到如下问题:


经过在网上查找资料及自己分析原因后,发现是libgfortran.so没有链接好。通过搜索可以查找到在/usr/lib/x86_64-linux-gnu中libgfortran.so.3,通过cd命令进入该目录,并运行:

sudo ln -s libgfortran.so.3 libgfortran.so

将其进行链接,运行过程如下图所示:


然后运行make进行编译。

编译好PTAM源代码之后进入PTAM目录,运行

./CameraCalibrator,进行相机标定:

使用下图右上角的CapFrame取帧,至少取不同角度的4帧以上,取帧结束以后,按下Optimize,计算相机本质矩阵(焦距等相机参数)。

Ubuntu14.04下运行PTAM代码

CameraCalibrator运行完毕之后运行./PTAM,开始运行时由于需要初始化地图,需要用户选取两帧作为初始化的数据输入,具体操作步骤为按下空格键,程序会计算出这一帧的FAST角点显示在图像上,然后做轻微平移,再次按下空格键,初始化完毕。界面右上方有Draw AR off和View Map on,作用分别是把虚拟物品(此处为四只眼睛)显示到平面上和显示软件所建地图信息。以下为运行截图(由于实验时相机问题,标定和识别结果不够精确,所以四只眼睛并未准确显示到相应平面):

 Ubuntu14.04下运行PTAM代码


Ubuntu14.04下运行PTAM代码 

3 安装经验

如果之前安装的TooN、libcvd、gvars3有问题,因为三个包的makefile文件中均无uninstall命令,可做如下清理(注意:删除之前请查看以下两个文件夹中的文件的名字及生成时间以免误删):

在/usr/local/lib中执行:

sudo rm lib*

sudo rm -R pkg*

在/usr/local/include中执行

sudo rm -R *

如果安装PTAM时出错,出错信息可能被缓冲掉很多,可用script -f screen.log和exit输出make时的所有信息以查看错误信息。


原创粉丝点击