mozilla / ichnaea

Mozilla Ichnaea
http://location.services.mozilla.com
Apache License 2.0
574 stars 139 forks source link

Get better accuracy (range) when mobile phone supports neighboring cells #288

Closed Gitschubser closed 8 years ago

Gitschubser commented 10 years ago

My mobile phone supports neighboring cells. In GSM mode i see as maximum 6 cells (with valid LAC, Cellid and signal strength) and the serving cell. In UMTS mode the data are maybe not very useable (only psc). Now the question: Could the accuracy (value range) be better if you have more than one cell? With 2-6 existing neighboring cells the position could be better calculated as with one cell and give a better value range. Maybe the static value range at the moment could get a better value when use more than one cell (and send them logically to MLS).

hannosch commented 10 years ago

We already use all complete cell records in the position estimate.

In order to improve the accuracy numbers, we need to get a better idea about the cell sizes. Currently we cannot distinguish between a small cell and having too little data about the real cell size. So we only really know that the position estimate of each cell is somewhere inside the cell area, but don't really know much about the size of the cell. So we cannot really do an intersection of the cell areas either, to limit the possible area, as the underlying data is not trustworthy enough.

For now we therefor put in a minimum value for cell based searches and don't report an accuracy of less than 5km. Our focus is still on quantity of data and getting a cell hit at all.

mishari commented 10 years ago

Hi,

Just my 2c, this data is semi permanent. We also have mobile cell that is used on occasion for adding capacity to special events such as concerts and people with wireless access point can move them around.

I propose that we split the world into a predefine grid of, say, 10x10 meters with each grid containing an id of the cell + wireless access points present in that grid and a timestamp of the last time a specific cell/ap was seen. If it hasn't been seen in that location for a determined period of time, such as 30 days, while other entries with similar characteristics (A/B/G/GSM/LTE etc.) have been, it is safe to assume that it's no longer at that location and can therefore be purged from the database.

Based on this we can then also determine the cell size by seeing how many grid locations it's visible in.

This technique should also help in cleaning data from misbehaving devices and practical jokers.

On Tue, Aug 5, 2014 at 11:09 PM, Hanno Schlichting <notifications@github.com

wrote:

We already use all complete cell records in the position estimate.

In order to improve the accuracy numbers, we need to get a better idea about the cell sizes. Currently we cannot distinguish between a small cell and having too little data about the real cell size. So we only really know that the position estimate of each cell is somewhere inside the cell area, but don't really know much about the size of the cell. So we cannot really do an intersection of the cell areas either, to limit the possible area, as the underlying data is not trustworthy enough.

For now we therefor put in a minimum value for cell based searches and don't report an accuracy of less than 5km. Our focus is still on quantity of data and getting a cell hit at all.

— Reply to this email directly or view it on GitHub https://github.com/mozilla/ichnaea/issues/288#issuecomment-51219868.

Best regards Mishari Muqbil

twitter: @mishari blog: www.mishari.net phone: +66818240629

hannosch commented 10 years ago

@mishari thanks for your comments. The approach you mention is generally referred to as "fingerprinting" in the literature. It's more commonly used for WiFi based indoor location. We have considered it, but fine-grained fingerprinting requires a lot more data (you need multiple data samples for each grid cell) and the search algorithms are also a much more complicated. Finding the "best matching grid" or a number of equally likely grids can be done via pattern matching or genetic algorithms, but it's definitely not a simple key lookup anymore (the key being the unique cell id or wifi bssid).

Based on what we have seen you can get to decent accuracy numbers based on the simpler approaches. It's only when you want to get consistently below 100 meters or in environments with a lot of obstacles or interference that the fingerprinting approach might offer better results. But getting those accuracy numbers is only possible if you have indeed a lot of data for an area. Generally speaking we have too little data in most places to make this approach practically useful at this stage.

hannosch commented 9 years ago

For cell networks, we almost never get complete enough information from neighboring cell networks. Practically this only works in LTE networks. But in those networks the cell radii are already smaller, so the returned accuracy is also already better.

hannosch commented 8 years ago

Closing this issue, as it was originally about improving the accuracy estimates we return when we have data from multiple cells. We improved this in mid-January for cell and wifi networks. Our returned accuracy numbers are much lower these days and are based on all cells.