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

Posted

技术标签:

【中文标题】磁场、旋转矩阵和全局坐标【英文标题】:Magnetic Fields, Rotation Matrix And global coordinates 【发布时间】:2013-03-21 12:34:39 【问题描述】:

我认为我已经阅读了有关此主题的所有帖子,但我仍然无法理解一些事情:

第一季度: 为了得到全局坐标中的磁场矢量,我需要将反转的旋转矩阵和磁场矢量相乘,为什么我需要反转旋转矩阵?

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

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

第四季度: 理论上,假设我有两个彼此相距 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

【问题讨论】:

你能澄清一下 Q2 吗? “我和磁北之间的方位”?您想要测量您的方位而不依赖于手机的姿态? 手机怎么可能知道你面对的方向? 我不知道这是否可能,这就是我问这个的原因。让我澄清一下:如果我将磁场矢量与 inv(R) 相乘,我将得到一些矢量,旋转手机不会影响(至少不会太大)值。我在问我是否可以得到一个角度来指示北方在哪里,无论手机的方向如何? 【参考方案1】:

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

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:

A1。旋转矩阵告诉您手机在世界坐标中的位置。如果您想将手机坐标中的磁矢量转换为世界坐标,则必须乘以逆。

A2。不太明白这个问题,抱歉。

A3。 x坐标是磁力的横向分量,对应于北极与磁极的偏差或类似的东西。它应该很小,与z坐标相同,即垂直分量。

A4。理论上这可能可行,但考虑到您的 android 设备中传感器的精度,这种方法似乎不太可行。

【讨论】:

A1.我知道我应该乘以逆,但为什么我需要反转矩阵。 A2.我想要我和磁北之间的方位,它固定到我当前的位置,所以如果我旋转手机,角度不会改变。 (不使用 GPS 或其他位置提供商)。 A1.如果要将世界坐标转换为手机坐标,则旋转矩阵是必须乘以的矩阵。要执行相反的转换,您需要倒置矩阵。 好吧,说得通 :) Q2 呢?有人吗?

以上是关于磁场、旋转矩阵和全局坐标的主要内容,如果未能解决你的问题,请参考以下文章

矩阵、虚数与坐标变换

旋转矩阵和变换矩阵的概念和区别

三维坐标旋转矩阵

求顺时针旋转变换对应的矩阵

旋转矩阵公式

矩阵的平移旋转与缩放