2

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.

Dmitry Tupikin
  • 85
  • 1
  • 10

1 Answers1

0

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.

Community
  • 1
  • 1
Ali
  • 56,466
  • 29
  • 168
  • 265
  • First off all, thanks for your answer. Previously I founded your posts with the very usefull links. But I'm not sure you saw my point. Imagine that the second task just describes stable INS. In this case I don't need to calculate rotation matrix to converte device's coordinate system into world's one. Hence I don't need gyro to complete the second task. Right? I agree that linear accelerometer very noisy. My tests also proof it =) But I try to find some combination of different filters to reduce it. – Dmitry Tupikin Feb 14 '12 at 10:10
  • I need INS calculations only for maybe one minute, just to continue position tracking when GPS and other location services aren't enabled. At the moment I try to adapt some Kalman filter modification and I hope it will help me. BUT, my question is just about the issue I found. Acceleration values are different on several devices. Amplitude is the same which says that generally speaking it works. But peak values are different. – Dmitry Tupikin Feb 14 '12 at 10:11
  • @DmitryTupikin Please read the linked answer. No matter how accurate your acceleration data are, you will get into trouble because of the **gyro** white noise. With MEMS sensors you can integrate for a few seconds at best. – Ali Feb 14 '12 at 10:30
  • I've checked your comment and red once again the links provided in it. As I understand you suppose that gyro's white noise affects accelerometer data and to prove it you mention 6.2.3 section from Woodman's work. But I can't find something about that in that work. White noises are described for both sensors - accelerometer and gyro, but there's no dependency beetwen acceleration weird data and gyro white noise. So how did you decide that gyro's noise is guilty of accelerometer inaccuracy? – Dmitry Tupikin Feb 14 '12 at 14:42
  • @DmitryTupikin I know it for a fact because I also tried this integral with the Shimmer sensor :) If you read carefully section 6.2.3 it gives you a simple numerical example proving that it is the gyro white noise that screws up the integral. The only remedy is to use a ring laser or a fibre optic gyro but these are not acceptable for smart phones :) – Ali Feb 14 '12 at 15:32
  • You know, I don't use attitude calculation at the moment just assuming that this is a stable platform. That's why I don't use gyro directly. Maybe gyro affects my linear accelerometer during SensorManager removes a gravity. I don't know :) But you completelly right that even small noise can broke all my efforts. – Dmitry Tupikin Feb 14 '12 at 15:45
  • BTW, I'm still not sure that my issue with different acceleration values on Xoom and Sensation was caused by gyro white noise. I'll make tests with plain 3-x axis accelerometer because in this case gyro can't be involved. And update my general question with these findings. – Dmitry Tupikin Feb 14 '12 at 15:51
  • @DmitryTupikin Your problem might be due to inaccurate calibration of the device. You will need the gyros, you guessed it right, they are needed to remove gravity. And you will fail there with the MEMS gyros... It doesn't matter whether you fix your current problem or not, you won't be able to do the next step, the integration. – Ali Feb 14 '12 at 18:13