天天看点

解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 1 讲 预备知识

温馨提示,嘻嘻:我写这个系列博客的目的是,通过解读《视觉SLAM十四讲》,将自己当初学习这本书时,困惑的不解地方进行填坑,所以书中已经详细说明的内容,我不再赘述,对于书中省略的内容,我觉得很有用的东西,我会在后面的博文中和大家分享。所以大家想通过我的文章学习,你一定要先阅读过《视觉SLAM十四讲》对应一讲的内容之后,再看我的总结和解读。

第一讲 预备知识

1.原书主要内容

在第一讲中作者主要介绍了,一些学习SLAM的准备工作,包括本书的主要内容、如何使用本书等。其中最重要的一段就是解释什么是SLAM:

SLAM是Simultaneous Localization and Mapping的缩写,中文译作“同时定位与地图构建”。它是指将搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。

别的内容,大家看原书就可以了。

2.解读

在第一讲,作者虽然没有介绍太多实质性的东西,但是第一讲中实际包含的内容并不少。

尝试运行ORB-SLAM2

我觉得对于对于一个初学者来说,在学完第一讲之后,你可以把当前最流行的视觉SLAM系统——ORB-SLAM2下载到你的电脑上,然后运行起来,看一下视觉SLAM实际的效果,这么做一方面可以让你熟悉Linux电脑的使用,另一方面可以了解一下当前最好的单目视觉SLAM框架。

  

  ORB-SLAM是目前纯视觉SLAM框架中最为流行的,它是由Raúl Mur-Artal和Juan D. Tardós完成的,在2015年发表在IEEE Transactions on Robotics上,2016又进一步升级增加了对深度相机、RGB-D、双目相机的支持,推出了ORB-SLAM2。

  该项目的网站是:http://webdiis.unizar.es/~raulmur/orbslam/

  该框架的源代码托管在了GitHub上:https://github.com/raulmur/ORB_SLAM2

什么是Git和GItHub

GitHub是全球最大的代码托管平台,任何人都可以将自己的代码托管在上面,我们在电脑上可以通过Git直接将我们的代码上传到GitHub的仓库里。GitHub是一个存放代码的仓库,Git是管理代码的一个工具,Git你可以简单的理解成是一个备份工具,它可以保护你的代码,可以恢复到任何状态。如果你不会使用请你找一个教程大概了解一下怎么使用,不需要会太多,目前会用它下载代码就可以。当你会使用Git之后,你就可以将GitHub上的ORB-SLAM2的源代码下载下来了,网址就在上面。

(请忽视我先说了Git后说的Linux系统的顺序,实际你在使用的时候,肯定是要先装Linux系统,然后才能使用Git)

推荐使用的Linux系统

理论上说,你可以使用任何系统的电脑,去运行你下载的ORB-SLAM2的源代码,但是因为Linux与生俱来的优势,所以我们做工程的一般都是选用Linux系统,这一点当你用过Linux系统之后,你就知道为啥了,Linux系统有很多发行版本,其中使用最为广泛使用的是Ubuntu版本,当然还有别的一些很好的发行版。Ubuntu和Linux的关系,就相当于小米手机系统和谷歌原生安卓系统的区别,小米只是把安卓系统拿过来做了一些深度定制。你可以在你的电脑上装上Ubuntu系统,关于装Ubuntu系统的方法太多了,请自行百度,建议安装双系统,不建议使用虚拟机,Ubuntu系统选用16.04的版本。

  

  安装上Ubuntu系统之后,你就可以把ORB-SLAM2的源代码下载到你的电脑上了。下载下来之后,请参考README.md文件中的步骤编译ORB-SLAM2,如果你的电脑是新安装的系统,那么一定会碰到编译失败的问题,这里面可能会是因为你缺少各种库文件,对于这种问题,我们常常采用的方法是,缺什么就安装什么。这里的编译过程请自行百度,网上的资料非常全,你在安装的过程中,一定会碰到非常非常多的问题,如果你是一名刚刚开始使用Ubuntu系统的初学者,请你一定要非常耐心的去百度搜索这些问题,请不要觉得繁琐,初学都必须要经过这一步。

  

  我强烈建议大家,去编译跑通ORB-SLAM2的代码,如果你是初学者,你可以了解到终端的使用,了解到Linux常用命令的使用,你还能了解到如何在Linux系统上构建一个工程,更重要的是你能直接看到SLAM的运行效果,这对于初学者来说能直接看到效果,那是何种的兴奋啊!我相信当你看到你的电脑上跑起来ORB-SLAM2的时候,你一定会激动不已。

Vim

在第一讲的习题部分,作者介绍到让大家学习一下Vim。Vim就是一款文本编辑器,它所要完成的工作就是像你Windows上使用的记事本一样,但是它绝不是一个简单的文本编辑器,它的强大是你想象不到的,它可以使用几个按键就能完成平常通过记事本几个小时才能完成的内容,高效的背后也就意味着你要学习的东西很多,学习门槛很高,我个人建议,初学者先别接触Vim,更不要去接触Vim的插件,那会浪费你非常多的时间。

总结

这一讲的解读,实际对于书中的内容,并没有什么可以补充的,主要是推荐大家在Ubuntu16.04上把ORB-SLAM2的代码给跑起来,为了避免内容过于冗余,我省略了很多操作的细节。不要小看跑通一个代码,如果你没有这样的经历,请一定实际尝试一下,这里面你会面临很多的问题。

又有温馨提示了,嘻嘻:对于我们工科生,特别是搞工程的,你一定要培养自己解决问题的能力,如果你这方面能力还不够,那么你一定要抓住每一次实际操作的机会,只有亲身试验之后,你才会发现问题,发现问题之后解决问题所获得的知识和能力才是最提升自己的。对于这个我有一些经验告诉你,当你在百度上进行搜索的时候,如果你的关键词过多,以至于搜索结果太少,那么你就要优化你的关键词,多用一些行业内的术语,或者删除一些关键词,但是这样你就会多花一些检索信息的时间。如果百度也获得不到答案,你最好还是想办法使用上谷歌搜索,用谷歌加上英文关键词搜索,一定会解决你的问题的。总之当你碰到问题的时候,你一定要想方设法的去解决它,不要留下疑惑,这对刚开始学习的你来说很重要。

继续阅读