
Show HN: FIND – an indoor positioning system for smartphones and laptops - qrv3w
https://github.com/schollz/find
======
fabulist
For those of you curious how it works, it's a parasitic radar system using the
wireless APs of you/your neighbors to triangulate it's own position.

[https://github.com/schollz/find/blob/master/FAQ.md#how-
does-...](https://github.com/schollz/find/blob/master/FAQ.md#how-does-it-work)

~~~
qrv3w
> it's a parasitic radar system

That's an accurate description, though I'd avoid the negative terminology. The
system does derive its data from nearby WiFi routers, but it is in no way
exploitative, like real parasites. WiFi scanning is something all smartphones
do all the time, so this system merely tries harnessing it into something
useful at the same time.

As for the technical side - this system uses a Naive Bayes estimator for the
signal levels from mac addresses, as well as the presence of mac addresses it
sees during scans. Before it can be used it needs to "learn" by visiting all
the locations you want to identify. After learning it "tracks" by classifying
the location used the Naive bayes estimators.

~~~
fabulist
Parasitic is a technical term.

~~~
PaulHoule
Passive might be a better term.

------
roel_v
This would be a valuable addition to other methods of determining presence in
building automation systems. What would it take/cost to build a tiny dedicated
device that would wake up every, say, 5 seconds, analyze wifi signals (what's
called the 'fingerprint' in this system if I understand correctly) and ping
the server with that data? More concretely, would it be possible to build such
a device for low prices (<50USD) with > say, a month, of battery life?

~~~
jakobegger
It would probably be best to use a microcontroller instead of a full cpu. I
really like the Particle Photon. It costs $20 and is a joy to work with. It
barely needs any power in sleep mode, and you can set it to wake up at
scheduled intervals. Depending on the battery you use, a month of battery life
shouldn't be an issue if it sleeps most of the time.

There are other microcontrollers with Wifi and similar capabilities that are
even cheaper, like the ESP8266 at around $5, but I haven't worked with those
before.

EDIT: I just saw you want it to wake up every five seconds --- in that case
sleep won't help much and you'll need a big battery for a month of use, since
wakeup and scanning for networks takes a few seconds. Waking up less often
(eg. every 15min) would be more feasible, but it really depends on your
intended use.

~~~
qrv3w
Home automation has always been my main goal. I've been working with some
electronic devices as you mentioned. For those interested, Sparkfun has "The
Thing":
[https://www.sparkfun.com/products/13231](https://www.sparkfun.com/products/13231)
which is a good way to get into the ESP8266. I've also tried using Raspberry
Pis, which works pretty well but are still too big with the battery to go
carry around a building. I'm hoping to try the Pi Zero in the future with a
small LiPo battery.

~~~
jakobegger
This looks neat; the integrated Lipo charger is a welcome add-on.

------
logibly
Awesome, I wonder what this combined with some electronic automation can do.
Eg, I walk into a room and lights turn on, i walk out, lights turn off
(depending on time of the day etc).

~~~
pavs
Motion sensored room light has been available for at least 15-20 years.

~~~
fabulist
This is billed as a replacement for motion sensors in home automation. Though
it does beg the question, "what if someone moves their router?"

~~~
pavs
It adds a lot of complexity and point of failure for a system that I can
install for 15 bucks from most hardware stores (with a solid track record).

~~~
laumars
Yes, but your detector creates more problems than it solves:

* pets set it off,

* it cannot differentiate between different objects in motion. So several people could be moving at the same time and it would only trigger as one event,

* it cannot detect people who are present but motionless (eg watching TV),

* it doesn't remember how many people are present in a room, so you could have 2 people watching TV then when 1 person leaves the detect would think the room is empty,

* it requires multiple detectors,

* detectors are generally visible, which some might find an eyesore (at least WiFi APs can be hidden a little more as fewer needed).

I'm not saying FIND is perfect either, but you have implied that your solution
works just as well as FIND and stated that your solution is less complex;
which is simply is not true. Your solution creates more problems than FIND and
addressing them creates just as much complexity (as I detailed in my other
post:
[https://news.ycombinator.com/item?id=11519159](https://news.ycombinator.com/item?id=11519159))

~~~
watty
Motion detectors have a variety of usage, outdoor lighting, indoor room
lighting, grocery store fridge lighting, etc. FIND is a bit more specialized
because of the huge drawback of requiring each user to carry a specific
device.

I can't use it at my work because we don't all have Android. I can't use it at
home because my wife uses in iPhone. Cool idea but limited use compared to
motion detectors.

~~~
laumars
Indeed, but that was never in dispute. FIND was never pitched to replace
motion detection sensors to begin with. The argument was whether motion
detectors are comparable to FIND for the specific specialised problem that
FIND addresses to solve; not whether FIND can replace all the generalised
purposes that motion detection is utilised.

My point was always that the two technologies aren't necessarily
interchangeable and in an indirect way you're just saying the same thing with
your counterargument.

~~~
watty
The original comment was about turning lights on and off. You implied FIND is
better than motion detectors at this ("your solution creates more problems
than FIND..."). In most cases this is false, due to the negatives I outlined
above.

~~~
laumars
I think the confusion here is there's two different use cases for turning
lights on and off.

I have acknowledged in another post that motion detectors are advantageous if
you're dealing with strangers and/or situations where there's lots of movement
and/or lights that can be automatically timed out. eg public spaces halls,
public restrooms, security lights, etc. But I don't think it's fair to lump
these in the same category as "home automation".

Home automation is a little more of a complex problem as you need the lights
in the room to not only turn on when someone enters, but also turn off when
they leave. Motion detectors can spot someone moving in a room but they're not
to great at detecting when people have left since it's the same sensor that
would be triggered. They're also not great at detecting if people have entered
a room and are still in the room if those people have stopped moving (eg they
are watching TV) - since those people aren't triggering the motion detection.
And lastly, motion detection isn't great at detecting the number of people in
a room - which matters if you don't want the lights to turn off when someone
leaves the room but other people are still in there and watching TV.

Motion detection solved some of the problems of home automation, but creates
some problems as well. Which is why I said motion detection is just too
simplistic of a solution for home automation despite it being a great solution
for other types of automating lighting.

Granted you could place more sensors, network them up, and have a centralised
unit logging movement. That would likely work. But then it quickly becomes as
complex as the solutions we're trying to avoid.

However even if all these things were easily addressed, motion detection still
has issues for me personally as I have two cats. This is the beauty of proper
home automation systems: they give you the granularity to personalise things
so pets don't set off the same triggers that people do. Or my two year old
doesn't trigger the same automation that my wife and I do (eg unlocking the
front door). This is where I think the future of home automation lies and is
what really gets me excited.

So you're right that there is overlap between motion triggers lights and home
automation; but the latter is intentionally a more complex problem by design.

------
ccozan
What is wrong with inertial navigation? Just need to mark a starting poing (
like, your house door ) and then just walk around and mark the places.

I've seen in the past some Android apps that do this, not sure now what's the
situation.

EDIT: found some paper about it and how it worked: [http://hkr.diva-
portal.org/smash/get/diva2:475619/FULLTEXT02...](http://hkr.diva-
portal.org/smash/get/diva2:475619/FULLTEXT02.pdf)

~~~
hansjorg
The problem is integration drift. I don't think it's really feasible to do
inertial navigation with a smartphone.

The paper you linked is also discussing use of WiFi and Bluetooth.

Edit: here's a good overview:
[http://stackoverflow.com/a/7835988](http://stackoverflow.com/a/7835988)

------
woodcut
There was a startup in Berlin called 42 Reports that was built around this
idea but for tracking people in shops and malls, word is it bombed owing to
the technology just not being accurate enough, i think now they've pivoted and
scraped an exit.

~~~
PakG1
Isn't this why beacons and iBeacon are supposed to be the next big thing in
retail? I've got a friend who just got hired to do sales in Asia for a beacon
company. Apparently, they're blowing up (or trying to)?

------
lhaussknecht
They claim a typical accuracy of 10 square feet (< 1 square meter) which would
be really really good. Even systems with beacons are not better.

~~~
qrv3w
Don't take my word for it, you should try it out!

It really depends on how many routers are in your area. For places in cities,
there are tons and tons of routers so its very easy to get pretty good
resolution. For places more remote, you might not see many routers and then
you would be for more limited in your resolution.

~~~
thenomad
Assuming you wanted to very precisely map a small area (50mx50m or so) to the
maximum resolution possible, and you had a budget sufficient to buy and place
20 or so wifi routers, what sort of resolution could you get?

I'm looking at this for gaming applications. Don't need milimeter accuracy but
+- 30cm would be good.

------
onecooldev24
Can some one explain me, why just not use bluetooth LE? I understand you need
BLE beacons, but any other reason.

~~~
lhaussknecht
No, you don't need beacons here. It works using "fingerprints" (and machine
learning) of nearby APs.

~~~
qrv3w
Right. Bluetooth beacons are a piece of hardware you would have to buy.
Basically this tries to accomplish the same thing with just software. Here
there is no hardware other than the server (which is provided) and a client
computer (which you probably already own).

------
asadlionpk
Cool project. I have tried using both wifi and IMU motion sensors for mapping
indoor and it's not really that impressive yet. This is still a very hard
problem to solve. Google seems to be working on it:
[https://www.google.com/atap/project-
tango/](https://www.google.com/atap/project-tango/)

There have also been many other projects like
[http://wearnotch.com/](http://wearnotch.com/)

For now, External distance cameras (Kinect-like) seems to be the most accurate
and usable method. Something like what these quadcopters use:
[https://www.youtube.com/watch?v=AiCFtmdrvHM](https://www.youtube.com/watch?v=AiCFtmdrvHM)

~~~
qrv3w
Thanks for the links! I haven't seen those.

I know that this already exists in many variations:
[https://github.com/schollz/find/blob/master/FAQ.md#doesnt-
th...](https://github.com/schollz/find/blob/master/FAQ.md#doesnt-this-already-
exist)

Still, I've never seen one that is open-source that works pretty well, so I
thought I'd put mine out there.

------
greggman
~10sq feet in resolution

Seems like that should be in the first 3 lines of the description, not near
the end of the FAQ.

Very cool project.

------
magic_man
Once finger printing has been done can that info be shared with other cell
phones?

~~~
Sanddancer
I don't see why you couldn't. You're just shipping serial numbers through the
air at that point.

~~~
rasz_pl
devices have different antennas, in different places and with different
orientation.

~~~
fabulist
A wifi antenna should always be vertically oriented because radio waves are
polarized, and if you aren't in line with the polarization you'll lose gain.

~~~
rasz_pl
What is the polarity of ipad antenna on your lap? :) Then you have multipath
(reflections). This is why wifi cards had diversity switch and two antennas
even before MIMO, and with 11n gained spatial diversity and beamforming.

random google result: [http://www.theruckusroom.net/2011/06/a-polarizing-
problem.ht...](http://www.theruckusroom.net/2011/06/a-polarizing-problem.html)

------
11thEarlOfMar
Thinking about corporate applications...

Does it accommodate mobile APs on smart phones or personal hot spot devices?
Seems those might confuse it in an enterprise setting.

Also, I would assume that the software will differentiate APs with the same
SSID as in an enterprise situation and rely on MAC IDs. But just so I don't
have to assume, can you confirm that it does?

~~~
qrv3w
> can you confirm that it does?

Yes, it will differentiate APs with the same SSID as it relies on MAC IDs. I
use it at my university with no problem (which is an enterprise situation).

> Does it accommodate mobile APs on smart phones or personal hot spot devices?

It uses mobile hot spot information, however if the hot spots disappear it
will not affect the results too badly, as long as there are some permanent AP
fixtures. Anecdotally, I've used this system in airports (which house many
personal hotspots) and it still has good recognition.

------
zyxley
For this to replace motion sensors for home use, I think it'd have to run on
an Android smartwatch, and one of the ones that's slim enough that you'll
actually wear it all the time.

It still wouldn't work so well, though, for basic use cases like "turn on the
dimmer lights to 40% if I enter the bathroom in the middle of the night".

~~~
qrv3w
That's an awesome idea! I'll look into that!

~~~
zyxley
The closest to 'ideal' would probably be one of those fitness band form-
factors that can be and is intended to be worn at all times, but I don't know
if any of those can run general-purpose Android without having a terrible
battery life.

~~~
qrv3w
There may be ways of making a client that doesn't need Android - like a simple
WiFi chip that simply sends the information needed by the server. I'm
currently looking into this!

------
pavel_lishin
Awesome. I tried creating something like this to help get around our very
confusing corporate headquarters, but gave up. I will almost certainly use
this now!

