< >
Home » 一起做RGB-D SLAM » 一起做RGB-D SLAM (8)-关于调试与补充内容

一起做RGB-D SLAM (8)-关于调试与补充内容

一起做RGB-D SLAM (8)-关于调试与补充内容

说明:

  • 介绍一些调试
  • 介绍相关问题及解决

Q&A:

  • Q: OpenCV的版本?

  • A: 我用的是2.4.9。可以使用2.4系列,不会有太大差别。而3.0系列则在接口上有一些明显的改动,可能需要修改源码。

  • Q: 第二讲的点云如何查看?

  • A: 使用pcl_viewer。当点云显示时,先用r键复位视角,再用鼠标调整。

  • Q: 如何调试代码?

  • A: 可以在源程序里用cout, cerr输出,善用linux的管道与IO流即可调试。如需断点,可用gdb, ddd等工具(虽然我不怎么用)。

  • Q:《一起做》系列的(6)、(7)两篇源程序在编译时通不过,错误如下图:
    请输入图片描述

  • A:该问题的具体原因不明,大家揣测是库冲突,出现在使用从帮主博客《一起做6》里给出的g2o的地址下载的g2o源代码进行编译安装时,解决的方法是,使用帮主在qq讨论群里给出的g2o的压缩包进行编译安装。这个版本的g2o源代码,估计帮主会放在自己的github里,与《一起做》系列的源代码打包在一起供各位小萝卜们下载学习。(我已经更新了我的git)

  • 问题(一)的衍生问题,出现问题(一)并按照上述问题解决方案进行解决后出现运行g2o_viewer时的core dumped(或者cannot open library: libg2o_solver_eigen.so)问题,猜测原因是之前编译安装的g2o的相关共享库没有清除干净,解决方法为:(1)删除/usr/local/include/g2o,指令为sudo rm -rf /usr/local/include/g2o;(2)删除/usr/local/lib下有关libg2o_*.so的库文件,先进入目录cd /usr/local/lib,然后挨个(可多个同时)删除sudo rm -rf libg2o_*.so libg2o_*.so libg2o_*.so(我一个一个删的我会说……)

  • 这个是和编译安装新源代码相关的问题,还是和g2o有关,具体是我的系统是12.04的,昨天手滑点了更新,结果导致pcl_viewer 使用不了了,而且看提示好像很多pcl相关的库都出现了问题,于是,我重装了系统,然后再把相关的软件都安装后,g2o_viewer运行不了了,问题是error while loading shared libraries: libg2o_viewer.so: cannot open shared object file: No such file or directory, 经帮主指点,发现问题的原因是在默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通过源码包进行安装时,如果不指定--prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加 /usr/local/lib这个目录。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。网络上的解决方法是在/etc/ld.so.conf里添加绝对路径/usr/local/lib,作为一个新手,我实在不知道怎么样添加进去,用gedit编辑之后,不能保存,用echo /usr/local/lib >> /etc/ld.so.conf没反应,于是我就采用了奇葩方法:用gedit打开/etc/ld.so.conf,然后添加/usr/local/lib ,再把这个文件保存到home,然后sudo cp -i ld.so.conf /etc/ld.so.conf,之后,执行ldconfig(这一步是必须的,目的是利用ldconfig执行文件将 /etc/ld.so.conf的数据读入高速缓存中),再次运行g2o_viewer result_after.g2o(跑通《一起做7》,在data文件夹下生成的),成功!

  • Q:用的系统是什么版本?

  • A: 我使用的系统是Ubuntu14.04 for ros(indigo),与群主的Ubuntu12.04不同,是易科机器人社区发布的镜像,网上可下载到。提供一个网址:http://blog.exbot.net/archives/1206 小萝卜2号同时是ros使用者,所以用U盘刻录,然后安装,如有不懂,可到网上搜索具体安装过程。这个镜像对于使用ros 的初学者非常方便,里面装好了集成环境,不必浪费很多时间去配置软件,想用ros又想节省时间的小萝卜N号们可以考虑下

  • Q: Ubuntu14.04和Ubuntu 12.04的区别是什么?

  • A: 这里我们要讲下依赖问题。在跑群主程序过程中,我们用到三个库opencv、PCL和g2o,而安装它们一般都需要系统依赖库,因此需要首先安装各种依赖项。系统版本不同,依赖库不同,而我们用到的库是基于某个依赖库开发的,其他版本(如高版本)的依赖库可能不识别,导致无法编译成功。因此,建议安装时参考库的说明文档,有安装要求和步骤,尽量按照说明安装。

  • Q: OpenCV的版本?

  • A: 我用的是opencv2.4.10,默认安装方式。群主说2.4系列差别不大,而3.0系列则在接口上有一些明显改动,可能需要修改源码。个人觉得,2.4.9和2.4.10没差别,无影响。

  • Q: PCL 安装问题?

  • A: 我开始用的是Ubuntu12.04,在用命令行安装PCL时,提示找不到依赖项,缺缺缺……于是采用源码安装(参考古月居的博客http://blog.csdn.net/hcx25909/article/details/8651840),装了依赖库,原因未知,还是编译通不过,缺依赖项,缺缺缺……源码安装行不通,果断改装系统,Ubuntu14.04 for ros(indigo),简单又粗暴吧,之后再用三句命令行安装PCL,完全没问题。建议:如果非要用源码安装,每个人电脑配置不同,遇到的问题不同,若实在解决不了,就忍痛割爱,系统重来。

  • Q: g2o安装问题?

  • A: 对于g2o,最好是用群主github中提供的,一般Ubuntu12.04编译没有问题。我尝试了三种方法,一一解析。(1)不过我的Ubuntu14.04中libQGLViewer有问题,libqglviewer-qt4-dev安装不了,尝试下载debin安装,依然会提示缺少依赖项。(2)所以干脆舍弃g2o的可视化模块g2o_viewer,安装cmake-curses-gui这个包,通过gui来选择想编译的g2o模块, 找到build apps,enter键修改状态为off,make,继续sudo make install,安装相应的lib、头文件、执行文件。缺少显示模块,只是无法用g2o显示图像,不过该有的数据还是都有的。(3)另外,若官网上下载最新g2o,参考安装说明文档,在Ubuntu14.04中编译也能神奇通过,但是在跑“一起做6和7”时,提示错误:core dumped。重启系统,始终不行,原因未知,考虑是库冲突。所以不推荐。

  • 尝试安装libqglviewer-qt4-dev_2.3.4.4_amd64.deb的过程中的错误,大家可以清楚看到n重依赖以及相互冲突:
    请输入图片描述
    请输入图片描述

  • Q: 用PCL的cloudviewer把点云显示出来,为什么会是上下颠倒?

  • A: 关于图像上下翻转问题,是因为opencv定义的坐标系和pcl_viewer显示坐标系不同,opencv是x右y下,而pcl显示是x右y上。解决方法:找到群主程序image2PointCloud函数中,把计算点空间坐标的公式的p.y值添加负号,这样y方向就可以正常显示了,so easy。(或许还有别的方法)
    请输入图片描述

  • Q: 文件路径问题
    请输入图片描述

  • A: 上面的错误是跑3时的一个提示,是说没有读到数据,没有点云。读取的parameters.txt以及存储的点云数据,最好给出具体的路径。如:/home/document/RGBD_tutorial/part3/code/data/,这样程序才能读取到数据或者保存到正确的文件夹里。

  • Q: 在编译6和7时遇到c++11不兼容的问题?
    请输入图片描述

  • A: 在确保程序编译通过,而在运行时遇到c++0x_warning.h:32:2 error,我曾尝试在CMakeLists.txt中添加一段代码,然并没卵用,或许有人可以的(可尝试)。参考:http://blog.csdn.net/zyh821351004/article/details/46521319
    添加的代码:
    请输入图片描述

多半是因为用的不是群主github上提供的g2o版本,于是g2o重装,程序顺利运行,听着机子跑程序时哗哗的声音,是不是内心无比高兴。

  • Q: 在cmake时会出现类似的WARNING?
    请输入图片描述

  • A: 注意这个是warning,不是error,不影响编译。原因可能是cmake里的find_package命令把/usr/lib给找出来了,引发了warning。(群主告诉偶滴,直接忽略)

  • ubuntu 1404下是可以用g2o_viewer的,只要你手动把依赖项配好。一共有三个依赖项,配好之后g2o_viewer照常使用
    请输入图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: 一起做rgb-d slam