windows+vs2015下安装ElasticFusion,包含Ceres Solver、Eigen、gflags、glog、suitesparse、Pangolin、OpenNI2
一、安装环境
windows10 64位
vs2015(不要高于2017,否则后期会报错)
Cuda 10.0
Cmake 3.18.2
安装git bash
二、源代码下载
创建文件夹:D:\Ceres_Install,下载的源代码都放在这个目录下,用git bash 下载,命令为git blone http://XX
1.Ceres Solver
官网地址: http://ceres-solver.org/installation.html
百度云盘(Ceres Solver 2.0.0版本):
链接:https://pan.baidu.com/s/1nKJPDPXYnkG4SwGDEZvQdQ
提取码:kcfq
2.Eigen
矩阵运算库
官网地址:https://gitlab.com/libeigen/eigen
gitee(速度快):https://gitee.com/yinlichang19/eigen.git
3.gflag
官网地址:https://gflags.github.io/gflags/
gitee(速度快):https://gitee.com/mirrors/gflags.git
4.glog
官网地址:https://github.com/google/glog.git
gitee(速度快):https://gitee.com/yinlichang19/glog.git
5.suitesparse-metis-for-windows
官网地址:https://github.com/jlblancoc/suitesparse-metis-for-windows
gitee(速度快):https://gitee.com/yinlichang19/suitesparse-metis-for-windows.git
6.Pangolin
官网地址:https://github.com/stevenlovegrove/Pangolin
百度云:https://pan.baidu.com/s/1K92B2iAR_MMteX8CO8AsEg
提取码:yx3j
7.OpenNI2
百度云: https://pan.baidu.com/s/1PP0unOK0DPNOMpFF5cbB_g
提取码:jkmq
8.ElasticFusion
官网地址:https://github.com/mp3guy/ElasticFusion
gitee(速度快):https://gitee.com/yinlichang19/ElasticFusion.git
三、安装
在D:\Ceres_Install,分别创建每个项目的build文件夹,同时创建install,在里面创建每个项目的文件夹。
安装过程参考:https://blog.csdn.net/weixin_44153180/article/details/110499667?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161226876316780266210135%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161226876316780266210135&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-5-110499667.first_rank_v2_pc_rank_v29&utm_term=VS2019+ceres&spm=1018.2226.3001.4187link
1.安装Eigen
启动Cmake,选好路径,如下:
点击configure,选择 vs2015, x64
在配置选项中,
- 取消 Test 类项,
- 修改CMAKE_INSTALL_PREFIX=D:\Ceres_Install\install\eigen
再次Configure->Generate,用vs2015打开D:\Ceres_Install\eigen-build\Eigen3.sln,
点击 生成->批处理,选择INSTALL的Release和Debug,点击生成。
全部成功后,D:\Ceres_Install\install\eigen下有include和share两个文件夹。
2.安装gflags
同上,在配置选项中,
- 取消BUILD_Testing
- CMAKE_INSTALL_PREFIX=D:/Ceres_Install/install/gflags
- 选中BUILD_SHARED_LIBS 以便生成.dll文件
点击 生成->批处理,选择ALL_BUILD和INSTALL的Release和Debug,点击生成。
3.安装glog
同上,在配置选项中
- 取消选中BUILD_TESTING
- CMAKE_INSTALL_PREFIX = D:/Ceres_Install/install/glog
- 选中WITH_GFLAGS
- gflags_DIR = D:/Ceres_Install/install/gflags/lib/cmake/gflags
- 选中BUILD_SHARED_LIBS以便生成.dll文件。如果该项不存在通过“Add Entry”手动加入。
点击 生成->批处理,选择ALL_BUILD和INSTALL的Release和Debug,点击生成。
4.安装Suitespares
同上,在配置中
- 选中BUILD_METIS。
- 取消选中HAVE_COMPLEX,否则也会有很多莫名其妙的错误,这些错误和平台的兼容性有关。
- SUITESPARES_INSTALL_PREFIX =D:/Ceres_Install/install/suitesparse 。
- CMAKE_INSTALL_PREFIX =D:/Ceres_Install/install/suitesparse 。
- 取消选中SHARED。如果选中会报错,宣称缺少一系列.lib文件。
点击 生成->批处理,选择ALL_BUILD和INSTALL的Release,点击生成。
然后回到cmake的配置中,选中SHARED项,再次生成。
然后点击 生成->批处理,选择ALL_BUILD和INSTALL的Debug,点击生成。
因为再上一过程中.lib文件已经被生成并且安装(上一轮编译一定要生成INSTALL),所以这时不会再报错说缺少.lib文件了。
5.安装Ceres Solver
此配置来自于上文的参考链接。
同上,配置时:
- 取消选中BUILD_EXAMPLES、BUILD_TESTING。为了节省后续编译时间。
- 选中BUILD_SHARED_LIBS,以便生成动态链接库文件。
- 选中CUSTOM_BLAS。
- 添加BLAS_LIBRARIES项(FILEPATH类)赋值 D:/Ceres_Install/suitesparse-master/lapack_windows/x64/libblas.lib
- 选中LAPACK。
- 添加LAPACK_LIBRARIES项(FILEPATH类)赋值 D:/Ceres_Install/suitesparse-master/lapack_windows/x64/liblapack.lib
- 选中EIGENSPARSE。
- Eigen3_DIR=D:/Ceres_Install/eigen-build
- 选中GFLAGS和GLOG,并且正确定位。一般再次configure应该可以自动定位,可以勾选上Advanced查看自动定位路径,如果配置信息显示NOTFOUND,可以手动add entry,添加GLOG和glog_DIR
- 选中SUITESPARSE,注意这一选项会自动取消选中。
- 添加CMAKE_INSTALL_PREFIX 赋值 D:/Ceres_Install/install/ceres。
重点!!需要手动配置配置AMD、BLAS、CAMD、CCOLAMD、CHOLMOD、CXSPARSE、COLAMD、SUITESPARSE、SUITESPARSEQR等9个头文件的路径以及相应的9个静态库的路径。
可以点击Grouped,依次手动定位到相应的路径
点击Generate。打开sln,点击 生成->批处理,选择ALL_BUILD和INSTALL的Release,点击生成。
切换到Debug模式。然后右键单击“ceres”项目->属性 ->链接器->输入->附加依赖项。这里要注意属性配置也应设为Debug模式。
将以下7个Release版本的库改为Debug版本的库
D:\Ceres_Install\install\suitesparse\lib\libspqr.lib
D:\Ceres_Install\install\suitesparse\lib\libcholmod.lib
D:\Ceres_Install\install\suitesparse\lib\libccolamd.lib
D:\Ceres_Install\install\suitesparse\lib\libcamd.lib
D:\Ceres_Install\install\suitesparse\lib\libcolamd.lib
D:\Ceres_Install\install\suitesparse\lib\libamd.lib
D:\Ceres_Install\install\suitesparse\lib\suitesparseconfigd.lib
调整为Debug版本库:
D:\Ceres_Install\install\suitesparse\lib\libspqrd.lib
D:\Ceres_Install\install\suitesparse\lib\libcholmodd.lib
D:\Ceres_Install\install\suitesparse\lib\libccolamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libcamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libcolamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libamdd.lib
D:\Ceres_Install\install\suitesparse\lib\suitesparseconfigd.lib
然后生成ALL_BUILD和INSTALL项目,完成Debug模式的编译和安装过程。
6.配置环境变量
D:\Ceres_Install\install\ceres\bin;
D:\Ceres_Install\install\gflags\bin;
D:\Ceres_Install\install\glog\bin;
D:\Ceres_Install\install\suitesparse\bin;
D:\Ceres_Install\suitesparse-metis-for-windows\lapack_windows\x64;
7.安装OpenNI2
同上,配置时:
- CMAKE_INSTALL_PREFIX 赋值 D:/Ceres_Install/install/OpenNI2
生成sln。
打开,点击 生成->批处理,选择ALL_BUILD和INSTALL的Release和Debug,点击生成。
8.安装Pangolin
同上,配置时:
- CMAKE_INSTALL_PREFIX 赋值 D:/Ceres_Install/install/Pangolin
取消BUILD_EXAMPLES、 MSVC_USE_STATIC_CRT - OPENNI2_INCLUDE_DIR: D:/Ceres_Install/install/OpenNI2/Include
- OPENNI2_LIBRARY:D:/Ceres_Install/install/OpenNI2/Lib/OpenNI2.lib
- EIGEN3_INCLUDE_DIR: D:/Ceres_Install/eigen
生成sln。打开,点击 生成->批处理,选择ALL_BUILD、INSTALL、zlib、libjpeg、libpng的Release和Debug,点击生成。
9.安装ElasticFusion的Core
同上,配置时,以下会自动生成,如果没有,自行添加修改:
- 修改CMAKE_INSTALL_PREFIX 赋值 D:/Ceres_Install/install/libefusion
- 选中BUILD_SHARED_LIBS
生成sln。打开,点击 生成->批处理,选择ALL_BUILD、INSTALL的Release和Debug,点击生成。
10.安装ElasticFusion的GUI
注释掉GUI/scr/Findefusion.cmake中第27行
因为用不到RealSense,直接在GUI/scr/CMakeLists.txt中,修改第30行:
把if(WIN32)改为if(WITH_REALSENSE),其中WITH_REALSENSE已经被定义为False。
cmake同上,配置时:
- LAPACK_LIBRARIES:D:/Ceres_Install/suitesparse-metis-for-windows/lapack_windows/x64/libblas.lib
- LAPACK_BLAS:D:/Ceres_Install/suitesparse-metis-for-windows/lapack_windows/x64/libblas.lib
- ZLIB_INCLUDE_DIR:D:/Ceres_Install/Pangolin-build/external/zlib/include
- ZLIB_LIBARAY_DEBUG:D:/Ceres_Install/Pangolin-build/external/zlib/lib/zlibstaticd.lib
- ZLIB_LIBARAY_RELEASE:D:/Ceres_Install/Pangolin-build/external/zlib/lib/zlibstatic.lib
- EFUSION_INCLUDE_DIR = D:/Ceres_Install/ElasticFusion/Core/src
- EFUSION_LIBRARY = D:/Ceres_Install/install/libefusion/lib/efusion.lib
- 还需要添加Pangolin 、OpenNI2 、SuiteSparse 等的include和lib
其它如果还有错误,可根据提示添加相应路径和lib
生成sln。打开,点击 生成->批处理,选择ALL_BUILD的Release和Debug,点击生成。
10.1 错误集合:
Actually build ElasticFusion error: ‘glDrawFrustrum’ is not a member of ‘pangolin’
方法:点击错误,跳到错误位置,把glDrawFrustrum改为glDrawFrustum(少个r)
参考:https://blog.csdn.net/qq_37263498/article/details/80807206 link
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2005 glewInit 已经在 efusion.lib(efusion.dll) 中定义 ElasticFusion D:\Ceres_Install\ElasticFusion\gui_build\glew.lib(glew.obj) 1
方法:把efusion.lib放在glew.lib后面
参考:https://github.com/mp3guy/ElasticFusion/issues/65
link