为啥将android磁场传感器值转换为地球坐标系时X坐标值如此接近零?

Posted

技术标签:

【中文标题】为啥将android磁场传感器值转换为地球坐标系时X坐标值如此接近零?【英文标题】:Why is the X coordinate value so close to zero when android magnetic field sensor values are converted to Earth coordinate system?为什么将android磁场传感器值转换为地球坐标系时X坐标值如此接近零? 【发布时间】:2016-05-20 23:21:06 【问题描述】:

我正在开发一个从磁场传感器读取数据的 android 应用。 我按照here 和here 的指示将传感器数据转换为地球坐标系。

转换后的数据看起来不错。但是,X 值始终接近于零。下面的第一张图片显示了原始数据,第二张图片显示了转换后的数据。请注意,第一个图中的所有轴值都发生了变化。在第二幅图中,只有 Y 轴和 Z 轴发生变化,X 始终接近于零。有谁知道为什么会这样?

谢谢!

【问题讨论】:

【参考方案1】:

数据正确,world coordinate 中的x 值应该接近0。这是因为假设magnetic field sensor vector 位于世界North-Sky 平面上,因此x-coordinate(东坐标)应该为零。 在第一张图中,x 因设备基础的变化而变化。考虑一个固定的向量,但坐标代表这个向量的变化。因此2个不同的坐标可能代表同一个向量。

【讨论】:

非常感谢您的帮助!如here 所述,地球磁场由 3 轴矢量(北-天-东)表示。所以奇怪的是,android 磁场传感器位于 2D(北天)平面并忽略了东坐标。你知道为什么这个传感器是这样实现的吗?是硬件限制吗? 是的,但是在任何固定的 x 处,矢量都位于北天平面上。我对硬件了解不多,但我认为磁传感器的作用是测量这个矢量,所以这个假设对我来说是明智的。

以上是关于为啥将android磁场传感器值转换为地球坐标系时X坐标值如此接近零?的主要内容,如果未能解决你的问题,请参考以下文章

旋转设备时磁场测量的奇怪行为

我的 iPhone 用户所在位置的参考磁场是多少?

将游戏的 x,y 坐标转换为 Google 地球纬度/经度

如何将 lon/lat 坐标转换为地球表面上 N-E 米的距离?

为啥磁场的值固定为零?

Android上的方向传感器和磁场传感器之间的区别?