提示!!!!!
文章前面摸索较长,可转文末 bug解决
遇到BUG
make 直接报错
搜索相关贴子,初步判断是由g2o版本不一致,导致的指针问题,我这个好像是安装了旧版本,需要更新到新版本,才能使用智能指针.
关于解决方案可以参考该帖子于g2o新版本编译出错的原因及解决办法,不过这个帖子好像是要用旧版本替换新版本,SLAMbook2思路相反.
ubuntu卸载g2o库
最后,可以输入locate g2o
命令来验证是否删除干净。
在安装g2o库时,又报cmake 版本问题,额鹅鹅鹅
只能安装新的版本,由于之前安装了ROS,自带有cmake,卸载旧版本时还要考虑ROS不崩.参考这篇文章:cmake安装更新
安装好新版本 cmake和g2o后,重新对ch6编译,果不其然,又出错了,相同的错误,不过这次编辑程度多了一些,达到83%.还是g2o库出的问题.
关于这个问题的帖子:《视觉SLAM14讲》第七讲pose_estimation_3d2d程序运行报错
错误:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:179:14: error: ‘FixedArray {aka class ceres::internal::FixedArray<double, 3>}’ has no member named ‘fill’
add_vertex.fill(0.);
~~~~~~~~~~~^~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:186:30: error: ‘FixedArray {aka class ceres::internal::FixedArray<double, 3>}’ has no member named ‘data’
vertex->oplus(add_vertex.data());
~~~~~~~~~~~^~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:192:30: error: ‘FixedArray {aka class ceres::internal::FixedArray<double, 3>}’ has no member named ‘data’
vertex->oplus(add_vertex.data());
~~~~~~~~~~~^~~~
CMakeFiles/g2oCurveFitting.dir/build.make:75: recipe for target 'CMakeFiles/g2oCurveFitting.dir/g2oCurveFitting.cpp.o' failed
make[2]: *** [CMakeFiles/g2oCurveFitting.dir/g2oCurveFitting.cpp.o] Error 1
CMakeFiles/Makefile2:138: recipe for target 'CMakeFiles/g2oCurveFitting.dir/all' failed
make[1]: *** [CMakeFiles/g2oCurveFitting.dir/all] Error 2
Makefile:90: recipe for target 'all' failed
make: *** [all] Error 2
找到一篇帖子还是版本问题,不过好像是Ceres 库,关于g2o编译报错与版本选择,准备更新到1.14试试,我查看了自己的Eigen版本为3.3.4,太高担心,Eigen又不匹配
关于卸载Ceres及安装新版本可参考此帖子:slam14讲 第六讲编译报与ceres相关的错误
也可以利用下面这句,不过仍要用locate ceres
检查usr目录下是否删除干净
sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a
sudo rm -rf /usr/local/lib/cmake/Ceres //下有关ceres的全都删掉
sudo rm -r /usr/local/share/Ceres
插入一个小知识,关于文件解压 tar中的参数 cvf,xvf,cvzf,zxvf的区别exp:
tar xvf ceres-solver-1.14.0.tar.gz
结果依然是报错,找到一个贴子 《视觉SLAM14讲》第七讲pose_estimation_3d2d程序运行报错 也是这样错误,不过并没有列出系统的纠错过程,大概意思还是重新安装g2o,于是我又把 g2o,ceres一起安装了一下,按照如下帖子:
slambook2(ch6)—— Ubuntu18.04安装Ceres库 + g2o库 + 例程演示
但是ceres库安装一直报错
视觉十四讲第六章:编译ceres时:error: ‘integer_sequence’ is not a member of ‘std‘错误
ceres库1.14版本似乎才能可以和Eigen3.3.4,3.3.7版本匹配,其他版本高于1.14好像都会报上面的错误,太难了,进退两难,.ceres库动不了,g2o最新的库也试了,现在看到一个解决办法是Eigen ceres1.14+g2o202004
版本但是没找到帖子怎么下载这个版本.
总是反反复复一直没解决!
BUG解决
前面记录了一堆基本记录了一堆废话,不过也确实是真实的摸索直接一句话
ceres升级版本,我升级到了2.0.0
安装ceres2.0,旧版本可以不用删除,见教程:
ubuntu20.04安装eigen3.4.0(两种方式)和ceres-solver2.0.0
我的最终版本组合:
# Eigen 3.3.4 从仓库直接安装的
sudo apt install libeigen-dev
# Ceres 2.0.0
cd ceres-solver && git checkout 1.14.x
# g2o 最新版本
插入一个小技巧! 关于 make
,make test
Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
编译成功截图如下:
评论(0)
您还未登录,请登录后发表或查看评论