正确使用陀螺仪和加速度计在ANDROID上的任何轴上获得可靠的电流角度

时间:2015-04-27 16:08:48

标签: android orientation accelerometer gyroscope

一周前,我对Android Motion Sensors一无所知。在了解了名为Virtual Reality的神奇之物后,我开始搜索使用哪些传感器来获得这些结果。我对APP有一个想法,但我仍然不知道下面的情况应该使用哪些传感器:

我必须自己参考电话方向。我的意思是,我应该能够将每个轴隔离开来。喜欢它的东西:

enter image description here

在这种情况下,使用陀螺仪,我认为这种变化是在Z轴上。 仅使用陀螺仪这种情况我得到了很好的结果,但经过一些重复后,我得到了陀螺传感器的一个着名问题:漂移。

本教程之后: http://www.thousand-thoughts.com/articles/#articles

事情在我脑海里变得越来越明显,但是当我改变设备方向时,我仍然遇到诸如真实运动之间的延迟以及输出和错误输出之类的问题(我认为重力是有罪的)。 / p>

是否有一些代码示例关于如何仅使用陀螺仪和加速计传感器获得每个轴的0 - 360度?

(我可能犯过一些英语错误。很抱歉)

1 个答案:

答案 0 :(得分:1)

以下代码将为您提供正确的倾斜角度,但前提是您的手机Z轴为0.(就像您说明的那样)。 当开始改变Z轴时,它也会成为问题,我仍然在努力。 (*度数减去" - "当向左倾斜时签名" +"向右签名)

float[] mGravity;
float[] mGeomagnetic;


    float[] temp = new float[9];
    float[] RR = new float[9];
    //Load rotation matrix into R
    SensorManager.getRotationMatrix(temp, null,
            mGravity, mGeomagnetic);

    //Remap to camera's point-of-view
    SensorManager.remapCoordinateSystem(temp,
            SensorManager.AXIS_X,
            SensorManager.AXIS_Z, RR);

    //Return the orientation values
    float[] values = new float[3];
    SensorManager.getOrientation(RR, values);

    Double degrees = (values[2] * 180) / Math.PI;