Ubuntu20/视觉SLAM十四讲踩坑记录

Ubuntu/视觉SLAM十四讲踩坑记录

  • Ubuntu/视觉SLAM十四讲踩坑记录:
    • ch3 visualizeGeometry:
    • ch6:g2o使用:
    • ch7:段错误 (核心已转储)
    • 其他:
      • c++: fatal error: 已杀死 signal terminated program cc1plus

Ubuntu/视觉SLAM十四讲踩坑记录:

ch3 visualizeGeometry:

  1. pangolin安装 ,安装需要cmake版本>=3.17;通过apt安装最新只能到3.16(2021.09.24);可能卸载后通过snap install cmake --classic安装。直接到最新版本(方便、快速)。或者通过源码自行安装(容易出错)。
  2. cmake编译,在完成所有安装后,build/cmake 可能通过。但make时会出现如下错误:Ubuntu20/视觉SLAM十四讲踩坑记录_第1张图片
    原因:其中引用的sigslot/signal.hpp是基于C++14标准的,而原CMakeLists.txt中的设置的标准为C++11。
    Ubuntu20/视觉SLAM十四讲踩坑记录_第2张图片
    方案:改为c++14再次执行即可运行
    Ubuntu20/视觉SLAM十四讲踩坑记录_第3张图片

ch6:g2o使用:

Q1:
在编译时一直找不到cs.h头文件。
在第一版源代码文件中的g2o/EXTERNAL 中有一个csparse文件夹,将其移动到/usr/local/include/g2o/EXTERNAL下,cmake、make install即可。

Q2:
关于关于高博3d2d程序报错的改动
《视觉SLAM十四讲》第六讲g2o实践代码报错解决方法
g2o初始化一些

code0 为原始代码,在新装的g2o等库中出现错误,原因参考上述文献(链接)。
code1和code2为改动实现的两种方法。两个位置的code1或code2要对应

	//DirectBlock* solver_ptr = new DirectBlock ( linearSolver );     //code0
    std::unique_ptr solver_ptr ( new DirectBlock ( std::unique_ptr(linearSolver)));  code1
    // g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton( solver_ptr ); // G-N code0
    g2o::OptimizationAlgorithmLevenberg* solver (new g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr)));  // code 1
    //g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( solver_ptr ); // L-M  //code0
	//DirectBlock* solver_ptr = new DirectBlock ( linearSolver );   //code0
	DirectBlock* solver_ptr = new DirectBlock ( std::unique_ptr(linearSolver) );  //code 2
    // g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton( solver_ptr ); // G-N code 0
    g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg (std::unique_ptr(solver_ptr));  //code2
    //g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg ( solver_ptr ); // L-M  //code0

ch7:段错误 (核心已转储)

执行书中的以下代码时:

build/pose_estimation_3d2d 1.png 2.png d1.png d2.png

出现错误:

-- Max dist : 94.000000 
-- Min dist : 4.000000 
一共找到了79组匹配点
段错误 (核心已转储)

参考文献:
BUG(跑slam14-ch7-2d3d时)
视觉SLAM十四讲,OpenCV库使用时出现已放弃(核心已转储)
后,回到文件,发现,是图片名字有误(采用第一版的源码库)。将原来的1_deepth.png 2_deepth.png 与执行代码对应即可。

其他:

c++: fatal error: 已杀死 signal terminated program cc1plus

原因:运行内存不足
[https://blog.csdn.net/baidu_26954729/article/details/92428426](https://blog.csdn.net/baidu_26954729/article/details/92428426)
https://www.jianshu.com/p/c4ef42f6b2ec
解决方法:
增加运行内存
方法1:减少运行线程。
方法2:直接增加运行内存(如加内存条,虚拟机多分配内存等)。

你可能感兴趣的:(ubuntu,slam)