Manual location setup using ESTLocationBuilder


Hi, I’m trying to get more accurate results in determining position in manual builded location. I’m using 4 beacons for rectangular shape location. I have some questions:

  1. Could I get more accurate results using 6 beacons instead of 4? If yes, what is the way to add it in code? Should I add the second beacon for the same boundary segment?

  2. I’ve noticed, that setLocationOrientation: method is critical because depends on this value I get very different results. In all, determining position with CLLocationManager or, I think, gives sometimes not accurate results. Could SDK engineers tell what is the relations between degrees to the magnetic north and current position? Is it really critical? How to get proper degree value without fluctuations?

  3. Maybe someone could give general advices about getting more accurate results. For example, what location’s size is optimal? (my test location is 8.8m x 5.1m = 44.88 sq. m). From what material walls must be made of? (I have one glass wall in my room.) What is the allowable fluctuation in determining position and how it depends on location’s size? (As I understand, it’s 1 - 1.5m?)


Indoor location beacon detection

Hi Sasha!

  1. Yes, 6 beacons should give you better results. Exactly as you guessed - just add second beacon to the same boundary segment.

  2. SDK uses absolute orientation of the location to calculate relative (to the location) orientation of the user. The more accurate value the better user experience as people tend to easily catch misalignment and also the better position accuracy.
    To determine location orientation if the measurements are noisy:

  3. Pick some place possibly far from electrical cables, walls, big metal objects.

  4. Kill It will force recalibration when started.

  5. Start and note value after it settles down.

  6. Repeat steps 2 and 3, 5-7 times and calculate average.

  7. 6 beacons should give you good results and mitigate the effect of glass wall. It would be best to put only one beacon on the glass wall.

Let us know how it worked for you :slight_smile:
Good luck!


I still have bad results and have prepared a list of questions again :blush: As i said, I’m using 6 beacons for not large locations.

  1. What broadcasting power should I use, if I use for experiments locations with square about 20 and 40 square meters?

  2. While I’m using IndoorLocation SDK and ESTIndoorLocationView to determine my position inside location, I monitor each beacon separately with ESTBeaconManager and I receive many garbage values: it’s wrong distance often (for example, 10-20m in location which has dimensions about 4m X 5m) or drops in rssi (-1). The question is: do you use some math in SDK to reduce these fluctuations and give more accurate result or don’t you and that’s why I often see in ESTIndoorLocationView “wandering” circle across the screen which shows me my wrong current position although I’m not moving and staying on one place?

  3. What info should I provide to you (location size, code, log info with statistics etc.) after which you could say “you’re doing it wrong” or “you’re doing it right” and how to know, what result and what accuracy should I expect? (You don’t answer me about allowable fluctuation in determining position) Because for me, it doesn’t still work and shows me random results and I still don’t understand, what results you can guarantee with your SDK.


  1. Indoor is calibrated around beacons with maximum broadcasting power and advertising interval 200 ms or less, so make sure your beacons are configured like that. Also, it’s absolutely critical to have the basic power saving mode disabled.

  2. Yup, we do a lot of complex math in Indoor Location to combat the RF challenges. The regular SDK is not really meant to give you distance estimate, just the proximity zones. Note that the there’s no “distance” property on the CLBeacon, only accuracy, which Apple explains as:

    one sigma horizontal accuracy in meters. Use this property to differentiate between beacons with the same proximity value. Do not use it to identify a precise location for the beacon.

  3. I think it’d be good to start by double-checking the configuration of your beacons, as per #1. Like Marcin said, glass wall is not perfect, but it shouldn’t affect accuracy too much if the remaining beacons are on solid walls. From our internal tests, 44 sq. should give you an accuracy of about 1.5 m. What device are you testing with?

  1. It’s clear, “Basic Battery Saving” is off, but what about “Smart Battery Saving”? Does it matter?

  2. Yes, I’ve read about accuracy before, but I use your ESTBeacon distance, not CLBeacon accuracy. And I thought it’s different things. Is it true or you just “duplicated” Apple’s property? ESTBeacon distance = CLBeacon accuracy?

  3. I’m using iPhone 5S.

New questions:

  1. What is z coordinate for each beacon position on the wall: z = wall height / 2. Am I right?

  2. Whether is there a correlation between speed of movement inside location and accuracy in determining position? It seems that the higher speed the better accuracy?

I’ll do changes in setup and will try to test again, and tell you about results. Thanks :blush:


Smart Power Mode doesn’t affect Indoor Location at all, but can lead to better battery life when the beacon’s not in use, so feel free to turn it on (:

Yes, in SDK 2.x we’ve simply renamed Apple’s “accuracy” into our “distance”. It kind of made sense, since the general consensus in the iBeacon community at that time was that it really is an approximation of distance. However, as iBeacon started moving out of the hands of early adopters and more and more developers took interest in the technology, we felt this nomenclature resulted in many unrealistic expectations. Hence, in SDK 3.x, we got rid of ESTBeacon, and decided to stick with CLBeacon and it’s “accuracy”.

The beacons are meant to be positioned around chest height.

I don’t think speed of movement should affect the accuracy a lot—it’s rather whether you’re moving at all or not. Do your observations indicate otherwise?


I’m new with Indoor SDK and trying to map my room with LocationBuilder. The SDK looks not so hard to handle it, but I have some questions. In my comprehension you have to set the boundaries for the location. You can place beacons, doors and windows. In description of the SDK (in Readme) was written “add details such as beacons, walls, doors on boundary segments”.
Now my questions. How can I set walls?
If I generate an JSON file one point is linearObjects. What this argument is used for?

Another question is, what is the best way to transform my room parameters from meter to the coordinate system?
Actually I say 1 meter is 1 point. So 6,50m have the coordinate x=6.5. Is there a better way to specify my room?

edit: All done
On is a great description and example for all my questions.


@dasdany could you let me know, whether have you satisfied with the results, accuracy etc. or haven’t? :blush:


Hey @sashakid, I did not tested yet. First time I can test it on Friday. I can tell you more, when I’m done.


The question is: are you satisfied? (:


I’ve read the posts above and I have a question too.I’m not sure I clearly understood what value should I choose when I call the setLocationOrientation: method.It’s said there in the method specs that:“Sets the orientation of the room with respect to the magnetic north. Counted clockwise in degrees.”.
I can find me and my device orientation using the compass app, but I Don’t Know How Should I Position Myself So My Orientation To Be Same With The Location Orientation.I’ve been thinking about this and I’ve position myself with my back at the room’s door as I would enter the room, and opened the compass app.The question is, it’s this ok? I have to mention that the door is placed on the first boundary segment (wall). Thank you very much.


The flow is more or less like this:

  1. Orient yourself along the Y axis of your location. For example, looking at the room attached to this StackOverflow question, you can stand anywhere in the room as long as you have the Beacon2 in front of you, Beacon4 behind you, Beacon1 to your left and Beacon2 to your right. Here’s my crude attempt to depict that: (the arrow shows which way to face)

  1. Open the compass app and read the value it shows. Note that due to magnetic fluctuations, it might be a good idea to measure this in multiple parts of the room, and take an average or the most common value.

  2. Put this value into the setLocationOrientation:.

  3. Profit! :moneybag: :smile:


Super! I understand now. Thanks very much.