提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、运行ch9的例程代码
1. MeshLab安装
(1) 软件中心安装
搜索:MeshLab,点击安装即可。
2. 编译例程代码前的修改
(1) 对于bundle_adjustment_ceres例程
1)将c++1改成c++4
2)添加fmt包
find package(fmt REQUIRED)
set(FMT LIBRARIES fmt::fmt)
添加的位置如下所示:
链接到fmt库,添加代码如下:
(2) 对于bundle_adjustment_g2o例程
CMakeLists.txt的修改同上
3. 编译例程
(1) 在slambook2/ch9/目录下,创建build文件:
mkdir build
cd build
(2) 编译源码
cmake ..
make
注意:make编译时可能会出错,后面有解决的方法
(3) 运行例程
运行bundle_adjustment_ceres例程:
./bundle_adjustment_ceres ../problem-16-22106-pre.txt
meshlab initial.ply
meshlab final.ply
运行bundle_adjustment_g2o例程:
./bundle_adjustment_g2o ../problem-16-22106-pre.txt
meshlab initial.ply
meshlab final.ply
(4) 运行结果
优化前:
优化后:
二 可能的报错:c++:internal compiler error:已杀死(program cclplus)
1.问题描述
在安装个g2o库时,编译源码出现报错,信息如下图所示:
[ 27%]Building cxX object g2o/types/slam2d/CMakeFiles/types
slam2d.dir/parac++:internal compiler error:已杀死(program cclplus)Please
submit a full bug report,with preprocessed source if appropriate.See
<file:///usr/share/doc/gcc-7/README.Bugs> for
instructions.g2o/solvers/pcg/CMakeFiles/solver pcg.dir/build.make:81:
recipe for targetmake[2]:**[g2o/solvers/pcg/CMakeFiles/solver
pcg.dir/solver pcg.cpp.o] ErCMakeFiles/Makefile2:1942:recipe for
target 'g2o/solvers/pcg/CMakeFiles/solmake[1]:
***[g2o/solvers/pcg/CMakeFiles/solver pcg.dir/all] Error 2
2.原因分析
大量template的扩展需要足够的内存,报错的原因是(虚拟机)运行内存不足。
3.解决
减少make使用到的核数:安装直接用make(就是时间长点!!)
总结
以上就是运行ch9后端优化CeresBA和g2o求解BA的实践例程的全部过程,如有疑问,可以评论区留言交流!!!!
标签:BA,例程,bundle,编译,CeresBA,g2o,adjustment,pcg From: https://blog.csdn.net/2401_82458959/article/details/139255805