在笔记本上装了虚拟机,准备跑算法,记录一下发现的新坑
平台:ubuntu18.04 opencv3.4
这次安装完pangolin后,运行ORB-SLAM2发现运行完毕之后一直卡在地图和帧界面上出不去,强制关闭后也未见轨迹保存。
查询相关问题后,发现很多人认为是在Shut_down()函数的pangolin::BindToContext()上出的问题,注释一下就好了,但是我经过调试后发现,我的程序是在while(!mpLocalMapper->isFinished() || !mpLoopCloser->isFinished() || mpLoopCloser->isRunningGBA())卡住的。这下可为难了,怎么办好呢!。。
观察到在这个系统上运行的ORB-SLAM2每次运行会出现如下提示(warning):
Framebuffer with requested attributes not available. Using available framebuffer. You may see visual artifacts.Gtk-Message: 17:23:53.031: Failed to load module "canberra-gtk-module"
于是考虑装一下canberra-gtk-module
sudo apt install libcanberra-gtk-module
再重新编译运行ORB-SLAM2,确实正确load了,不过还是有提示如下:
Framebuffer with requested attributes not available. Using available framebuffer. You may see visual artifacts.
经过多方搜索,发现Framebuffer相关的东西应该都是pangolin支持的,那是不是pangolin安装的时候出了什么问题?重装一下!这里突然想到,之前用的pangolin都是高博slambook github上托管的源码编译的,这次的pangolin是直接在https://github.com/stevenlovegrove/Pangolin git到的,应该是最新版,有可能是这个新版本跟一些库不兼容导致的,那就还是用回原来的版本吧!
https://github.com/gaoxiang12/slambook/3rdparty
安装过程比较简单,依旧是在CMakelists.txt里面注释掉有关ffmpeg的库内容以防报错。安装完成后再重新编译运行ORB-SLAM2,成功!!
在Ubuntu 18.04上运行ORB-SLAM2时,程序在地图和帧界面结束后无法自动退出。经过排查,发现不是Shut_down()函数的pangolin::BindToContext()问题,而是由于mpLocalMapper、mpLoopCloser的状态导致。警告信息涉及到Framebuffer和canberra-gtk-module。安装canberra-gtk-module并尝试使用旧版pangolin(从slambook仓库获取)解决了问题,最终成功运行ORB-SLAM2。
670





