配置环境:ubuntu12.04+QT4.8
一:确保openni,opencv,g2o和pcl库已经安装好。
openni: openni是kinect的库,我的设备主要是华硕的xtion pro live,所以安装的是openni1的库,尽管现在出来了openni2。要驱动这个摄像头,主要安装一个驱动外加两个ni和nite库。具体的安装方式参考:http://blog.csdn.net/jasmine_shine/article/details/46235911。
opencv: opencv是计算机视觉最平常的一个库,安装方式不多说,我安装的是opencv2.4.9,据说这个库是我们经常用的。
g2o: g2o是图优化的一个库,主要用于解决slam问题。在github里下载g2o进行编译,下载网址:https://github.com/RainerKuemmerle/g2o。首先要安装g2o的依赖库,g2o依赖库有csparse,eigen库,csparse主要用于稀疏矩阵的求解,eigen主要用于线性代数的求解。具体的讲解可以参考半闲居士的文章:http://www.cnblogs.com/gaoxiang12/p/4739934.html。
安装依赖项:
sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-qt4-dev
安装g2o:
进入g2o的目录:
mkdir build
cd build
cmake ..
make
sudo make install
pcl: pcl是一个点云库,用于显示三维信息。在ubuntu下安装pcl似乎很简单,apt-get安装如下:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
二:新建一个QT的空工程,会生成工程文件,其中包括.pro文件。注意,各种库的配置就是在.pro文件中执行的。
确保安装了QT的编译环境,我安装的是QT4.8版本,在ubuntu软件中心即可安装。
openni,opencv,g2o和pcl库的配置如下:
SOURCES += \
main.cpp
######c++11######
QMAKE_CXXFLAGS += -std=c++11
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2 \
######openni######
/usr/include/ni \
/usr/include/nite \
###### g2o ########
/usr/local/include/g2o \
######eigen3#####
/usr/include/eigen3 \
######sparse#####
/usr/include/suitesparse \
###### pcl ########
/usr/include/pcl-1.7 \
/usr/include/pcl-1.7/pcl \
/usr/include/pcl-1.7/pcl/common \
/usr/include/pcl-1.7/pcl/io \
###### boost ######
/usr/local/include/boost \
# /usr/local/include/EXTERNAL/csparse \
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/lib/libXnVNite_1_5_2.so \
/usr/lib/libOpenNI.so \
######g2o###########
/usr/local/lib/libg2o_cli.so \
/usr/local/lib/libg2o_core.so \
/usr/local/lib/libg2o_stuff.so \
/usr/local/lib/libg2o_types_slam2d.so \
/usr/local/lib/libg2o_types_slam3d.so \
/usr/local/lib/libg2o_solver_cholmod.so \
/usr/local/lib/libg2o_solver_csparse.so \
/usr/local/lib/libg2o_csparse_extension.so \
#######csparce#######
/usr/lib/libcxsparse.so \
#######boost######
# /usr/local/lib/libboost_filesystem.so \
/usr/local/lib/libboost_system.so \
#######pcl#####
/usr/lib/libpcl_common.so.1.7 \
/usr/lib/libpcl_io.so.1.7 \
/usr/lib/libpcl_io_ply.so.1.7 \
需要注意的是,在书写过程中,.pro文件是不能空行的,否则会出现类似sparse error:usr/local/*这种错误。另外,g2o依赖的库有csparse和eigen库,所以也要把这两个库添加进来,否则g2o也同样找不到库,导致编译不通过。而且pcl库依赖boost的system库,一定要添加这个库,否则编译过程中就会提示:找不到类似generic_system的这种错误。
重点内容
前天添加了这些所有include和lib,程序能正常编译,隔天就不能编译了,出现了一系列错误,好多好多,有几千个。然后将pcl的相关先注释掉,一步步排查是什么原因。结果发现openni和pcl似乎有冲突一样,只能先编译openni,然后试图将pcl的注释去掉,再一步步编译,又恢复了正常。
三.测试
测试的程序主要参照半闲居士的一起做一系列的程序,经测试可用。