从磁传感器获取信息

Posted

技术标签:

【中文标题】从磁传感器获取信息【英文标题】:getting info from magnetic sensors 【发布时间】:2010-11-27 23:17:05 【问题描述】:

我正在监听传感器值,并在我的处理程序中使用

    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) 
       for (i=0;i<3; i++) mag[i] = event.values[i];

开发者文档说 Sensor.TYPE_MAGNETIC_FIELD 你得到: “所有值均以微特斯拉 (uT) 为单位,测量 X、Y 和 Z 轴上的环境磁场。”

如何将这些信息转化为方位角、俯仰角和横滚角?怎么把它变成罗盘磁航向?

在完成矩阵变换后,是否只提供从 ORIENTATION 传感器和 ACCELEROMETER 传感器获得的相同信息?

【问题讨论】:

【参考方案1】:

如果您有权使用加速度计,则可以使用getOrientation() 方法,它返回由两个传感器确定并通过getRotationMatrix() 方法计算的方位角、俯仰角和滚动角。

编辑

对 cme​​ts 的回应...我现在看到你的问题了。对不起。仅使用 3 轴磁力计,您无法准确获取方位角、俯仰角和滚动角,除非设备与地球表面平行。还记得使用针罗盘并将其 a) 放在主轴上,以便您可以看到并手动补偿倾斜,或者 b) 密封在液体中,这样您就可以将气泡水平置于中心?获取方位角:

azimuth = arctan(y/x)

现在,如果您倾斜手机,x/y 平面感应的误差会变大。现在你需要算出倾斜度(用加速度计),然后测量Z轴的磁场强度,然后用三个来补偿。这基本上就是您所知道的 getRotationMatrix() 和 getOrientation()。

我认为 API 8 中已弃用 Sensor.TYPE_ORIENTATION 的部分原因是本身没有单独的方向传感器。它是磁场和加速度传感的结合。

我挖出的一篇好论文涵盖了所有内容:

http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf

【讨论】:

明白。我的问题更多的是“你如何对 X、Y 和 Z 轴上的环境磁场值做任何有用的事情?” 你没有!无需重新发明***,只需使用方向传感器和旋转矩阵。

以上是关于从磁传感器获取信息的主要内容,如果未能解决你的问题,请参考以下文章

VueJS 获取 TypeError:删除和添加传感器信息时无法读取未定义的属性

Android 如何获取传感器的数据

修改黑苹果如何驱动硬件传感器?获取CPU温度详细信息教程

黑苹果如何驱动硬件传感器?获取CPU温度详细信息教程

Android_(传感器)获取手机中的传感器

仅从 Xamarin Android 中的 GPS 传感器检索位置信息