ARSessionConfiguration.WorldAlignment = .gravityAndHeading的不稳定世界原点/对齐方式

Hal*_*ler 7 ios swift arkit

[注意:这个问题是在iOS11/High Sierra预发行期间针对ARKit的测试版编写的.仅保留历史利益]

我看到的世界坐标系原点不稳定的位置和方向,当我设置ARWorldTrackingSessionConfiguration.worldAlignment.gravityAndHeading.

场景打开后原点的位置稳定.但是轴通常围绕Y轴旋转180度或90度.

我还缺少一个额外的设置吗?我正在运行2017 iPad(vanilla,而非Pro)和Xcode 9 beta 2.我在这台iPad上测试了一些指南针应用程序,它们给了我正确的结果,所以我相信硬件运行正常.

override func viewDidLoad() {
    super.viewDidLoad()

    // Set the view's delegate
    sceneView.delegate = self

    // Show statistics such as fps and timing information
    sceneView.showsStatistics = true

    // Create a new scene
    let scene = SCNScene()

    // debug options
    let debugOptions: SCNDebugOptions = [ARSCNDebugOptions.showFeaturePoints,ARSCNDebugOptions.showWorldOrigin]
    sceneView.debugOptions = debugOptions

    // Set the scene to the view
    sceneView.scene = scene
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Create a session configuration
    let configuration = ARWorldTrackingSessionConfiguration()
    configuration.worldAlignment = .gravityAndHeading
    configuration.planeDetection = .horizontal

    // Run the view's session
    sceneView.session.run(configuration)
}
Run Code Online (Sandbox Code Playgroud)

这里有一些样本(所有这些样本我都面向南方).

正X和Z指向西和北(不正确,180度异相):

在此输入图像描述

正X和Z指向东南和西南(接近正确):

在此输入图像描述

正X和Z指向东和南(正确),但原点移位了几米:

在此输入图像描述

正X和Z指向南和西(相位相差90度):

在此输入图像描述

.gravityAndHeading文档:

y轴与设备的运动传感硬件检测到的重力方向相匹配; 也就是说,向量(0,-1,0)指向下方.

x轴和z轴与位置服务测量的经度和纬度方向匹配.向量(0,0,-1)指向真北,向量(-1,0,0)指向西.(也就是说,正x轴,y轴和z轴分别指向东,向上和南方.)

小智 0

我偶尔会得到随机世界原点,其中 Y 轴不与重力对齐,但可能倾斜 45 度。这是在 Xcode 9.1(测试版)和 iOS 11.0.3 上。如果我重置会话,它会重新正确检测 Y 轴。(我正在使用重力和标题)。

至于前进方向,我在市中心一座新的多层金属/砖/灰泥建筑中。室内磁北探测几乎是不可能的。我已经用许多不同的设备对此进行了广泛的测试。(我正在做无人机导航)。症状是由于磁场极低而向北漂移。所以有时它会起作用,但可能会在几秒钟内改变+-90度。

看起来你正在室内进行测试,有一些砖墙......