Guest User

Untitled

a guest
Aug 16th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. Android sensor: getRotationMatrix() returns wrong values, why?
  2. A=R*A'
  3.  
  4. public void onSensorChanged(SensorEvent event) {
  5. synchronized (this) {
  6. switch(event.sensor.getType()){
  7. case Sensor.TYPE_ACCELEROMETER:
  8. accelerometervalues = event.values.clone();
  9. break;
  10. case Sensor.TYPE_MAGNETIC_FIELD:
  11. geomagneticmatrix =event.values.clone();
  12. break;
  13. }
  14. if (geomagneticmatrix != null && accelerometervalues != null) {
  15. float[] Rs = new float[16];
  16. float[] I = new float[16];
  17. SensorManager.getRotationMatrix(Rs, I, accelerometervalues, geomagneticmatrix);
  18. float resultVec[] = new float[4];
  19. float relativacc[]=new float [4];
  20. relativacc[0]=accelerationvalues[0];
  21. relativacc[1]=accelerationvalues[1];
  22. relativacc[2]=accelerationvalues[2];
  23. relativacc[3]=0;
  24. Matrix.multiplyMV(resultVec, 0, Rs, 0, relativacc, 0);
  25.  
  26. //resultVec[] is the vector acceleration relative to world coordinates system..but doesn't WORK!!!!!
  27.  
  28. }
  29. }
  30. }
  31.  
  32. float[] Rs = new float[9];
  33. float[] I = new float[9];
  34. SensorManager.getRotationMatrix(Rs, I, accelerationvalues, geomagneticmatrix);
  35. float resultVec[] = new float[4];
  36.  
  37. resultVec[0]=Rs[0]*accelerationvalues[0]+Rs[1]*accelerationvalues[1]+Rs[2]*accelerationvalues[2];
  38. resultVec[1]=Rs[3]*accelerationvalues[0]+Rs[4]*accelerationvalues[1]+Rs[5]*accelerationvalues[2];
  39. resultVec[2]=Rs[6]*accelerationvalues[0]+Rs[7]*accelerationvalues[1]+Rs[8]*accelerationvalues[2];
  40.  
  41. Rs separated by " " Rs[0] Rs[1]....Rs[8]
  42. Av separated by " " accelerationvalues[0] ...accelerationvalues[2]
  43. rV separated by " " resultVec[0] ...resultVec[2]
  44.  
  45. `(0.00112, -0.0004, 10)`
  46.  
  47. resultVec[0]=Rs[0]*accelerationvalues[0];
  48.  
  49. Rs[0]: 0.24105562
  50. accelerationValues[0]: 6.891896
  51. resultVec[0]: 1.1920929E-7
  52.  
  53. Rs[0] = 0.2;
  54. resultVec[0] = Rs[0] * 6.8
  55.  
  56. Rs[0] = 0.2;
  57. accelerationValues[0] = 6.8
  58. resultVec[0] = Rs[0] * accelerationValues[0];
Add Comment
Please, Sign In to add comment