从磁传感器获取信息
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() 方法计算的方位角、俯仰角和滚动角。
编辑
对 cmets 的回应...我现在看到你的问题了。对不起。仅使用 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 轴上的环境磁场值做任何有用的事情?” 你没有!无需重新发明***,只需使用方向传感器和旋转矩阵。以上是关于从磁传感器获取信息的主要内容,如果未能解决你的问题,请参考以下文章