注:最好使用Ceres1.14版本,Eigen对应版本为3.2.9
一般Vins-Fusion编译报错关于Ceres的错误时,直接重新安装Ceres和Eigen,避免一直报错,可以参考以下内容,直接解决报错。
一、编译Vins-fusion报错
报错:
By not providing "FindCeres.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Ceres", but
CMake did not find one.
Could not find a package configuration file provided by "Ceres" with any of
the following names:
CeresConfig.cmake
ceres-config.cmake
解决方法:
1、删除之前的ceres-solver版本:我之前安装的是2.0版本
Ceres库的头文件安装在"/usr/local/include/ceres/"目录下,库文件安装在"/usr/local/lib/"目录,删除以下文件夹下的CERES文件:
sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a
sudo rm -r /usr/local/share/Ceres
2、下载ceres-solver-1.14.0
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
3、解压
tar xvf ceres-solver-1.14.0.tar.gz
4、编译
cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
sudo make
5、安装
sudo make install
二、ceres-solver-1.14.0安装报错
/home/lab/ceres-solver-1.14.0/internal/ceres/gtest/gtest.h:10445:35: error: variable or field ‘it’ declared void
for (typename C::const_iterator it = container.begin();
原因:eigen版本与ceres版本冲突
解决步骤:
1、先把eigen卸载,把/usr/include和/usr/local/include下面的Eigen和eigen3文件夹都删除:
sudo rm -rf /usr/include/Eigen /usr/include/eigen3 /usr/local/include/Eigen /usr/local/include/eigen3
2、eigen下载:从Eigen下载对应版本的eigen压缩包,直接解压到对应位置就可以了
解压:sudo tar -xzvf eigen-3.2.9.tar.gz -C /usr/local/include
3、解压:sudo tar -xzvf eigen-3.2.9.tar.gz -C /usr/local/include
4、复制:
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
sudo cp -r /usr/local/include/eigen3/Eigen /usr/include
sudo cp -r /usr/local/include/eigen3 /usr/include
之后重复ceres-solver-1.14.0安装步骤即可。
三、Vins-fusion编译问题:
-- Found installed version of Eigen: /usr/local/share/eigen3/cmake
CMake Error at /usr/local/lib/cmake/Ceres/CeresConfig.cmake:88 (message):
Failed to find Ceres - Missing required Ceres dependency: Eigen version
3.3.90, please set EIGEN_INCLUDE_DIR.
Call Stack (most recent call first):
/usr/local/lib/cmake/Ceres/CeresConfig.cmake:233 (ceres_report_not_found)
VINS-Fusion/camera_models/CMakeLists.txt:19 (find_package)
CMake Error at VINS-Fusion/camera_models/CMakeLists.txt:19 (find_package):
Found package configuration file:
/usr/local/lib/cmake/Ceres/CeresConfig.cmake
but it set Ceres_FOUND to FALSE so package "Ceres" is considered to be NOT
FOUND.
解决方法:
打开/usr/local/lib/cmake/Ceres/CeresConfig.cmake,作以下修改:
首先赋予写权限:sudo chmod 777 CeresConfig.cmake
set(Ceres_FOUND TRUE) #将FALSE改为TRUE
set(EIGEN_INCLUDE_DIR "/usr/local/include/eigen3") #添加此行
set(CERES_EIGEN_VERSION 3.2.9) #添加此行,版本号与你安装的对应