Click here to Skip to main content
15,886,258 members
Please Sign up or sign in to vote.
1.57/5 (3 votes)
I need to capture the floor plan of a building using the fingerprint method for indoor localization, to enable me locate a user in a building. The fingerprint map will be put on an X-Y co-ordinate graph, to make location easier. I plan on doing this with the C# programming language. And also would like to try magnetic fingerprinting method.

Any ideas of how I can do this or any other easier methods to going about this would be highly appreciated. Thank you for your contributions.

What I have tried:

I have checked various articles, but non seem to show how to go about, they basically just describe how their own system works.
Posted
Updated 14-Jan-18 6:10am

1 solution

There is no "easy method" for this. Each corporate implementation is proprietary and it cost them a LOT of money and research time to develop. As far as I can tell, there is no public implementation available.

My wife works for a company that does this very thing in large buildings, but not to the point of locating a person at a specific X,Y location in a room. You just know "this person or thing is IN such and such room". It's NOT cheap to do just at that level.

Your problem is going to be sensors. How are you going to physically determine where in the room a person is? "Fingerprinting" does you no good unless you've got data to process coming from some sensors.
 
Share this answer
 
Comments
Stephen Dauda 17-Jan-18 4:40am    
I plan on using Wi-Fi access points as my sensors. So on the map i create, I should be able to store the positions of the Wi-Fi access points in my database, which i think is the fingerprinting, so the floor plan will be placed on an X,Y co-ordinate, and the Wi-Fi access points will be placed by there as static points (reference points). Then i would by myself store different positions on the map database as possible places where the user could be at.
And that i think is fingerprinting, storing each possible point on the database, with the Wi-Fi access points also stored on it, then using the database to estimate the position of the user.

I don't know if that makes sense to you?

But basically i need help with drawing a graph or co-ordinate on C# and adding the floor plan to it, so that it somehow merges.
Dave Kreskowiak 17-Jan-18 19:35pm    
We tried a commercial version of something like that and found it wasn't accurate at all. You could get a position down to a rather large section of a floor, not a room. The problem is WiFi signals reflect off of everything, and everyone, making an accurate triangulation based on signal strength pretty much impossible. Stand with a laptop in a conference room and you'll get a signal strength from the access point. Now, put a second person in the room without moving the laptop and it'll get a different set of signal strengths to each access point!

There is no real "fingerprinting" here (Google for "audio fingerprinting" for what that really means.) It's just standing in a location, getting signal strengths from your access points (which can vary even when you're standing still!) and putting that point of data in your database associated with a location coordinate.

What you're going to get when you "search" on the strength data is a list of possible locations, probably wildly varying all over the floor/building plan. You search has to cover a range of values because you're not going to a solid, unchanging strength to search on.

Want to try it yourself? Stand in one place with a laptop running a signal strength monitor. You'll see that the strength changes constantly. Now, turn 180 degrees and keep watching the signal strength. It'll keep changing and vary by more than 20%.

Other than that major problem, you're just clicking a point on an image and saving the X,Y coordinate of that click. Add that to the database as a location with a unique identifier and start collecting your signal strength data. Any of that data you save to the database will have to be associated with the ID of the point you created when you clicked and saved the X,Y coordinate.


Stephen Dauda 21-Jan-18 4:14am    
Okay. I understand.

What if I try using magnetic field intensity rather than the access points. The magnetic field intensity varies from position to position due to the varying amount of steel present in each area. This should be a good method to test out, right?

And if so, how can i go about collecting and storing the different magnetic intensity readings in different areas and storing them into a database.
Dave Kreskowiak 21-Jan-18 11:57am    
LOL! You have the SAME problem. Do you have any idea how many magnets and electromagnets are running around an office floor, both stationary and mobile?

Also, you need magnetometers in every device you're going to track. Smart phones usually some them for a compass, but not every magnetometer is the same. Some have a resolution good enough to find North and that's about it. Laptops don't usually have them.
Stephen Dauda 23-Jan-18 8:36am    
But, it isn't meant for laptops, but mobile devices. And i don't need it to be 100% optimal, but for it to work to give me a proof of concept.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900