semantic fusion中的Elastic Fusion 配置记录 Ubuntu16.04

这篇是关于elasticfusion的编译说明,caffe的编译以及最终semanticfusion编译见下一篇博客:semantic fusion中的caffe 配置记录 Ubuntu16.04

环境说明:

ubuntu 16.04

CUDA 版本:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

Nvidia驱动版本:

| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1  

这里直接用命令行安装的驱动:

 sudo apt remove --purge nvidia*
 sudo apt install nvidia-418 nvidia-prime nvidia-settings

nvidia-prime很重要,因为后面需要用到独立显卡跑代码

注意cuda 和nvidia驱动有约束关系:
在这里插入图片描述然后编译顺序什么的就很重要了

首先安装依赖:

sudo apt-get install -y cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev openjdk-8-jdk freeglut3-dev libglew-dev libsuitesparse-dev libeigen3-dev zlib1g-dev libjpeg-dev libpng12-dev

注意原github上面说的是openjdk-8-jdk,可是apt下载不到7了,还删除了命令行里面的cuda,因为已经装好了。

开始编译:

由于最终目标是semanticfusion,所以直接下载semanticfusion的代码:

git clone --recursive https://bitbucket.org/dysonroboticslab/semanticfusion

代码很大。。。所以我等了好久。。
进入路径 semanticfusion/elasticfusionpublic/
编译很容易出问题,所以我们严格按照该路径下的build.sh的编译顺序:


#Installing Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON
make -j8
cd ../..

#Up to date OpenNI2
git clone https://github.com/occipital/OpenNI2.git
cd OpenNI2
make -j8
cd ..

#Actually build ElasticFusion
cd ../Core
mkdir build
cd build
cmake ../src
make -j8
cd ../../GPUTest
mkdir build
cd build
cmake ../src
make -j8
cd ../../GUI
mkdir build
cd build
cmake ../src
make -j8

make出现报错error: ‘glDrawFrustrum’ is not a member of ‘pangolin’
针对这个问题在Pangolin/include/pangolin/gl目录下的gldraw.h中发现没有glDrawFrustrum而是glDrawFrustum,所以将报错位置semanticfusion/elasticfusionpublic/GUI/src/Tools/GUI.h中的glDrawFrustrum改为glDrawFrustum(作者代码为什么会copy错不得而知。。。)

测试运行

  1. 下载测试数据:
    测试数据集
  2. 命令行运行:
cd semanticfusion/elasticfusionpublic/GUI/build
./ElasticFusion -l dyson_lab.klg

如果出现图形化界面说明编译成功!

过程中出现的问题:

GLSL 3.30 is not supported. Supported versions are 1.10, 1.20, 1.30, 1.00 ES and 3.00 ES

出现上述问题的原因是代码找不到独显,在intel核显上跑就会这样,所以之前需要下载nvidia-prime来控制是否使用独立显卡。
当然,驱动版本太高了(430)了系统也找不到显卡,所以会抱这个错,删除原来的驱动然后命令行安装418版本的就可以了

Your GPU "GeForce GTX 950M" isn't in the ICP Step performance database, please add it
Your GPU "GeForce GTX 950M" isn't in the RGB Step performance database, please add it
Your GPU "GeForce GTX 950M" isn't in the RGB Res performance database, please add it
Your GPU "GeForce GTX 950M" isn't in the SO3 Step performance database, please add it

这个原因是代码没有对我的显卡(GTX950M)做适配,需要手动将参数写到代码里面。代码文件去获取显卡参数的方法是运行GPUtest,具体参考:
点击这里

cd semanticfusion/elasticfusionpublic/GPUTest/build
./GPUtest ../

但是在运行GPUtest时我这里报错:

terminate called after throwing an instance of 'std::runtime_error'
  what():  Rebuild Pangolin for PNG support.
Aborted (core dumped)

网上能搜到的解决的方法很少,可以参考这个方法

更新:

可以运行了,显卡配置是1080Ti,对应的参数是:

icpStepMap["GeForce GTX 1080 Ti"] = std::pair<int, int>(384, 48);
rgbStepMap["GeForce GTX 1080 Ti"] = std::pair<int, int>(96, 160);
rgbResMap["GeForce GTX 1080 Ti"] = std::pair<int, int>(512, 432);
so3StepMap["GeForce GTX 1080 Ti"] = std::pair<int, int>(256, 48);

关于caffe的配置以及semanticfusion的编译,见下一篇博客:semantic fusion中的caffe 配置记录 Ubuntu16.04

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值