本文只是小白对于视觉slam的一个非常泛的介绍,对于视觉slam中的数学运算均没有提及,适合于对没有接触过视觉slam的新人进行一个简单的科普。作者即小白,文章如有错误,非常非常非常欢迎指正!(重要的事说三遍)
注:文中相机模型图片借用了高翔博士的ppt内容
视觉slam从根本上其实就是为了回答两个问题,机器人在哪,机器人所处的环境是什么样的。这其实和人进入一个陌生的环境时所思考的问题非常相似。比如我们被拉进了一个陌生的屋子,我们会首先观察这个屋子,观察我们处在一个什么样的环境之中,接下来我们就会思考我们这是在哪。机器人同样如此,我们是通过眼睛、大脑来完成,而机器人就是利用摄像头和处理器来实现。
视觉SLAM分为三大主要模块:前端的视觉里程计,后端优化,回环检测。做完这些,就可以进行建图的工作了,也就是我们常说的三维点云图。前端视觉里程计的作用,简而言之,第一是要根据摄像头回传的图像计算相机的帧间运动,第二就是估计路标点大致的空间位置坐标。后端优化的作用就是根据前端在不同时刻计算的相机位姿计算最大后验概率估计,可以起到状态预测的作用。回环检测的作用显而易见,当摄像头在环境中到达了自己曾经先前到达过的位置后,因为传感器和计算过程存在误差,所以通常建立出的点云图都不能做到曲线闭合。回环检测的功能便是判断相机是否回到过先前位置,从而修正误差,保证点云图与实际空间的理想。
从前端视觉里程计讲起。
图像用什么摄像头获取?
1.单目相机 优点:便宜啊 缺点:初始化非常不精确