首页 文章

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

提问于
浏览
4

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

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

enter image description here

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

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

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

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

(我可能犯了一些英语错误 . 抱歉)

1 回答

  • 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;
    

相关问题