Android Tilt issue with Accelerometer and Magnetometer -


i trying detect yaw, pitch & roll using following code:

    @override     public void onsensorchanged(sensorevent event) {          if (event.sensor == maccelerometer) {             system.arraycopy(event.values.clone(), 0, mlastaccelerometer, 0, event.values.length);             mlastaccelerometerset = true;         } else if (event.sensor == mmagnetometer) {             system.arraycopy(event.values.clone(), 0, mlastmagnetometer, 0, event.values.length);             mlastmagnetometerset = true;         }         if (mlastaccelerometerset && mlastmagnetometerset) {             sensormanager.getrotationmatrix(mr, null, mlastaccelerometer, mlastmagnetometer);             sensormanager.getorientation(mr, morientation);              morientation[0] = (float) math.todegrees(morientation[0]);             morientation[1] = (float) math.todegrees(morientation[1]);             morientation[2] = (float) math.todegrees(morientation[2]);              mlastaccelerometerset = false;             mlastmagnetometerset = false;             managesensorchanges();         }     } 

this works fine apart 1 issue;

when phone up-side-down or starts go up-side-down (even if tilted little forward in portrait mode), angles go haywire ... spitting out random angles!

why happening - , - solution this?

in case 1 stuck issue:

strange behavior android orientation sensor

in summary, trouble use of eulers angle - there little can done sort above issue @ extreme angles of device ... apart using quaternions (which suitable opengl or 3d projections).

i using 2d drawing on app (to create parallax effect), ended using accelerometer values (range -9.8 9.8) ... works , annoyingly easy solution crude needs. technique not acceptable 3d projection... if needing precise measurements, see https://bitbucket.org/apacha/sensor-fusion-demo.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -