ORB-SLAM的基本介绍

要解决的问题

相机(camera)将现实 3D 场景投影到 2D 成像平面上,2D 成像平面经过采样得到数字图像(离散的空间点阵,离散的RGB取值),这从3D物点坐标到2D像素坐标的映射公式自然是已知的。

相机是运动的,并在运动的过程中以一定的FPS(Frame Per Second)摄像,利用这个数字图像序列来估计(estimate)自身位姿(pose),理想情况下一幅数字图像(one frame)对应一个位姿。

这个问题解决的难点在于各个环节的误差/噪声,肯定会出现误差扩散,最后积累起来的误差肯定对性能有影响;同时,要减少计算量,否则硬件算力跟不上一切白谈。

第一步

ORB要解决的问题是从一幅数字图像上找特征点(feature point)的集合,之后在不同的数字图像间做特征点匹配。

特征点的属性有位置、描述向量(descriptor);如果来自两幅数字图像的两个特征点的描述向量相近,那么这两个特征点就是同一个 3D 物点的像点。

先介绍几个英文缩写:

  • ORB:Oriented fast and Rotated Brief
  • FAST:Features from Accelerated Segments Test
  • BRIEF:Binary Robust Independent Elementary Features

FAST 算法用于挑选出特征点的位置;BRIEF算法用于给特征点计算描述向量,长为128~512的bits序列。

从特征点匹配的性能而言,对ORB的总体评价是运行快、效果好。两幅数字图像,每幅都能找到大量的 ORB 特征点,特征点匹配是大致以描述向量的汉明距离近为目标,需要各种过滤的策略,如果不限制场景和某些场景的大量的试验,效果不靠谱。

第二步

第一幅数字图像的位姿是参照物,参照物的位姿是给定的。每幅数字图像的位姿是未知变量,一幅一个位姿;匹配上的特征点所对应的3D物点的位置是未知变量,匹配的特征点集合作为一个约束对应一个3D物点。约束质量越高越好,个数可能越多越好。

求解的算法是把这个问题描述成最小二乘问题,其中损失函数(loss function)是重投影误差函数(re-projection function)。至于计算出来的答案合不合理、精度够不够,那是要在具体场景下的大量试验验证的。

这里有很多的策略,比如Key frame、Map point、BoW、LoopClosing等,去掉低质量的约束、增加高质量的约束,这样使得最小二乘问题的解更可靠。

从sensor配置上看,从mono到stereo到multi到IMU(Inertial Measuement Unit),增加了其他形式的约束,这样也可使得最小二乘问题的解更可靠。

思考

随着时间的推进,希望计算的结果越来越收敛而且收敛到正确的方向,所以整体上是个不断有新测量信息进来、不断迭代计算的过程,所以不能用在自动驾驶,ORB-SLAM只能用在扫地机这种慢速还容忍试错的场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值