发现ceres库与sophus库之间有冲突,因为之前用的cere库是1.14版本的只能用eigen3.2编译,而sophus库的编译又是需要eigen3.3,在eigen库的使用上具有冲突。
解决的思路:安装ceres2.0.0版本,可以使用eigen3.3去编译,来解决冲突,旧的也不用删除,把新的ceres不要安装在默认的路径下就好了。
1. 安装ceres2.0.0
1)在github的ceres-solver的tag里面下载ceres2.0.0的压缩包
2)在/usr/local下创建ceres目录,用来存放2.0.0的ceres
3)解压ceres2.0.0,并进入目录
4)编译
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/ceres ..
make
sudo make install
2. 修改ch9中的CMakeList.txt文件
设置Ceres路径:
set(Ceres_DIR /usr/local/ceres/lib/cmake/Ceres) #设置Ceres路径
会报错error:'interger_sequence' is not a member of 'std',这是因为较新版的ceres对c++版本有要求,所以要把set(CMAKE_CXX_FLAGS "-std=c++11")改一下
set(CMAKE_CXX_STANDARD 14)
3. 编译ch9源码
4. 安装 Meshlab
sudo add-apt-repository ppa:zarquon42/meshlab
sudo apt-get update
sudo apt-get install meshlab
使用时,在File中import Mesh生成的.ply文件。
参考:
ceres 编译报错 error: ‘integer_sequence’ is not a member of ‘std_JoannaJuanCV的博客-CSDN博客