读《凌感马赓宇:基于视觉+惯性传感器的空间定位方法》报道回顾

                                                    

      文章开头提到了Oculus Santa Cruz,这是Facebook在2016年的Oculus Connect3时发布的项目,代表了Facebook对VR硬件长期愿景的“未来”,旨在提供一种高端的VR体验,无需外部传感器或PC连接。

      大家可能还记得《头号玩家》中的那种利用VR设备创造出来的“绿洲”世界,笔者对于这项技术心生神往,作为一个在VIO&VSLAM领域里挖坑的读研狗,也想写写自己的感受啥的,当然主要还是介绍这篇报道,废话不多说。

                              

 说回Santa Cruz,我在网上搜索到的最新报道是2018-09-27日凌晨1点,在美国加州圣何塞举行的Oculus Connect5开发者大会上,扎克伯格发布了让人期待已久的代号为“Santa Cruz”产品,而产品的正式名称为Oculus Quest,“小扎兴奋地宣布:这款设备售价399美元,即将于2019年Q1正式发售。”

                 

 “接着他表示,对于VR设备来说,有三点体验非常重要。一是独立一体,无需任何其他设备辅助,能够随时带走且不用被线缆困扰。二是能够在VR中感受到你的双手,三是能够体验6自由度的自由。”

 哈哈笔者期待的“绿洲”是能够感受到全部的自己,需要有一身设备衣,或者由眼镜扫描全身建模,哈哈哈科幻了。说回整题。

这款产品除了将计算单元都集成到头盔中,还在前面增加了4颗摄像头。这些摄像头的作用就是用来实现空间定位的,在Oculus Rift CV1上,空间定位系统需要通过一套外部传感器来实现,这显然不适合移动方案。

许多人都说VR一体机是未来,而移动VR要真正移动起来,就需要摆脱外部空间定位基站的束缚。那么如何用另一种方案来摆脱有线VR通常使用的Outside-in空间定位方案呢?那就是Inside-out空间定位技术,此类方案大都基于计算机视觉技术,包括微软、Google和Facebook在内的科技巨头都在进行相关研究。

这里提到的所谓的Inside-out技术就是SLAM技术,在此指利用视觉传感器和惯性传感器进行空间6自由度定位的技术。

惯性传感器是最近几年才兴起的,主要是因为手机传感器(这方面主要是iphone)的发展,传感器的精度也逐年提高。

手机里面的陀螺仪现在基本可以达到0.01度的误差,加速度计误差虽然稍微大一点,如果用来估计指尖运动也可以起到很大的辅助作用。

空间定位方法简介

SLAM是同步定位与建图技术,在此处的用途就是利用视觉传感器和惯性传感器获得的数据加以相应的算法,估计设备在场景中的位姿,侧重于定位方面。  

在VR场景里面, 因为需要模拟出头部运动后一些虚拟物体在场景中的位置,所以要实时得到头部相对于世界的位置。图示中头部位置有六个参数,三个表示旋转,三个表示位置。旁边有手和控制器,意思是在VR的应用里除了要知道这个设备相对于世界的位置还要知道手相对于设备、以及控制器相对于头盔或世界的位置。

然后作者讲到VR场景与其他的应用场景相比,对SLAM的性能要求有哪些不同,在VR环境下对用户影响较大的几个指标是:

延时,也就是说头部运动之后一般二十毫秒之内就能把运动反馈到渲染部分;(这条应该是对渲染部分的性能要求)

相对位置精度,很小的运动都能识别;

稳定性,如果头不动,识别出来的结果不能左右抖动。

相对不太重要的指标,一是loop closing,比如在院子里走了一圈,回到起始位置时它识别的结果是否和刚才的起始位置重合。戴上VR头盔以后看不到世界场景,有可能一米的误差也感觉不到。二是绝对误差,戴上头盔以后头部转了100度,识别出来90度,实际用户也体验不到;第三个就是绝对位置,意思也是相同,误差要求不高。

下面介绍了几种陀螺仪的原理,也即是角速度计,这里因为不是重点不再说明,但要知道的是它们可以得到的是三轴角速度,陀螺仪的精度很高,手机上的采样率可达到100hz,一些先进的头盔可达到1khz的采样率,相对来说,加速度计的精度比较低,误差可以达到0.1米每秒方的加速度,如果用加速度进行积分,经过1秒钟的累计误差就会达到0.05m。

