Reduce GPS data error on Android with Kalman filter and accelerometer
blog.maddevs.io
blog.maddevs.io
http://www8.cs.umu.se/research/ifor/dl/LOCALIZATION-NAVIGATI...
The really interesting stuff more recently is using RTK software to get accuracy on the order of 10s of cm with cheap GPS receivers.
Good job fixing that externally!
Of course the difference here is that the extra accelerometer data is involved. It's been a few years since I last worked on GPS chipsets, but I would be surprised if they didn't now incorporate one for this exact reason.
edit: They do: https://www.broadcom.com/products/wireless/gnss-gps-socs/bcm...
"Broadcom's second-generation sensor integration technology, adding accelerometer, gyroscope, magnetometer and altimeter outputs to the positioning engine"
Sure, 99.9% of gps measurements on a sat nav are users going in a straight line - but it's when navigating complex junctions with many turns, traffic circles etc that users most need the sat nav's guidance.
This is also the ideal place to add in additional data such as from an accelerometer. If you only have the calculated position (and speeds, which are useful for figuring out how far you're actually likely to have moved since the last fix) but not the error estimates to work on then you've thrown away much of the useful data.
Perhaps they can take advantage of the better locality of Z index compared to flat index, and/or they want to store higher precision and do lookups with varying precisions (grid sizes)?
* Will these techniques work on a stock Android device for stock programs (ie Google Maps)?
* Will the different (extra?) calculations cause my processor's calculation to go up, killing battery life? I didn't see any testing on this and your statements seemed questionable - "Herewith, the algorithm should not consume whole battery within 3 minutes as well as all available RAM."
Doesn't Android already have similar filters? I would assume they do since they've been in the business for a while.
This looks like great theoretical ideas. I hope you can use it to get a job at Google or turn it into a marketable product.
2. Extra calculations don't consume as much battery as GPS and with this technique we use GPS less often. In other hand we use accelerometer and magnetometer. I tested this by eye :) and didn't find big difference between GPS only solution and presented solution. But as written in article - it doesn't accumulate coordinates.
3. Android already has similar filters. They use Kalman filter and many interesting things. See here : https://android.googlesource.com/platform/frameworks/native/... and other files. They did really huge work here :)
At one point I was looking at building a navigation module for a car using a similar setup to smooth noise, but after some searching I found a paper which showed essentially no benefit from the accelerometer/gyro. The 'drift' on the accelerometer meant it could only filter very fast changes, which the Kalman filter on the GPS board already handled quite well.
I should dig out my little MTK3339 and try to replicate!
Is there any reason this isn't already used?
Of course sensor data can only provide a relative position. After longer intervals of solely relying on the relative sensor-based position small errors can accumulate which makes "synchronization" with GPS necessary to retain accuracy.
The same thing has been taught for hundreds of years in that realm. Her you take it 3D.
I thought that ios and android did this already for a long time.
I work in marine robotics and am interested in experimenting with it to see how it could improve our current nav solution.