一. 前记
书接上回,本人大一小白实践ORB-SLAM2代码,通过了中期答辩之后,在学习本专业课程的同时,又着手开展新的内容。此前是从0到1,在虚拟机上成功实现了单目视觉的数据集与实时数据的实践;本博客更新的内容是:将相机数据从“单目”提升至“RGBD”层级,实现视觉SLAM对深度信息的提取与处理。具体效果呢,当然就是可以实现心心念念的点云地图而不仅仅是离散数据点啦!!!当然,这次我也只是做到了RGBD的数据集运行,并没有实现实时相机的功能,还有待进一步探索,不过我相信这也不太困难了。
我在做的时候,也是步步受阻,翻阅了无数网络资料,最终解决问题,写下博客,希望能对同为新手的你们有所帮助,少走弯路。
二. 实现过程
1.基础
首先呢,我们得站立在已经实现了ORB-SLAM2的单目应用的基础上(详情请见鄙人上一篇博客),然后便是我的实现过程:
2.扩容
由于此前并未考虑内存问题,于是下载下载到现在,内存已经不够啦!!! 更新前:
扩容之后:
首先理清楚两个概念:一个是在物理机上的硬盘给虚拟机划拨的势力范围,一个是虚拟机给自身内存划拨的圈地。在网上找了些扩容的教程,总结来看,还是这个最简单:
【虚拟机扩容】简单快速完成Ubuntu虚拟机扩容_Tyfrank的博客-CSDN博客
也就是,进虚拟机的页面,点一下“硬盘”按钮,再点一下下图右下角的扩展按钮
需要注意的是,有快照的话是无法扩容的!!!所以得把快照删干净(悲,背水一战)
我就之前不想删快照,想搞克隆机,结果克隆机和本体机都进不去系统了……还是靠进快照存档进去的。最终我也没搞克隆,删了快照,成功扩容。
3.无法联网问题
这是这种情况:(我怎么这么倒霉总是步步受挫)
无法定位软件包,要么是库里没及时更新,更新一下就好了
sudo apt-get update
要么就是网络问题,你会发现你在ubuntu里上个知乎都上不了……
网络问题也是源的问题,如果你去搜CSDN肯定好多都是让你更新源呀阿巴阿巴。
不过其实完全没必要!!!你只要重启系统,重新进行操作,就会发现它可以定位软件包了……
亲测有效,量子玄学。
4.下载依赖项
由于我们需要处理深度depth信息也就是进行稠密建图,所以原来那个ORBSLAM2的包是不够滴,下载高翔博士的代码:GitHub - gaoxiang12/ORBSLAM2_with_pointcloud_map 到~/catkin_ws/src 目录
然后就把这个新的ORBSLAM2_modified当作原来的ORBSLAM2文件夹一样,需要去编译。
至于细节,详情参见这篇博客:高翔ORB-SLAM2稠密建图编译(添加实时彩色点云地图+保存点云地图)_摆烂女侠的博客-CSDN博客x需要注意的是,想运行数据集,首先你得有这个数据集,详情请见Computer Vision Group - Dataset Download
5.__ __ ,启动!!!
也就是上面博主里的操作,跟着做就好,不多说。
其次啊,输入命令得自己根据自己文件在电脑上的路径输入,切不可直接复制粘贴。
比如我的路径就是
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ~/rgbd_dataset_freiburg1_desk Examples/RGB-D/associations/fr1_desk.txt
给新手们解释一下啊,上述意思分别是,1.rgbd数据集,启动!2.找启动文件 3.索引数据集位置
6.得到结果
虽然但是,咦,为啥我觉得使用了RGB-D数据集跟没使用一个样呢?
奥,原来是我没有安装关键的PCL依赖项进行稠密建图!!!
安装PCL参见博客
ubuntu从零到一跑通ORB_SLAM2及其ORBSLAM2_with_pointcloud稠密建图_libqt5x11extras5_野马AS的博客-CSDN博客
源码地址:https://github.com/PointCloudLibrary/pcl,选择1.8.1的tag下载
(1)安装相关依赖,
sudo apt-get install git build-essential linux-libc-dev cmake cmake-gui libusb-1.0-0-dev libusb-dev libudev-dev mpi-default-dev openmpi-bin openmpi-common libflann1.9 libflann-dev libeigen3-dev libboost-all-dev libvtk6.3-qt libvtk6.3 libvtk6-dev libqhull* libgtest-dev freeglut3-dev pkg-config libxmu-dev libxi-dev mono-complete openjdk-8-jdk openjdk-8-jre libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
(2)终端进入PCL源码文件夹,编译安装
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install
(3)安装openni可视化库依赖
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
(4)随便找个地方新建文件夹,在文件夹内创建main.cc和CMakeLists.txt,进行cmake编译测试
main.cc
编译结束后再来一次就好啦!!!
三.后记
这一路自是一路的波折坎坷,似有九九八十一难横亘于前,每前行一段,便会遇见意料之外的失败与Error,我们不得不驻足修理,穿梭于茫茫互联网之海,打开一个又一个漂流瓶,满怀期待,期待里面装着解决问题的答案。我们依葫画瓢,很遗憾,问题并未解决,它在那里,它依然在那里,我们又开始翻阅资料,一遍一遍的尝试,直到柳暗花明,重焕前行的希望。不知多少次一小步一小步的前进,我们终究到达彼岸,心旷神怡,热血难凉,所以写下这篇博客,权作纪念,纪念我们在科研领域的第一个尝试,蛮笨,幼稚,且拙劣,但也凝结了我们的努力,热情与经验。
谨以此篇,献给我们行将结束的大一。