源代码: https://github.com/puzzlepaint/surfelmeshing
数据集: https://vision.in.tum.de/data/datasets/rgbd-dataset/download
参考教程: https://www.cnblogs.com/Ker-win/p/14864883.html
要求CUDA (8, 10.1)
查看版本:nvcc -V
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
但编译的时候遇到问题,说找不到cuda,看CMakeError.log如下
The CUDA compiler
“/usr/local/cuda-8.0/bin/nvcc”
is not able to compile a simple test program.
于是找了测试CUDA的samples
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery sudo make sudo ./deviceQuery
输出如下,发现driver version是11.4的,runtime version是8.0的
Detected 1 CUDA Capable device(s)
Device 0: “NVIDIA GeForce MX350”
CUDA Driver Version / Runtime Version 11.4 / 8.0
CUDA Capability Major/Minor version number: 6.1
通过nvidia-smi命令看版本,也是11.4,这里是driver version
CUDA Version: 11.4
不知道什么问题,可能自己的显卡不支持,换了服务器电脑,也是8.0版本的,就没问题
2.Boost这里包括下面都是通过编译的时候提示缺啥库,再一个个安
好用的搜库指令:aptitude search boost, apt-cache search glew
boost库有很多,网上有教程说用 sudo apt-get install libboost-all-dev
但这个太多了,要下很久,根据报错里提示的具体库,我们下sudo apt-get install libboost-serialization1.65.1就行,缺啥再补
sudo apt-get install libeigen3-dev
最低要求2.91.0,矩阵库
sudo apt-get install libglew-dev ,opengl扩展
PUMA源代码:https://github.com/PRBonn/puma
第一步,Installation选择非docker方法,按照github上的Installation Instructions安装
Open3D运行作者准备好的脚本bash 3rdparty/Open3D.sh,这个脚本的目的是帮你clone他使用的open3d的代码,安装open3d需要的依赖并编译,猜测和自己clone一下open3d的代码然后编译效果一样(大致,这个脚本还有一个打补丁)
遇到的问题
- 脚本里有一句下面这句话,这里在克隆open3d的时候用了克隆所有submodule的参数,导致我以为有submodule,于是就想用git方式下载而非直接下zip,但我git不行,于是按上面的方法配置代理,最后发现其实没有submodule,直接下zip也行.(在.git/config里有写)
git clone --depth 1 --recurse-submodules
https://github.com/nachovizzo/Open3D.git /tmp/Open3D -b nacho/generalized_icp &&
cd /tmp/Open3D/
- 当我git失败,手动下载之后,运行这个bash,说找不到文件,以为是我放的位置不对,要放在puma工作路径下,最后发现还是因为上面git那句话,最后有个cd切换工作路径,而因为该路径下已经有我粘过去的文件,cd命令没有执行,导致工作路径不对.自己加一句cd就好了
3rdparty/Open3D.sh: 第 76 行: cd: 3rdparty/PoissonRecon/PoissonRecon/: 没有那个文件或目录
+ sed -i s/sudo// util/install_deps_ubuntu.sh
sed: 无法读取 util/install_deps_ubuntu.sh: 没有那个文件或目录
- 同样也是跳过了那句话,但我自己在/tmp/Open3D/路径下补了PoissonRecon这个包,于是执行到了后面的打补丁环节,但由于种种原因并不打的上补丁,还不知道为啥
error: 打补丁失败:Src/FEMTree.Initialize.inl:190
error: Src/FEMTree.Initialize.inl:补丁未应用
error: 打补丁失败:Src/FEMTree.IsoSurface.specialized.inl:1855
error: Src/FEMTree.IsoSurface.specialized.inl:补丁未应用
- 使用git代理按照脚本克隆好了代码,但因为后面几句还是没通过,所以得重新跑,那么就需要补充cd那句.补充之后虽然还是找不到PoissonRecon(可能得自己粘一下),但可以运行到后面的安装和编译了,安装没问题,编译时有cmake版本的问题(安装依赖没问题后下一次可以把那句话注了这样快一点)
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.19 or higher is required. You are running version 3.10.2
把cmakelist里的版本要求从3.19改为3.10是不行的,里面有旧版本不支持的东西,只能升级cmake
cmake下载链接:https://cmake.org/download/#latest
官方安装教程:https://cmake.org/install/#download-verification
这里采用源码安装,装在usr/local下,装的当前最新版
tar zxvf cmake-3.21.3.tar.gz sudo mv cmake-3.21.3 /下载路径 /usr/local cmake . 或 cmake -DCMAKE_INSTALL_PREFIX=/usr/local . make make install
采用cmake --version检测是否更新
注意:据说如果用 cmake 编译过 ros ,执行autoremove cmake会把之前用 cmake 编译过的包都删掉.另外,不需要用软链接
-
在4的时候其实还有一个权限不够的错误,看了下是有几个命令需要sudo权限,于是我就赋予了这个脚本777的权限并用sudo ./Open3D.sh运行就好了
-
因为系统默认python2,找不到python3路径,在bashrc里加以下两句,不知道哪句有用
export PATH=/usr/bin/python3.6:$PATH export
PYTHonPATH=/usr/bin/python3.6:$PYTHONPATH
- 编译的时候要在github上下载很多包,但又下载不下来,就按照他的提示,缺啥自己下然后放进去,如果终端没有链接,就去对应的cmake文件里找.我整理了一份全都下载好的.
如果想把全都下好的拷出来,注意先把sh脚本里最后一句删除去掉,否则编译成功之后就直接删除了.
没啥问题,同样要赋予sudo权限运行
puma第一句成功了,第二句不行,说No module named pybind11.setup_helpers,这是因为pip默认的python2,故pybind11装到python2里了.pybind11是python调用cpp文件的,故一定要装.建议使用alternatives工具直接更换默认python版本,详见我的博客–三. 安装篇.
第二句一定要运行,这里包括编译拓展的cpp库和安装其他python库,使用了主目录的setup.config和setup.py两个文件.关于这句话的具体意思见https://pip.pypa.io/en/stable/cli/pip_install/
第二步, Converting from .bin to .plypip install pybind11
pip install --user .
因为没采用装docker的方式,因此指定dataset路径和build docker container都不需要做了.其他的docker命令都改为正常运行python代码就好
这里注意他要求的文件路径,如果有缺库的话说明前面pip install --user .没装好
python3 '/home/dudu/puma/apps/pipelines/slam/puma_pipeline.py' --dataset ./data/mai_city/ply --sequence 00 --n_scans 40
不知道这里–n_scan填多少应该怎么看
报错
No module named ‘puma.cpp.normal_map’
这个就是那个cpp库,pybind11需要编写setup.py,但如果手动运行这个python文件还是会报错,因此还是需要按照pip install --user .来.如果成功的话就可以正常运行
关于pybind11详见官方文档:https://pybind11.readthedocs.io/en/stable/basics.html#compiling-the-test-cases
第四步,可视化下载open3d:http://www.open3d.org/,选deb包然后dpkg就行
缺libglfw3包,用sudo apt-get install libglfw3安装,如果找不到该软件包的话就先update一下.
打开:Open3D
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)