调试笔记——《一起做RGB-D SLAM 》

花了前后大概两周的时间,好好整理了一遍高博的《一起做RGB-D SLAM 》系列,调试过程中发现,在安装g2o这个包时遇到了很多问题,下面把解决问题的过程记录一下。


  1. 起初安装g2o这个包时并没有特别在意,就直接按第六讲的内容,先从github上下载了源码,然后按照高博给出的步骤先安装了依赖:
    sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-dev	
  2. 第一遍编译g2o时,也没仔细看readme文件,就直接用cmake编译了,而且神奇的是竟然编译成功了,但之后编译好第六讲和第七讲的内容后,运行生成的可执行文件,却发现程序会报错,根据第八讲的内容,初步断定是之前编译g2o出了问题。
  3. 返回g2o源码文件夹,查看readme文档发现,高博的教程由于时间久远,一些依赖已经不再适用于ubuntu 14.04,因此按照readme上的说明,重新安装了qt5-qmake(高博教程安的是qt4-qmake)
  4. 安装完qt5后,运行:
    qmake -v
    
    发现系统仍然只识别到qt4版本,没办法,只能冒着风险卸载掉qt4-qmake(有风险是因为qt4和ros、以及pcl的一些库文件挂钩)
  5. 卸载完重新运行上一条指令,系统已经能正常检测到当前qmake版本为5.0,此时编译g2o包,果然,编译失败。当时的报错没有截图,但原因就是remove qt4时删除了一些依赖项,导致编译失败
  6. google了一阵没有太多有价值的答案,于是自己尝试重新安装一遍qt4-qmake,反正系统已经能识别到最高版本是5了,再装一遍也不亏。重新安装qt4-qmake后,再编译g2o,还是不通过,于是打开synaptic查看qt4的相关依赖包,发现libqglviewer-dev这个包也在刚才卸载qt4-qmake的过程中卸载掉了,于是果断重新 sudo apt-get install libqglviewer-dev
  7. 再次编译g2o发现,刚才的报错点顺利的编译过去,但又生成了新的错误,这一次和pcl的依赖缺失有关,很无奈,看来卸载qt4-qmake出了很多连锁反应,于是我直接从github上下载了pcl-1.8的源码(系统自带版本是1.7的),直接从源码编译,放弃apt-get的安装方式
  8. 经过这样一番折腾,g2o终于又能重新编译通过啦!
  9. 但问题仍没有结束,重新编译高博的代码,郁闷,编译器显示g2o的一个名为optimizable_graph.h的头文件里面的一个函数没有正确的声明,这太奇怪了,因为无论如何这种头文件的代码是不会被不小心修改的啊。报错的原因我至今搞不清楚,只是按照编译器提示的错误,define了那个函数(我觉得我遇到的问题太奇葩了,网上是没人遇到过,我也就不贴出来了,毕竟报错可能只是小概率事件。。。)后,再次编译终于通过,得到了一个完整的rgbdslam的效果图

你可能感兴趣的:(调试笔记——《一起做RGB-D SLAM 》)