文章目录
6 非线性优化
6.1状态估计问题
6.1.1批量状态估计与最大后验估计
6.1.2 最小二乘的引出
6.1.3 例子:批量状态估计
6.2非线性最小二乘
6.2.1 一阶和二阶梯度法
6.2.2 高斯牛顿法
6.2.3 列文伯格—马夸尔特方法
理论部分小结
6.3 实践:曲线拟合问题
6.3.1 手写高斯牛顿法
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