Bootstrap

Manifold2 配置Elasticfusion + Pangolin

(总结:因为刚开始接触arm架构的ubuntu,总感觉会不会是系统问题,几次都想放弃。不过要坚定一个信念:已经有人成功配置了,所以所有遇到的问题都是可以解决的!!)

因为想测试实时重建算法在无人机机载PC上的效果如何,因此在大疆妙算2(Manifold2G)上配置ElasticFusion环境。

系统Ubuntu16.04 ARMv8 + NVIDIA TX2

1)Pangolin0.6安装(安装新版本后面ElasticFusion会报错)

首先肯定要安装好Pangolin。但是装软件时一直报错,显示Cannot locate package xxxx.于是换软件源。经测试中科大的软件源可用。注意是:/ubuntu-ports/结尾

然后在cmake的过程中一直提示找不到glew……一度让我怀疑只能支持GLES,还要改源码之类的。但其实不用,只要安装好libglew-dev就行。之前一直提示Cannot locate package,我也怀疑因为x86和arm的不同无法安装。实际上执行一下下面的就行

sudo add-apt-repository universe
sudo add-apt-repository main
sudo apt-get update

(很多时候apt安装提示没有定位包时,用上面的就可以搞定,我也不懂为什么要执行多次)

然后make时会提示#include<any>:fatal error: any: no such file or directory.将gcc版本由5.5换成7,解决。

之后xdg-shell-client错误,解决方案:skip wayland if wayland-protocols version is not sufficient by christian-rauch · Pull Request #715 · stevenlovegrove/Pangolin · GitHubOn older Ubuntu versions (16.04) wayland-protocols is missing wayland-protocols. This will attempt the Wayland build but fail. Check for the version and skip wayland insufficient. Fixes #714.https://github.com/stevenlovegrove/Pangolin/pull/715/files最后终于完成……哭泣

2)OpenNI2安装

参照arm版本的安装,需要修改一些配置文件,有大佬修改好的:

JianxiangFENG/OpenNI2-jetson-tx2 - gitmemoryModified configs to enable OpenNI2 to be compiled on Nvidia Jetson-tx2https://gitmemory.cn/repo/JianxiangFENG/OpenNI2-jetson-tx2但是还是有些问题,我就直接下面一个命令搞定:

sudo apt-get install libopenni2-dev

3)ElasticFusion安装

将所有的依赖项都装完事了,但cmake时还是会提示找不到SuiteSparse……解决方案:

Cmake core on JetsonTX2 Unable to find SuiteSparse · Issue #154 · mp3guy/ElasticFusion · GitHubhttps://hub.fastgit.org/mp3guy/ElasticFusion/issues/154提示unrecognized command line option "-msse2",解决方案:删除cmakelist的-msse2 -msse3

如果遇到Pangolin提示没有头文件的错误,果断换成稳定的版本(我换成0.6)就好了。

4)其他问题

历经艰辛终于完成后,运行时报错Error: invalid texture reference: /home/ElasticFusion/Core/src/Cuda/convenience.cuh:68,这个问题说明cuda的编译有些问题。参考:Error: invalid texture reference: /home/nvidia/ElasticFusion/Core/src/Cuda/convenience.cuh:68解决办法_榕树下的约定的博客-CSDN博客最近在用TX2编译Elasticfusion,历经艰难。。。最终完成之时运行./Elastic -l .klg 时却出现了这样的错误Error: invalid texture reference: /home/nvidia/ElasticFusion/Core/src/Cuda/convenience.cuh:68然后想这样该和cuda的编译有关,仔细查看core/cmakelis...https://blog.csdn.net/qq_27057925/article/details/105418594

但是之后会显示Unknown Error: /home/ElasticFusion/Core/src/Cuda/convenience.cuh:68.这个问题也是困扰了我好几个小时。差点以为cuda装的有问题要去重装了(那就走远了)。后来发现Manifold2装的是CUDA9.0,运行了下./deviceQuery,发现CUDA Capability Major/Minor version number是6.2,因此将上面的位置修改为6.2解决。

终于可以运行ElasticFusion(大概每秒3帧?)撒花

;