本人SLAM研究新手,使用系统为Ubuntu16.04。
在学习SLAM的过程中,使用Octomap进行八叉树地图的建立,Octomap的编译安装没有出现问题,octovis模块也顺利安装。悲催的是,在我调用octovis模块打开已有的八叉树地图时,便会出现一大堆乱码,乱码最后有一个Core Dump。
这个错误和2016年时g2o_viewer在Ubuntu16.04下出现的错误一样,不过目前g2o的作者已经更新源码,使得g2o在16.04下可以完美运行。由于本人之前饱受g2o_viewer在Ubuntu16.04下(别问我为啥不装14,我也很奇怪我的电脑只能装得上16.04)不能使用的困扰。因此我对octovis的问题展开了探索。
在经过一系列的分析比对,我发现是在依赖项上出了问题。很多地方对于OctoMap的编译安装中会要求依赖项libqglviewer-dev。libQGLViewer 是一个用以简化了Qt开发OpenGL三维浏览器的C++库。它也是在所有新老版本的g2o的编译安装中必备的一个依赖项。
但是!在Ubuntu16.04下,Octomap的编译安装,却不能使用libqglviewer-dev。而应该使用libqglviewer-dev-qt4:
sudo apt-get install libqglviewer-dev-qt4
安装的时候,如果装过libqglviewer-dev,系统会将其自动卸载。
安装完成后在编译安装OctoMap,如果之前编译安装过,则务必重新编译安装,使OctoMap更新一下。
最后再次用octovis打开八叉树地图可见已经正常。
另外:在编译安装OctoMap后,可以再重新安装回libqglviewer-dev,以便为其他功能模块,如g2o提供依赖项。
sudo apt-get install libqglviewer-dev
因为libqglviewer-dev-qt4和libqglviewer-dev只能存在一个,但libqglviewer-dev-qt4并不能支持g2o。安装回libqglviewer-dev是不会影响octovis的使用的,因为它影响的只是OctoMap的编译安装。亲测。
本人的问题是在Ubuntu16.04下出现并解决的,其他版本系统未曾测试。