View Single Post
Posts: 1,548 | Thanked: 7,510 times | Joined on Apr 2010 @ Czech Republic
#1098
Originally Posted by Ken-Young View Post
Thanks for adding automatic rerouting. Rather than using a fixed distance to trigger rerouting, would it not make sense to adjust the trigger radius based on the Horizontal Dilution Of Precision (HDOP)? If the trigger were, for example, 3 x HDOP then the program would automatically increase its tolerance for being off-route when the quality of the location information degraded. That seems to me to be the right behavior.
Thats a good point and I really do want to integrate HDOP in the rerouting-check calculation. But as there might be another causes for false-alerts, namely routes that were mapped with a slight offset or routes that were mapped correctly, but then reduced in point count to reduce storage space (eq. you might get a straight line for a slightly curved route in the routing result), I would still like to let the user to set the rerouting distance to some arbitrary number manually, to get rid of excessive reroutes in some cases.

IMHO, just using a HDOP multiple won't work - if you have a very good HDOP (say <1 m), the real route differing just 3 meters from the computed one would trigger rerouting. A very bad HDOP (>100m) would result in a 300+ m corridor.

I made a simple image, illustrating all the different terms:

The corridor around the route has the width of 2 rerouting thresholds and the real world route slightly differs from the computed one.

Possible algorithms that take HDOP into account:

Algorithm nr. 1
  • just add the current HDOP to the rerouting threshold
Good HDOP (3 m)
Threshold is increased only slightly.
EXAMPLE: 30 + 3
Bad HDOP (100 m)
Threshold increase should compensate for big HDOP.
EXAMPLE: 30 + 100

Algorithm nr. 2
  • if HDOP > 1/3*threshold, add HDOP to threshold
Good HDOP (3 m)
Threshold is not increased.
EXAMPLE: 30
Bad HDOP (100 m)
HDOP is added to the threshold.
EXAMPLE: 30 + 100

Algorithm nr. 3:
  • check if HDOP < (1/2)*rerouting_threshold (in meters)
  • if its larger, them rerouting threshold = 2*HDOP
Good HDOP (3 m)
Threshold is not increased.
EXAMPLE: 30
Bad HDOP(3 m)
Threshold is 2*HDOP.
EXAMPLE: 200

Algorithm nr. 4:
  • check if HDOP < (1/3)*rerouting_threshold (in meters)
  • if its larger, them rerouting threshold = 3*HDOP
Good HDOP (3 m)
Threshold is not increased.
EXAMPLE: 30
Bad HDOP(3 m)
Threshold is 3*HDOP.
EXAMPLE: 300

So what do you think ? Which one is the best and/or better algorithms come to your mind ?

And thanks a lot for the donation ! I'm sending your postcard right away.

Originally Posted by shady View Post
/home/user # modrana
Looks like you are starting modRana from xterm as root (as evident due with the # in your shell) - that won't work (just checked it at my N900, got the same error). Try to run it as a normal user.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)

Last edited by MartinK; 2012-07-24 at 12:32.
 

The Following 3 Users Say Thank You to MartinK For This Useful Post: