Intertial navigation on android phone with Kalman filter Ok, so suppose I've got a phone with gyroscope, compass and 3-d accelerometer.
I wanted to track position of the moving phone for about 1 minute with let's say 50 mm accuracy. Actually let's say that I wan't to create some sort of pedometer.
Is this possible?

I already know that the signal from accelerometer is too noisy to calculate position through double integration after really small amounts of time because of the giant drift.

But I want to know if it's possible with some domain knowledge using Kalman filter?
So in my case I know that the phone would be in the users hand and it wouldn't accelerate more than some amount X m/s^2 and that velocity wouldn't be more than some V m/s and so on. Would that be possible in that case?

Also how to create covariation matrix for the accelerometer, gyroscope and compass?
The quick answer is that its not really possible to get the position information from a phone IMU with gyroscope, compass and accelerometer. Even with a Kalman filter its too unreliable to get any linear acceleration signal that can be integrated to give position. I have looked at a lot of Kalman filter papers for IMUs and at best, the linear acceleration is treated as a nuisance term. The three sensor IMU with Kalman filter does however give pretty solid 3D rotation estimates.