上图是比较两种方式,Outside-in的方法是假设传感器在外面,头盔上的marker点在摄像头成像算出二维或三维的位置,设备角度通过IMU来得到,如果角度有误差,位置是不会影响的。Inside-out的方法是头盔上有摄像头用来识别外部的点。

然后讲到基于视觉的3D立体几何原理,上面图片就给我们展示了SLAM是同时估计相机位姿和3D点坐标,借此我们也了解到相机是如何把3D点投影到图像平面的,SLAM中Localization是相机定位,mapping求解3D坐标,在此时只知道图像坐标u,v,需要求解相机的R,T以及3D点的(x,y,z),这就需要多帧图像,需要多个这样的方程组求解。

上面所展示的是需要的进阶基础知识,首先是四元数,用四元数表示旋转,因为在用欧拉角表示旋转时,无法保证表达的连续性。欧拉角的一个重大缺点是会碰到著名的万向锁问题(Gimbal Lock):在俯仰角为±90°时,第一次旋转与第三次旋转将使用同一个轴,使得系统丢失了一个自由度(由3次旋转变成2次旋转),这被称为奇异性问题,在其他形式的欧拉角中也同样存在。理论上可以证明,只要想用3个实数表达三维旋转,都会不可避免地碰到奇异性问题。由于这种原理,欧拉角不适合插值与迭代,往往只用于人机交互中。我们也很少在SLAM程序中直接使用欧拉角表示姿态,同样不会在滤波或优化中使用欧拉角表示旋转(因为它具有奇异性)。

其次是要了解各种非线性方程组的求解算法高斯牛顿,梯度下降,LM等等。还有李群李代数勇于表达旋转,可以带来很多便利。

 

上面说道,VSLAM算法一般包含两部分,Localization和Mapping部分,而对于Visual+IMU融合的研究主要是在Localization模块,通过融合提高位置估计的精度。而在前端估计出位姿后,交给后端优化部分工作,主要是有两类优化方案,一个是基于滤波的方案,一个是基于非线性优化的方案。

纯Vslam方法主要有两种,一个是基于特征点的SLAM方法,依赖于场景中的特征点检测和匹配,但是有时候会遇见特征点明显较少的情况,比如一面白墙;另一种就是直接法,是通过图像像素匹配来优化相机位置的,近几年有一些state-of-art直接法,比如LSD-SLAM和DSO-SLAM,它们的效果是基于纯视觉算法中最好的了,但是如果在快速旋转的情况下,还是会出现较大误差。

Vision+IMU融合

Vision+IMU融合的产品包括HoloLens、Tango和高通的一体机。它的好处是:

通过IMU可以减小图像匹配的搜索范围,在VR环境下头快速旋转时可以达到每秒180度的速度,如果没有IMU的话,相邻图像里边搜索的范围可能会很大。这种融合的方案可以在很少或者没有特征点时继续跟踪,Tango一个比较好的性能就是,在没有特征点,比如扫过一面白墙时,也能基本正确地跟踪一两秒的时间。

可以在图像帧间预测位置,因为摄像头的采集速率一般比较低,可能每秒30帧、60帧,最快有300帧(Intel),而IMU可以达到每秒1000帧或者更高,如果把imu加到图像帧间预测,那么SLAM就可以以每秒1000帧的速率输出位置,而不是只在有图像的时间输出位置。高通的VR820就可以以800Hz的速度输出头部运动的结果。

手机里边有很多传感器,陀螺仪可以输出采样时的角速度,加速度计可以输出这个时刻的加速度,还有磁场传感器,GPS。有些手机里自带的融合算法,将磁场、陀螺仪和加速度计整合到一起输出一个方向,这个方向的误差就会很小。

IMU的速度很快,1000Hz,但是相机的速度很慢,需要有一个解决的办法。

SLAM需要输出的,不单是有图像时刻相机的R和P,还有图像之后通过IMU积分的,当前最新时刻的R和P。这就涉及到IMU的预积分知识了。

 

 

 

 

 

 

参考资料:

http://www.sohu.com/a/119892067_383098

http://www.sohu.com/a/256482769_549351

http://www.vrrb.cn/kuaixun/news/20180927/77248.html

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值