GPS навигация - проблема пройденных точек.
- Войдите на сайт для отправки комментариев
Чт, 23/11/2017 - 00:15
Камрады приветствую. К следующему сезону хочу доделать брошенную самоделку - бортовой компьютер-навигатор. Дошел до движения по курсовым точкам и столкнулся с проблемой, которую не могу решить уже 3 дня. Суть в следующем:
Предположим, что были указаны несколько курсовых точек, в каком-то произвольном месте пространства компьютер включается, определяется по GPS, считывает точки и должен откинуть те, которые оказались позади. Вопрос - как понять, какие точки выкинуть и к какой стремиться? Комп владеет компасом, знает направление и расстояние до любой точки, может отмечать их как пройденные. Единовременно будет работать с 2мя точками - текущей (к которой надо ехать) и следующей.
Предположим, что были указаны несколько курсовых точек, в каком-то произвольном месте пространства компьютер включается, определяется по GPS, считывает точки и должен откинуть те, которые оказались позади. Вопрос - как понять, какие точки выкинуть и к какой стремиться?
В общем случае никак. Представим ситуацию, что ваш GPS "проснулся", увидел что он в Саратове и обнаружил, что в курсовых точках у него Париж и Магадан. Положим, что он едет на восток. Разве это обязательно означает, что в Париже он уже был? - нет, конечно. Может это у вас такой маршрут - Саратов-Магадан-Париж: ?)
ИМХО, помечать точки "пройденными" нужно тогда, когда GPS до них доехал. Так делают фирменные GPS. А чтобы не возникало вопроса. где GPS был, а где нет - он должен быть в сети всегда. Тем более что у вас это "бортовой компьютер" - так пусть стартует с включением зажигания, иначе этот комп просто лишен смысла.
А маршрут через эти точки определен? Если да и GPS "проснулся" на маршруте, с учетом погрешности и допустимого отклонения, то задача решаема. Если проснулся далеко от маршрута, то сразу "приводим" к точке на маршруту. Если маршрут не определен - нифига нельзя утверждать однозначно, необходимы дополнительные условия, что по сути будет прокладка маршрута исходя из некоторых соображений (кратчайший например).
Точки заведены последовательно и образуют маршрут. Ближайшая точка может быть сзади, ее нужно устранить. Думаю, может методом графов ?
Вам уже сказали, что в общем случае задача решена быть не может.
Представьте простейший случай - маршрут проложен самопересекающимися петлями.
Есть два основных варианта:
1. При фиксированном маршруте - отмечать (запоминать) те точки, а которые заезжали.
2. Задавать марштут не готовой последовательностью точек, а финишной точкой. При этом заново строить маршрут и уже по нему смотреть, какие узловые точки впереди.