Situm has the ability to re-compute a route if the user goes out its way. This is a nice feature if the user actually goes out of the route, but... what happens if she has not? If the positioning accuracy descends momentaneously, Situm might recompute the route erroneously (and maybe even recompute it again, just a few seconds after, when the accuracy is recovered). This "comming and going" will certainly confuse the user and damage the navigation experience. Luckily, Situm provides a few settings that can be activated to alleviate these situations.




Ignore low confidence locations


For a variety of reasons, Situm location will have a certain error (usually, 1-3 meters in average) that will not be constant throughout the route. Typically, the error will be higher at first, and after Situm converges to the right location, it might fluctuate depending on how the user moves, how she holds the smartphone, etc. 


As shown in the following figure, this error or accuracy can be seen as a circle of confidence around the geolocation: this circle represents the area where, most likely, the real location is.  If you detect that, for whatever reason, the error in some areas of your building is higher than expected, you may turn ON the "Ignore low quality locations" (Route and Navigation Settings menu). 

Then, Situm will ignore those low quality locations (e.g. the red one in the following figure) when the user is following a route. The main effect will be that these geolocations will not trigger any re-routing. This will usually result in a more robust wayfinding experience. As a negative point, in some buildings the geolocation confidence may be low most of the time: therefore, most geolocations will be ignored, harming the wayfinding experience (or preventing it at all).






Outside of route threshold


When the user is following a route, Situm location will usually not match exactly to the route points. This is because:

  1. It is unlikely that the user follows the route exactly, with a submeter accuracy.
  2. Situm also has an inherent accuracy margin (usually, 1 to 3 meters).


It is not a good idea to recompute the route for these small biases:  we would be re-routing the user all the time, damaging the user experience. A better approach is to define a distance threshold (from the user location to the route), from which the route will be recomputed.  This threshold is 15 meters by default, but can be adjusted in the "Outside Route Threshold" (Route and Navigation Settings menu).  


The following image shows an example. Usually, the user location will be close enough to the route (green arrow), so re-routing will not be triggered. However, at a certain point (red arrow) the user may really go off route (or Situm might yield a temporary high location error). If the distance to the route is higher than the threshold, a new route will be computed and the user will be re-routed.




The following table can be used as a reference to adjust the Threshold.


ThresholdProsConsTypical environment
Below 5 metersIf user goes out of route, Situm will detect it (and recompute the route) very quickly.Small errors or deviations from the route may cause a re-routing, damaging user experienceSupermarkets, where parallel shelves may be less than 5 meters away.
5-15 meters (recommended)In most environments, provides the right balance between:
1. Quick out of route detection and re-routing.
2. Robustness against small deviations.
If parallel paths are closer than the threshold, sometimes the user might not be appropriatelly re-routed.Most environments, except those were parallel paths are closer than 5 meters (e.g. supermarkets)
> 15 metersVery robust against virtually any accuracy errorVery slow to detect out of route situationsEnvironments where, for whatever reason, accuracy is lower than usual. 





Adjusting the location to the route


In the previous example, we have seen how we can avoid re-routing the user unless she has really gone off route (either because she has or because Situm has returned a high error geolocation). If we assume that an user that has asked for a route is probably following it, we can go further by biasing (adjusting) its location to the route. This will have two effects:

  1. The wayfinding experience will usually be better. After all, the location will be shown exactly over the route and advance as the user moves.
  2. We will be able to decrease the Outside of Route Threshold (previous section), because the location will be more robust against spurious location errors.



The following figure shows an example. Assume that the user is following the route marked with blue dots, and the location provided by Situm (green arrow) has a few meter error.  If you turn ON the "Use routes to adjust location" (Navigation Settings menu), Situm will provide a location that is in a way adjusted to the route path, which will result in a better user experience.


On the contrary, at a certain point the user might really go off route (red arrow), or Situm may have a large unexpected location error. In this case, the route will not have enough strength to "attract" the location, therefore the location will not be adjusted to the route and (probably) the route will be recomputed (depending on the Out of Route Threshold). 






Ignoring unexpected floor changes


There may be times where an user is following a route and all of a sudden, the location computed by Situm is in a floor that was not expected. This is common in buildings that have elevators, such as the one represented in the following figure. The user might be following the red route from the start (S) and the end (E). At some point, the user picks up an elevator from the Level 0 to the Level 2. If the elevator stops at Level 1 for some time, Situm will detect that the user is in this level and, if the location computed (L) does not fall within the Outside of Route Threshold, recompute the route.


This will result in a suboptimal user experience: the user will see that he has not stepped out of the elevator nor from the route, but the route will be recomputed (and from a location where he is not).






Situm offers the option to avoid the route re-calculation in cases like this. After all, Situm knows that the user is supposed to go directly from Level 0 to Level 2, therefore all the intermediate floor changes can be ignored. You may do this by setting a delay (in seconds) in the "Time to ignore unexpected floor changes" (Routes and Navigation Settings Menu). This delay will be the number of seconds that Situm will wait before re-computing the route when the user location falls within a floor that she is not supposed to be in.