gpt4 book ai didi

android - 磁场、旋转矩阵和全局坐标

转载 作者:行者123 更新时间:2023-11-29 15:23:36 38 4
gpt4 key购买 nike

我想我已经阅读了所有关于这个主题的帖子,但我仍然无法理解一些事情:

问题 1:要获得全局坐标中的磁场矢量,我需要将反转矩阵与磁场矢量相乘,为什么我需要反转旋转矩阵?

问题 2:假设我有一个设备,我可以使用 getOrientation(...) 方法根据沿 Z 轴的旋转计算方位角。我可以使用旋转矩阵或其他一些方法来计算磁北的方位角,而不管手机的姿态如何?那么,如果我旋转手机,我和磁北之间的角度将保持不变?

问题 3:当我将磁矢量(第 4 列为零)与反向旋转矩阵相乘时,我得到 x 非常接近于零。我从其他帖子知道这是可以的,但我不明白为什么?

Q4:理论上,假设我有两个设备,彼此相距 1 米,是否可以仅根据它们的磁场(在全局坐标中)来确定两个设备的空间位置

提前致谢。

附言我已经阅读了这些帖子: Getting magnetic field values in global coordinates , How can I get the magnetic field vector, independent of the device rotation?

Convert magnetic field X, Y, Z values from device into global reference frame

最佳答案

如果您在 Convert magnetic field X, Y, Z values from device into global reference frame 阅读我的回答你还是不明白。

A1。将旋转矩阵乘以设备坐标系中磁场矢量的坐标,得到磁场矢量在世界上的坐标坐标系。

强调一下:上面说的是旋转矩阵,不是倒旋转矩阵。

调用getRotationMatrix得到的旋转矩阵是基矩阵从设备基到世界基的变化。即给定任意一个在设备坐标系中有坐标的向量v,同一个向量v在世界坐标系中的坐标可以通过乘以旋转矩阵<得到/strong> 与设备系统坐标中的坐标。

反转矩阵是基矩阵从世界基到设备基的变化。因此,当您将该矩阵与坐标相乘时,它被解释为将该矩阵与世界坐标系中的向量坐标相乘,以获得设备坐标系中相同向量的坐标。因此,如果您将反向旋转矩阵磁传感器 返回的磁场矢量 的坐标相乘。然后坐标被解释为世界坐标系中矢量的坐标,因此表示磁场矢量,结果乘积不是< strong>世界坐标系中的磁场矢量。实际上它是一个向量在设备坐标系中的坐标。

A2. getOrientation仅当设备是扁平时才有意义。对我来说,这只是一堆角度计算。我查看我尝试做的几何学,然后使用旋转矩阵来计算我想要的。比如计算后置摄像头指向的方向,我看成是-z的方向(与屏幕正交的向量的反方向)。因此,为了找到这个方向,我将 -z 投影到世界 东西北平面 并计算此投影矢量 之间的角度>北轴。现在,如果您这样想,那么设备的旋转将不会改变-z 的方向,因此投影矢量 与您旋转设备时相同。如果你使用 getOrientation那么你必须预先调用remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR)对于 getOrientation给你正确的结果

A3. getRotationMatrix假设地磁参数 是完全位于北天平面 中的向量的坐标。那么位于该平面内的任何向量的 x 坐标都必须等于 0。这只是基本的线性代数。

A4. 答案是否定的。要获得空间位置,您必须相对于固定 坐标系来表达这些向量。只有这些向量在设备坐标系中的坐标,您无法找到一个固定基来计算基矩阵从设备基到这个固定基础。需要满足我上面链接中所述的 2 个条件才能计算基础的变化。

关于android - 磁场、旋转矩阵和全局坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547691/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com