augmented-reality - ARCore 使用哪些传感器?
问题描述
ARCore 使用哪些传感器:兼容手机中的单摄像头、双摄像头、IMU 等?
此外,如果通过切换到其自身不太准确的版本而无法使用传感器,ARCore 是否足够动态以继续工作?
解决方案
更新:2021 年 7 月 24 日。
关于 ARCore 和 ARKit 传感器
GoogleARCore
和 AppleARKit
都使用一组类似的传感器来跟踪真实环境。ARCore
可以将单个RGB相机与IMU一起使用,什么是加速度计,磁力计和陀螺仪的组合。60
您的手机以fps运行世界跟踪,而Inertial Measurement Unit
以1000
Hz 运行。此外,ARCore 中还可以使用另外一种传感器——用于场景重建的 iToF 相机(Apple 的名称是 LiDAR)。ARCore 1.25 支持Raw Depth API 和 Full Depth API。
阅读 Google 对基于 Camera + IMU 的 COM 方法的评价:
Concurrent Odometry and Mapping
– 电子设备跟踪其在环境中的运动,同时构建用于fixing a drift
跟踪运动的环境的 3D 视觉表示。
这是 Google US15595617专利:用于并发里程计和映射的系统和方法。
- 2014...2017 年 Google 倾向于
Multicam + DepthCam
config(Tango 项目) - 在 2018...2020 年谷歌倾向于
SingleCam + IMU
配置 - 2021 年谷歌回归
Multicam + DepthCam
配置
我们都知道,Android 设备最大的问题是校准。iOS 设备没有这个问题(因为 Apple 控制自己的硬件和软件)。校准质量低会导致 3D 跟踪出现错误,因此您的所有虚拟 3D 对象都可能在跟踪不佳的场景中“浮动”。如果您使用没有 iToF 传感器的手机,则没有防止不良跟踪的神奇按钮 ( and you can't switch to a less accurate version of tracking
)。在这种情况下,唯一的解决方案是从头开始重新跟踪您的场景。但是,当您的设备配备 ToF 摄像头时,跟踪质量会更高。
以下是获得良好跟踪结果的四个主要规则(如果您没有 ToF 相机):
跟踪你的场景不要太快,不要太慢
跟踪适当的表面和对象
跟踪时使用光线充足的环境
不跟踪折射物体的反射
水平面比垂直面更可靠
SingleCam 配置与 MultiCam 配置
ARCore 的最大问题之一(这也是 ARKit 问题)是Energy Impact
. 我们知道帧速率越高,跟踪的结果就越好。但是 30 fps 的能量影响是HIGH
60 fps 的VERY HIGH
。这种能量影响会很快耗尽智能手机的电池(由于 CPU/GPU 的巨大负担)。所以,想象一下你为 ARCore 使用了 2 个摄像头——你的手机必须以 60 fps 的速度并行处理 2 个图像序列,以及处理和存储特征点和 AR 锚点,同时,手机必须同时渲染动画 3D 图形具有 60 fps 的高分辨率纹理。这对你的 CPU/GPU 来说太多了。在这种情况下,电池将在 30 分钟内耗尽,并且会像锅炉一样热))。似乎用户没有
推荐阅读
- jersey - 通过 jersey API 添加非预定数量的文件及其各自的元数据
- python-3.x - 如果列表中的字符串以 (character) 结尾,如何删除它?
- angular - 带有角度路由器的 Ionic 4 setRoot
- uwp - Windows 本地应用程序运行正常,但 Windows 商店中的应用程序有一些问题
- sql - Postgresql / Timescaledb中的分组填补空白
- javascript - AJAX请求未在php页面中发送完整数据
- c# - 格式化使用 npgsql 的 datagridview
- android - 如何通过单击按钮重新加载(刷新)WebView 内容?科特林
- java - 带有泛型的静态工厂方法
- c# - 为什么 System.Web.Mvc 中有 ExpressionHelper.GetExpressionText?