0

Im wanting to know if anyone knows of a way using the data that the ibeacon is sending to the phone can you than use that to calculate its longitude and latitude. Being the fact that I know the Long and Lat of the phone using core location (ios, objc) I was thinking there would have to be a way to than take the distance signal data to calculate the long and lat of the beacon. Any ideas?

Im using the estimote iBeacons and their SDK.

Matt
  • 3,305
  • 11
  • 54
  • 98

1 Answers1

3

Bluetooth Low Energy (BLE) devices do not report their location; all they do is broadcast a tuple: (UUID, Major, Minor). Ranging of BLE devices is approximated based on the signal strength received, making any distance measure applied to it never 100% accurate.

Because of this, you will be unable to accurately detect the lat/long of a particular iBeacon. All you know is that it is within some short distance from your phone's current location. You don't even get a direction -- signal strength is a one-dimensional value and it isn't even linearly related to distance. It can be modified by lead walls, signal interference, signal boosting, and many other factors.

In short, iBeacons do not intrinsically report their lat/long and detecting distance from you to a particular iBeacon is not yet possible with a sufficient level of accuracy. The best you can do is say "I detected an iBeacon and my current location is (lat/long). The iBeacon is probably within x metres." Where x is based on signal strength and is provided with the caveat that it is an vague approximation.


Edit:

An alternative would be to record the lat/long locations of where you expect to be placing your iBeacons, then set up a server somewhere (or you could just code it right into the build if you're not worried about having to update it on the fly) that will translate the Major/Minor pair into a lat/long using a database lookup that you create.

Ian MacDonald
  • 13,472
  • 2
  • 30
  • 51
  • Hi Ian, Thanks for the reply. If this is the case, how does estimotes indoor sdk plot out a room based on your relative location to the beacons http://estimote.com/indoor/? I would have thought that the beacons would have to know distance and directions to handle this? – Matt Oct 08 '14 at 21:10
  • To use Estimote's Indoor functionality, it is your job to define where the beacons are in your space using an `ESTLocationBuilder`. Using a combination of signal-strength-to-distance estimation and triangulation, they can position you within the space using the known physical locations of the beacons. I am not sure how they evaluate orientation, but it may be a combination of the above positioning with the accelerometer of the device; calculate a baseline first, then use the accelerometer from there on out to keep the orientation synchronized. – Ian MacDonald Oct 08 '14 at 21:20