Holoelens中的SLAM技术

0.来源:https://www.vrtuoluo.cn/9671.html

1.传感器:4个环境感知摄像头感知设备相对位置的偏移但不能对周围环境建模,一个深度摄像头但不能单独对环境建模,一个IMU(惯性测量单元)负责感应设备方向。即:环境感知摄像头+IMU负责“我在哪(定位)”问题,环境感知摄像头+IMU+深度摄像头负责“我周围有什么(三维场景重建)”问题。

4个环境感知摄像头中,两个靠内摄像头朝前,两个靠外摄像头分别朝向左右两边。主要靠内摄像头起作用。(why 4个摄像头对应单目SLAM算法?

2.技术:单目视觉和RGBD类

2.1 单目视觉:提取图像中特征,对相邻帧图像特征匹配,根据匹配上的关键特征点计算出摄像头相对场景位置。

2.2 RGBD类:通过红外光或TOF(Time-of -Flight)原理,直接测出图像中像素距离相机的距离。HoloLens的深度摄像头用的是TOF原理,即通过从投射的红外线脉冲反射回来的时间来获得深度信息。由于使用红外线,也正是为什么HoloLens对黑色表面识别不好的原因。HoloLens的三维场景重建利用(没有完全使用KinectFusion建图与跟踪的整体框架,而是用环境感知摄像头通过特征匹配取代KF结构中通过两帧点云(Point-to-plane)ICP算法去计算位姿,以供点云融合优化。)的是Richard Newcombe发明的Kinect Fusion(原理、开源/使用)

  Hololense的点云重建过程:

       a)读入的深度图像转换为三维点云并且计算每一点的法向量。

       b)相机的追踪。Kinect Fusion是计算得到的带有法向量的点云,和通过光线投影算法根据上一帧位置从模型投影出来的点云,利用 ICP 算法配准计算位置,但深度摄像头的精细度并不高,如果HoloLens采用深度图数据来计算HoloLens位置,误差会挺大,全息场景也不会稳定固定在空间里。所以相机的位置用的是环境感知摄像头计算出来的。(所以这也是Hololense无法仅通过深度摄像头构建三位环境地图的原因。)

       c)根据相机的位置,将当前帧的点云融合到网格模型中去。

       d)根据当前帧相机位置利用光线投影算法从模型投影得到当前帧视角下的点云,并且计算其法向量,用来对下一帧的输入图像配准。

   如此循环,通过移动相机获取场景不同视角下的点云,重建完整的场景表面。

结语:目前对SLAM的研究依然还在继续,由于产品和硬件高度差异化,而SLAM相关技术的整合和优化又很复杂,导致算法和软件高度碎片化,市场上真正能在实际应用中运用SLAM的产品不多。而能够将IMU 、环境感知摄像头、深度摄像头各取所长,完美融合在一起,这里要给微软硬实力手动比心。

4. 可能会用到的技术:

(1)Hololens有空间锚点WorldAnchor记录空间信息,可以在多个Hololens设备上通过共享锚点同步。

         ARkit及ARcore利用手机摄像头捕捉,感知环境,实现和Hololens相同的空间能力。ARkit/ARcore与Hololens之间可以通过扫描Mark图片确定空间统一锚点,借助云锚点,创建 Android 和 iOS 用户可以共享的多人或协作型 AR 体验。这样ARkit,ARcore,Hololens设备之间可以实现同步,共同AR体验,也可用于Holelens的第三视角共享

(2)hololens shader pack 全息材质库,链接如下。使用这些着色器可以在HoloLens设备上运行,从而提高HoloLens的开发效率。 如special mapping shader、hologram surface shader。

https://download.csdn.net/download/shanguuncle/10343532

(3)Unet共享

           效果(什么是Unet共享):启动应用程序,两台hololens(可以更多台)看到同一个UI面板,点击"显示发动机"(哪一台都可点击),之后在空间中出现一台发动机,两个hololens看到是在同一位置,其中一人用手拖拽移动发动机,另一人的视野中发送机也相应移动,两人可以随便操控。视频链接:

https://img-blog.csdn.net/20170831155104766?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2hhbkd1VW5jbGU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(4)浏览器连接hololens观看第一视角。链接https://blog.csdn.net/ShanGuUncle/article/details/77806731

(5)微软必应语音认知服务-文字语音互转,语义分析。链接https://blog.csdn.net/ShanGuUncle/article/details/77867424

(6)Hololense API:

        (6.1)WorldAnchor          命名空间UnityEngine.VR.WSA

                空间锚组件允许游戏对象的位置被锁定在物理空间中。例如,一个在物理桌上的立方体和一个空间锚的应用将保持固定,即使观察者在房间里走动。

        (6.2)Input-GestureRecognizer          命名空间UnityEngine.VR.WSA.Input

               使用API来识别用户动作的管理类。

               GestureRecognizer :Hololens手势识别,完成点击,拖拽等操作。

               InteractionSource:代表一个被检测到的手、控制器或用户声音的实例,它可以引起交互和手势。

               InteractionSourceKind:指定交互源的类型,例如手势和语音指令。

  (7)Win10 UWP开发https://blog.csdn.net/ShanGuUncle/article/details/78111649

  (8)HoloLens视频通讯,全息视频,第一视角,AR空间标注https://blog.csdn.net/ShanGuUncle/article/details/97379496

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值