Search code examples
androidaccelerometerandroid-sensors

Android linear accelerometer's values are different on several devices


I'm working on Android navigation app which uses complex of sensors to determine position changes. In some cases device cannot achieve GPS signal for a while (tunnel or multilevel parking) and I want to compensate these gaps using INS approach.
Yes I know that there're another approaches like cell-id or data got from device's carrier, but currently I'm focused on sensors.

Well, INS approach can be divided into two big tasks:
1. attitude determination (gyro or accelerometer + magnetometer or some combination)
2. velocity and distance calculation. Here I double integrate linear accelerometer values.

Now I try to resolve the second task. I prepared all calculation and made contrastive analysis of data got from linear accelerometer on different Android devices: Sensation, Motorola Xoom and Nexus S. I put all devices on a platform and moved the platform on 8 meeters with an acceleration on Y axis.
After that I built graphics and they really confused me - all 3 graphics has the same amplitude but peak values are different.
For example at the same moment I have 0.2 m/s^2 on Xoom and 1.2 m/s^2 on Sensation.
Hence after calculation I had a big difference in distance.

Official documentation doesn't explain it. I surfed the web but didn't find any answer about that issue.

So my question is: did someone faced to it? Or maybe you know an advice which will help me to solve it?

In addition, android Sensor class has few parameters. I found that Sensation and Xoom has different RESOLUITON values - Sensor.getResolution().
Sensation - 1.0
Xoom - 0.009576807

I'm stack with it, so any help will be really good! Thanks in advance.


Solution

  • You cannot solve your second task with MEMS sensors.

    You would need a fibre optic gyroscope or a ring laser gyroscope to solve your second task.

    Although I talk about calculating position in the above linked answer, the same holds for velocity.