ceres-solver1.14版本与Eigen3.2.9版本

注:最好使用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)  #添加此行,版本号与你安装的对应

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值