我正在监听传感器值,并在我的处理程序中使用
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轴上的环境磁场。”
如何将这些信息转换为方位角、俯仰角和滚动角?如何将其转换为罗盘磁航向?
在完成矩阵变换后,是否仅提供从方向传感器和加速度传感器获得的相同信息?
发布于 2010-11-28 10:25:54
如果可以访问加速度计,则可以使用getOrientation()方法,该方法返回通过两个传感器确定并通过getRotationMatrix()方法计算的方位角、俯仰和侧滚。
编辑
回复评论...我现在明白你的问题了。抱歉的。仅使用三轴磁强计,除非设备与地球表面平行,否则无法准确获得方位、俯仰和滚动。还记得使用指南针,让它a)在主轴上,这样你就可以看到并手动补偿倾斜,或者b)密封在液体中,这样你就可以让气泡水平到达中心了吗?要获取方位角,请执行以下操作:
azimuth = arctan(y/x)现在,如果你倾斜手机,x/y平面感知中的误差可能会变得很大。现在,您需要计算出倾斜度(使用加速计),然后测量Z轴的磁场强度,然后使用这三个轴进行补偿。这实际上就是您所知道的getRotationMatrix()和getOrientation()。
我认为Sensor.TYPE_ORIENTATION在API8中被弃用的部分原因是因为本身没有单独的方向传感器。它是磁场和加速度感应的结合。
我找到了一篇很好的论文,涵盖了所有的内容:
http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf
https://stackoverflow.com/questions/4294449
复制相似问题