Ubuntu 测试ElasticFusion 和Kintinuous

工作的过程一定要有记录,不然很快就会忘记。

本文主要记录我在测试ElasticFusion和Kintinuous时遇到的一些问题,感谢网络上同行们留下的记录和踩坑,基本都是参考大家的安装过程一步步走过来的。

软硬件配置

CPU:Intel® Core™ i7-7700 CPU @ 3.60GHz × 8 

内存:16G

GPU:GeForce GTX 1050Ti 

系统版本:Ubuntu16.04 LTS 64位

显卡驱动:NVIDIA-Linux-x86_64-396.18

CUDA版本: cuda 9.1

在电脑上跑ELasticFusion或者Kintinuous都是需要英伟达显卡驱动和CUDA环境的,所以装驱动和CUDA应该是第一步。

深度传感器:奥比中光(至于为啥不用Kinect,,,公司正好有个奥比中光,而节省的老大就说就用这个吧,,,)

环境配置

本文不强调安装NVIDIA显卡驱动和CUDA环境配置的过程,不过的确给我带来了很多的麻烦,实际上花了2个工作日的时间,中途电脑多次打不开,循环登录,lightgdm崩溃之类的问题,但保持好的心态和坚定解决问题的决心很重要。如果你在这里就放弃了,那很多时候都走不下去。

安装NVIDIA驱动有多种方式:

一种是添加源,通过apt添加源的形式安装(就是sudo add-apt-respository ...,然后update后再利用apt-get install形式安装对应显卡);

第二种是打开电脑里的software&update中的additional drivers,选择相应的版本进行安装;

第三种是通过在NVIDIA官网上下载对应的显卡驱动的.run文件,然后进入tty1模式,关闭lightgdm(如果你的桌面是lightgdm驱动的话),安装NVIDIA。

三种方法我都尝试了,并且都失败了,但最后还是给我搞好了。总结一下主要失败的点。首先,第一种在添加了多个失败的源之后(因为网络上很多源都失效了),成功apt-install一个驱动,但是重启后进入循环登录界面,于是进入tty1模式下sudo remove nvidia-*(这个命令可能不准确,如果需要卸载显卡驱动请百度一下具体的命令),之后可以进入桌面。尝试第二种方法,进入additional drivers中选择其他NVIDIA版本安装,其实在这里有些问题,我最后也是通过这种方式安装成功了,但是前几次的时候都失败了,最开始的时候发现没有NVIDIA版本的驱动,只有一个Xserver....,我可去你的吧;后面通过.run文件安装了几次不同版本的驱动,结果在这个第三方驱动里就出现了我之前安装的所有版本。

第三种方法,通过.run文件安装,遇到一个叫做CC版本冲突的问题,我在网络上看到别人说这个是linux内核更新不支持NVIDIA驱动,所以两种方案呗,降低内核版本,或者换新的NVIDIA驱动版本。在这个地方折腾了好久,换的驱动版本有390.42,396.18,还有个384啥的,但是都有这个CC版本冲突,要不就是其他问题。内核版本因为之前就换过,所以这次又是换,但因为/boot空间当时只有200M,(所以,,,哎,我说着说着都有种想哭的感觉,,,都是坑,,,),所以需要删除/boot空间下的旧版本驱动和对应文件,更新后应该就是新的内核了,但是这里有个问题,我在换成老版本的内核后发现电脑不能上网,以为电脑崩了其实就是不能换成旧的内核,所以又换回来了。然后.run文件安装的都没通过,这时又回到第二种方法,看见additional drivers那里多了很多驱动版本。具体就像下图,但是当时不是396.18,是manually drivers,单词可能不太对,但意思就是通过手动安装的驱动,我以为这样就正确了,但是NVIDIA-setting里还是不对了,显示的驱动还是一堆第三方驱动的名字,而且在这个页面下还不能选择其他驱动。then,在安装CUDA失败后,我在tty模式下卸载了驱动,回到这个页面不抱希望地安装了一次,居然成功了,,,也没有进入循环登录界面,而且NVIDIA-setting里面显示的也是GTX1050这种很正统的版本,开心的不得了。(其实这里我是没有具体搞清楚的,还有个问题就是安装CUDA时会提示你要不要安装显卡驱动,我当时也是安装和没安装都尝试了)还有些问题需要注意,一是在用.run文件安装的时候需要加上-no-opengl-files这一选项;安装CUDA时也要注意opengl那一项要配置为no,或者这之类的。



接下来就是正式的三维重建的例子运行啦!

ElasticFusion测试

按照github的软件配置来一个个git下来,cmake .. ,make ,但是git下来的ElasticFusion有3个文件夹,Core ,GTUTest和GUI,Core里是系统的主要部分,GPUTest是测试机器GPU能不能用的,GUI是系统的输入输出,我主要是按照

https://blog.csdn.net/shan19930117/article/details/79491052参考来进行配置的,有个点可能这篇博客里没有提到,因为深度传感器不同,我用的是奥比中光的深度camera,需要在编译GUI文件夹时在build目录下执行

ccmake ../src/

然后按下t,找到OpenNII library进行修改,改成安装奥比中光是OpenNI的位置,如下图(说明一下,这个截图是Kintinuous里面的,但ElasticFusion也是类似的)


这样./ElasticFusion的时候才能驱动深度camera,同理对kintinuous也是如此,因为我在测试kintinuous时隔了一周,所以这个问题纠结了我一天没找到问题所在,发现之后真的觉得工作记录实在太重要了。运行时还遇到其他问题,多看看github里的issues,很多问题别人都有解答和参考方案的。

ElasticFusion的运行结果如下,旁边有很多按钮,可以保存.ply重建结果,还有RGB显示模式的。我因为在台式机上测试的(操蛋,公司配的电脑没有GPU,真是,,,),所以场景只有桌面,但其实效果给我感觉不是那么好,刚走过的场景很快就有了重影。


Kintinuous测试

安装过程主要参照https://blog.csdn.net/u011988573/article/details/57410019,这里好像要求OpenCV是2.4.13的,我安装了OpengCV2.4.13,但我的系统是Ubuntu16.04,安装ROS不可避免地就安装了OpenCV3的版本,,所以在前面编译DLib,DLOOP这些库的时候需要在CMakeLists.txt文件里指定一下opencv的版本,嗯,,,其实这是个很严重的问题,但是我在这边直接通过指定

find_package(OpenCV 2.4.13 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 2.4.3 not found.")

   endif()

就解决了OpenCV版本的问题。

我记得之前是测试ORBSLAM还是SVO什么的时候,遇到ROS下OpenCV版本和2.4.13冲突的,当时通过修改各种cvbridge,set opencv的路径都不对。而这里就直接加个2.4.13就OK了。说明当时说不定不是那个版本冲突的问题,当然这些都是题外话了。

安装配置好环境后,记得ccmake ../src下修改一下openNI2 library的路径,然后./Kintinuous就可以运行了。


之前看理论时,说什么TSDF模型和Surfel模型不同不同啥的,只能凭主观去理解,这要看到实际显示就知道有啥区别了,所以,,真的要好好努力啊!


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值