Jump to content
GPS навигатор СитиГИД

Recommended Posts

Думаю неплохо было бы научить программу маршрут делать сплошным без разрывов, т.е. она должна понимать что стоя на месте вероятность развернуться минимальна, а прыгать через кварталлы на параллельные улицы машины пока не научились smiley4.gif . Надо чтобы текущее положение определялось не просто по GPS координатам и попыткой привязки к дороге, но и с учетом реального предыдущего положения, если я ехал себе по Литейному и вдруг GPS метнулся на Моховую, то программа вполне может понять что это именно ошибка GPS, что машина не может за секунду пересечь кварталл, и если я стоя на светофоре, понятно что данные GPS при этом гуляют, но ИМХО для того чтобы принять решение о развороте и движении обратно, необходимо подтвержденные показания движения, в разумном направлении и с разумной скоростью, а не просто новая точка оказалась на заданное количество метров назад, их должно оказаться как минимум несколько, причем с примерно одним и темже вектором, и скорость изменения должна быть разумной.

Link to post
Share on other sites

...если я ехал себе по Литейному и вдруг GPS метнулся на Моховую' date=' то программа вполне может понять что это именно ошибка GPS, что машина не может за секунду пересечь кварталл...[/quote']

 

Не бывает так, что "ошибки GPS" не было, а потом вдруг появилась. Погрешность (ошибка) есть всегда, просто с разной величиной - где-то больше, где-то меньше, где-то вправо, где-то влево... И, при наличии большой погрешности, программа не может достоверно сказать, какое именно положение правильное - на Литейном или на Моховой. Может Вы свозь дворы проехали, в процессе чего сигнал метался по крышам и только при выезде на Моховую сигнал вновь стал корректным - что ж теперь, так показывать вас на Литейном? LOL
sergeyastakhov2008-07-08 15:54:02
Link to post
Share on other sites

и если я стоя на светофоре' date=' понятно что данные GPS при этом гуляют, но ИМХО для того чтобы принять решение о развороте и движении обратно, необходимо подтвержденные показания движения, в разумном направлении и с разумной скоростью, а не просто новая точка оказалась на заданное количество метров назад, их должно оказаться как минимум несколько, причем с примерно одним и темже вектором, и скорость изменения должна быть разумной. [/quote']

 

Они не просто гуляют вокруг - там зачастую виден именно дрейф в каком-нибудь направлении несмотря на то, что машина фактически стоит на месте. Попробуйте записать лог и посмотреть на остановки на светофорах - там хорошо это видно.
Link to post
Share on other sites

Я наблюдал, как на лежащем у окна девайсе позиция GPS ехала неспеша равномерно и прямолинейно сквозь кварталы, со скоростью примерно 30 км/ч в течение примерно минуты, уехала на полкилометра, замерла, постояла, а потом резко скакнула в верную позицию. Так вот если скачок и можно отфильтровать таким алгоритмом, то такой дрейф мне кажется вообще невозможно.

Link to post
Share on other sites

Ну дрейф не так уж и часто бывает.

Сквозь дворы за пол секунды проехать НЕВОЗМОЖНО, если программа пол Литейного меня вела по Литейному, то логично предположить что на Моховую я резко не перепрыгнул.

Естественно метод не универсален и всех случаев не решит, но ИМХО количество ошибок сократит достаточно прилично, сразу йдут скачки по линиям на Васильевском, скачки по улочкам на Петроградке, когда едешь по Большому, на самом деле не сложный метод, а выгода местами будет.

Link to post
Share on other sites

Ну дрейф не так уж и часто бывает.
Сквозь дворы за пол секунды проехать НЕВОЗМОЖНО' date=' если программа пол Литейного меня вела по Литейному, то логично предположить что на Моховую я резко не перепрыгнул.
Естественно метод не универсален и всех случаев не решит, но ИМХО количество ошибок сократит достаточно прилично, сразу йдут скачки по линиям на Васильевском, скачки по улочкам на Петроградке, когда едешь по Большому, на самом деле не сложный метод, а выгода местами будет.
[/quote']

Красиво говорите! Только это с позиции глядящего на монитор GPS.

А теперь представьте, что Вы сидите на одном из спутников... (Ну, как, хорошо Вас видно: перемещаетесь Вы или стоите?)

 

Это электроника... И так это удивительно, как она (электроника) с такого расстояния определяет Ваше местоположение. А определяет она его ПО РАЗНОСТИ времён прохождения радиоволн (скорость света) от нескольких спутников. И исходя из этих БАСНОСЛОВНО МАЛЫХ величин вычисляет Ваше местоположение.

Нельзя от неё требовать более, чем она вычисляет. Любое повышеие точности потребует либо резкого увеличения ресурсов процессора (вычисление по более сложным формулам и алгоритмам), либо увеличение времени обработки в разы.

 

ЛЮБАЯ предлагаемая Вами ДОПОЛНИТЕЛЬНАЯ ОБРАБОТКА информации (называемая фильтрацией), основывается на полученных ранее данных. В принципе Вы предлагаете ввести ИНТЕГРИРОВАНИЕ.

А любое интегрирование ведёт:

1) задержке первого выдаваемого сообщения (т.к. требуется "накопление" информации)

2) появлению "динамической ошибки", когда предмет двигается. Причём, чем скорость движения выше, тем эта ошибка будет больше. А если вы предлагаете эту появляющуюся при движении ошибку убрать, то это усложнит обработку, а значит начнет предъявлять дополнительные (повышенные) требования к процессору КПК (или навигатора и т.п.).

Но  даже если Вы уберёте эту ошибку за счёт обработки, то всё равно останется ошибка "второго" порядка, которая проявится при "ускорениях / замедлениях". Поясню: если Вы, например, ехали быстро, а затем встанете на перекрёстке, то программа "продолжит" Ваше движение, сочтя Вашу остановку за "ошибку", т.е. Вы не встанете на перекрёстке, а замечательно "проедете через него (правда с постепенным замедлением). Smile

3) Кроме того, любые выводы на экран Вашего местоположения будут происходить "с задержкой" из-за алгоритмов обработки!

 

В том-то и состоит вся трудность обработки, что ВСЕГДА необходимо найти "золотую середину" между скачками реальных замеров и минимальной задержкой вывода информации, а также учитывать возможность появления и минимизации  ошибки при равномерном и равноускоренном движении. (Остальные порядки ("производные") - при разработке таких ПО не учитываются).
K20082008-07-08 19:08:51
Link to post
Share on other sites

1) задержке первого выдаваемого сообщения (т.к. требуется "накопление" информации)
Так не надо применять алгоритмы с задержками. Варианты есть.

Link to post
Share on other sites

Я не предлагаю пролонгировать действия типа движение остановка, речь идет исключительно об изменении направления движения на 180 градусов, именно разворот а не поворот, и перескакивания на параллельные улицы, это отфильтровать достаточно просто, также отфильтровать скачки с немерянной скоростью, как бы я не ускорялся а больше 200кмч, ну с учетом самолета 1000кмч разогнаться нереально, следовательно такие скачки должны отфильтровываться однозначно.

Link to post
Share on other sites

Так не надо применять алгоритмы с задержками. Варианты есть.

Увы - это ПРИНЦИПИАЛЬНО!

Поясняю:

У Вас 1 раз в секунду идут реальные замеры, которые в силу разных причин "пляшут". Какому из них верить?

1) Если усреднять, т.е. находить среднее арифметическое между предудущим замером и настоящим измерением (это интегрирование первого порядка), то тогда задержки действительно не будет, но и усреднение самое слабое. Но уже с ним при движении "со скоростью"  Вы будете иметь "статическую" ошибку именно из-за этого усреднения. (При равномерном движении по прямой, Ваша отметка будет "отставать" от Вашего истинного местоположения на величину вашего пути за 0,5 сек).

 

2) Если для усреднения использовать бо'льшее число замеров, то это даст Вам задержку вывода на экран о которой я говорил. Т.к. пока Вы не "накопите" необходимого количества отсчетов, то программа ничего не выведет. Это и есть задержка. А любая задержка в выводе информации во время движения даст Вам "ошибку", т.к. Вы из этой точки уже давно уехали.

 

Теория СГЛАЖИВАНИЯ ТРАЕКТОРИИ - ОЧЕНЬ не простая штука!!!

Она не сложно решается только в статике или при равномерном движении. Но если Ваше движение неравномерное (а у автомобилей именно так и есть, т.к. вы едете - стоите - едете - стоите, да ещё и передвигаетесь, то 5 км/час, то 120 км/час) - то это штука ОЧЕНЬ не простая.
Link to post
Share on other sites

Вы, уважаемый, конечно умные вещи говорите, но никак не хотите понять что никто не собирается сглаживать траекторию, речь идет лишь отом что скакть между параллельными улицами она не должна и разворачиваться на месте от шумовых значений, это задача совершенно другого уровня и вполне решаемая.

Link to post
Share on other sites

Сквозь дворы за пол секунды проехать НЕВОЗМОЖНО, если программа пол Литейного меня вела по Литейному, то логично предположить что на Моховую я резко не перепрыгнул.

К сожалению, программа не знает, где было правильное положение - до скачка или после. А прочитать вывеску адреса на доме она пока не умеет.

 

это задача совершенно другого уровня и вполне решаемая.

С удовольствием порадуемся вместе с Вами, когда Вам удастся её решить - если, конечно, расскажете о результатах Wink.

 

А если говорить серьезно, то при наличии одной системы позиционирования задача в общем виде не решается, нажна доп.информация (вторая система, гироскоп, лаг/компас и т.п. и т.п.). Если Вам интересна теория - Интернет предоставляет массу возможностей по изучению вопроса.
Dmi3ev2008-07-08 23:35:14
Link to post
Share on other sites

Большое спасибо за редкое вменяемое объяснение на этом форуме сути проблемы. побольше бы таких квалифицированных пользователей, ведь то что мы говорим очень часто воспринимают как нежелание что то сделать не принимая в рассчет сложность проблемы.

Link to post
Share on other sites

Ну вот как раз я и предлагаю определять правильное положение исходя и предыдущих значений, если мы ехали по Литейному, достаточно долго, этот критерий требует обдумывания, то бросок на Моховую это однозначно ошибка, вот если это будет длиться долго, опять же обсуждаемо что значит долго, ну скажем 10 секунд, причем без бросков туда сюда, то можно предположить проезд двором на эту улицу, иначе оставлять на прежней, ну это что называется на пальцах, тоде самое с разворотом. Просто сособенно с разворотом нехорошо получается - стоишь себе на месте, происходит "бросок" более чем на 50м, или сколько там не помню уже, и программа разворачивает, но больше бросков такого размерв не происходит и программа не разворачивает обратно пока не поедешь, а ведь всего то был один бросок, и его отфильтровать вполне реально, особенно учитывая что развороты программа сама предлагает очень редко, да и вообще не самый распространенный маневр.

Мне сложно предлагать что либо более определенное, т.к. я не знаю с каой периодичностью и какой точностью получаются данные GPS, конечно если периоды запросов измеряются секундами то тут мало что можно сделать, если же, я на это надеюсь, десятыми секнды то вполне реально не реагировать на несогласованные изменения, т.е. вектор дороги известен, несколько точек должны лечь на это вектор с какойто погрешностью и шагом, иначе это погрешность GPS, если шаг вдоль вектора мал и непостоянен, то вперед то назад, значит стоит на месте, если отклонение от вектора непостоянно и гуляет больше допустимого, то тоже ошибка и с вектора не уходить, или не переходить на него соответсвенно, где то так.

Link to post
Share on other sites

Теория СГЛАЖИВАНИЯ ТРАЕКТОРИИ - ОЧЕНЬ не простая штука!!!
А хороший алгоритм и не обязан быть простым, никто не спорит. Сложно - не значит невозможно. Я занимаюсь подобными алгоритмами по роду своей профессиональной деятельности. Правда к сожалению плохо знаю теорию и не могу дать грамотные математические выкладки. Алгоритмы строим опытным путем по примерам конкретных траекторий. То, о чем Вы говорите - это самый простой и далеко не самый эффективный способ сглаживания, который приводит и к задержкам, и к погрешности. Есть методы получения сглаженной траектории без задержки относительно текущего положения. А при вычислении местоположения упор делается на характер движения объекта известного типа. Когда этот характер движения известен, то задача значительно упрощается. Мы решали задачу для глубоководного дистанционно управляемого аппарата, требовалось получить сглаженную траекторию его движения, чтобы обеспечить качественное межкадровое накопление видеосигнала подводной видеокамеры и повысить качество картинки. Для этого требовалось точно смещать кадр и попадать пиксель в пиксель. И задача была успешно решена. Не в 100% случаев, безусловно, но процентах в 90 система работала. Входные данные координат были нестабильны, имели скачки и прочие ошибки. Но были известны характеристики движения аппарата - величины возможных скоростей и ускорений и радиусов маневров, что сразу дало возможность отсечь массу ошибок координат, как невозможных при данных параметрах движения объекта.

Так вот к чему я это все. Про автомобиль на дороге тоже известна масса исходных данных. Здесь уже говорили про это. Известно, что автомобиль не может совершать резкие ускорения, резкие смены направления движения. К тому же в СГ решается задача навигации ПО ДОРОГАМ, значит и этот фактор можно эффективно использовать в фильтрации - автомобиль не может резко перескочить на соседнюю улицу, или на примыкающий Т-образный перекресток в обратном направлении. И для алгоритма знать, какое положение было правильным - текущее или предыдущее не нужно. Алгоритм должен сравнивать текущее значение с... ну, если по простому - с накопленным. Но это накопленное - далеко не просто среднее. И конечно же, в начале движения аккумулятор должен накопить данные для начала работы, поэтому старт проходит обычным образом и ошибки возможны, но по мере набора данных ошибки снижаются. Конечно же в основе - усреднение. Но в чистом виде усреднение желаемого эффекта не дает. Нужно добавлять еще и логику и нечто для исключения запаздывания данных (типа предсказания, что в СГ сейчас и реализовано). Хороший алгоритм не обязан быть простым. И с моей профессиональной точки зрения возможности для улучшения траектории в СГ есть и без ввода дополнительных систем.

Link to post
Share on other sites

Есть еще проще логика :о)

Можно сравнить с серьезными конкурентами в части навигации. ТомТом раз или максимум 2 в неделю слетал у меня с маршрута. CG ежедневно по несколько раз прыгает или едет ни туда. 

Это я не к тому что CG плохой. А к тому, что при всей сложности задачи, которую мы понимаем, есть куда улучшать.

Link to post
Share on other sites

Есть еще проще логика :о)

Можно сравнить с серьезными конкурентами в части навигации. ТомТом раз или максимум 2 в неделю слетал у меня с маршрута. CG ежедневно по несколько раз прыгает или едет ни туда. 

Это я не к тому что CG плохой. А к тому' date=' что при всей сложности задачи, которую мы понимаем, есть куда улучшать.

[/quote']

Вы чего за девайсы такие юзаете? Где бы не ездил ни разу (загород, центр) такого не наблюдал. Программа сама по себе ни чего не предумывает, она рисует то что ей говорит GPS, и причем тут тогда СГ если ваш GPS "не вменяем", не надо все волить с больной головы на здоровую, ИМХО разберитесь со своими GPS приемниками, программа должна хорошо делать то, для чего она создана, а имено, строить маршрут используя дорожную обстановку, она не должна еще ко всему заглаживать не достатки ваших GPS приемников. Таково мое сугубо личное мнение!!! Big%20smile

Link to post
Share on other sites

beach240382 Если у Вас такой замечательный приемник, который абсолютно точно и без помех определяет положение, то Вам можно только позавидовать, но поверьте, огромное кол-во народа пользуется обычными бытовыми GPS приемниками, которые в условиях городской застройки не могут похвастаться прекрасным приемом.

Link to post
Share on other sites

> Вы чего за девайсы такие юзаете?

Nokia N93i + Holux M-1000, GPSlim240 + Subaru Outback :o)

>Где бы не ездил ни разу (загород, центр) такого не наблюдал.

Рад за вас!

> Программа сама по себе ни чего не предумывает, она рисует то что ей говорит GPS,

Вы разработчик? Знаете как программа работает?

> и причем тут тогда СГ если ваш GPS "не вменяем", не надо все волить с больной головы на здоровую, ИМХО разберитесь со своими GPS приемниками,

Серьезно подумаю на тему - выкинуть свои невменяемы приемники :о)

> программа должна хорошо делать то, для чего она создана, а имено, строить маршрут используя дорожную обстановку,

да, плюс еще много всего. Осуществлять поиск, например. Вести по маршруту удобно. И т.д.

> она не должна еще ко всему заглаживать не достатки ваших GPS приемников.

С вами невозможно спорить :о)

> Таково мое сугубо личное мнение!!! Big%20smile

:о)

Link to post
Share on other sites

Вы чего за девайсы такие юзаете? Где бы не ездил ни

разу (загород, центр) такого не наблюдал.

Критериев "загород" и

"центр" недостаточно для выводов. Как часто, к примеру, Вы ездите по Литейному проспекту, где условия приема изначально весьма плохие? Я езжу там ежедневно и ошибки координат возникают, ну, в среднем, раз в неделю, хотя периодичности конечно же нет. Буквально позавчера съехав с Литейного моста и проехав перекресток со Шпалерной, во время движения программа резко перестроила маршрут в противоположную сторону и держала его так до тех пор, пока я не свернул на Чайковского. Если Вы по таким дорогам ездите нерегулярно или вообще не ездите, то чисто по теории вероятностей можете и не словить скачки позиции. Качество определения местоположения сильно зависит от езды по конкретным улицам. Не только от этого, но от этого в первую очередь, имхо.

Link to post
Share on other sites

Если ехать в по дороге Жизни то ошибок вообще не бывает, хотябы потому что перескакивать просто некуда, ближайшая параллельная дорога как минимум в нескольких километрах, а вот в городе улочек между которыми 200-300 метров хоть отбавляй, и все это соизмеримо с погрешностью GPS, потому и хочется ввести логику движения. Ну и если честно, то самое интересное это все таки остановка, чтобы стоя на месте не разворачивало и не перебрасывало на другую улицу, вот это совсем неприятно.

Link to post
Share on other sites

я не знаю с каой периодичностью и какой точностью получаются данные GPS

Координаты поступают 1 раз в секунду.
Link to post
Share on other sites

Езжу как по центру, окраинам, пригороду. Слетает с маршрута очень редко, как правило в одних и тех же ситуациях. Например: еду по Боровой к Обводному, надо на Нефтяную дорогу. СГ предлагает перехать Обводный и повернуть налево. Я поворачиваю, не переезжая. В 50% она считает, что я еду, как рекомендовано. В оставшихся 50% понимает, что я мост не переехал, и рекомендует повернуть направо на Лиговский, потом налево на Обводный. Я еду прямо. В 30% случаев она считает, что я еду по рекомендациям. Еще постоянно соскакивает с маршрута во Всеволожске, но там, вероятно, с картографией не лады, т.к. точка постоянно метрах в 50-60 в стороне от дороги.

Link to post
Share on other sites

> Вы чего за девайсы такие юзаете?

Nokia N93i + Holux M-1000, GPSlim240 + Subaru Outback :o)

>Где бы не ездил ни разу (загород, центр) такого не наблюдал.

Рад за вас!

> Программа сама по себе ни чего не предумывает, она рисует то что ей говорит GPS,

Вы разработчик? Знаете как программа работает?

> и причем тут тогда СГ если ваш GPS "не вменяем", не надо все волить с больной головы на здоровую, ИМХО разберитесь со своими GPS приемниками,

Серьезно подумаю на тему - выкинуть свои невменяемы приемники :о)

> программа должна хорошо делать то, для чего она создана, а имено, строить маршрут используя дорожную обстановку,

да, плюс еще много всего. Осуществлять поиск, например. Вести по маршруту удобно. И т.д.

> она не должна еще ко всему заглаживать не достатки ваших GPS приемников.

С вами невозможно спорить :о)

> Таково мое сугубо личное мнение!!! Big%20smile

:о)

И? К чему это все не очень понял?

Link to post
Share on other sites

И? К чему это все не очень понял?

Вы вступили в дисскусию.

Выразили свое мнение.

С вами общаются.

Вам задали вопрос.

Это форум.

Link to post
Share on other sites

На редкость информативная ветка форума!

Часто на ВО и Петроградке курсор перескакивает на соседнюю улицу. Как то ехал по новой дороге, которая идет вдоль КАД (метрах в 30) и курсор естественно перескочил на КАД. Развороты вовремя стояния в пробке тоже случаются постоянно. Не готов поддержать дискуссию на столь высоком уровне, просто говорю - это косяк, который надо как то устранить.

Но вот какой у меня вопрос. В IGO и Garmin Mobile XT (других прог не юзал) пользователь знает сколько спутников подцеплено и каков уровень сигнала. Причем на одном и том же девайсе с чипсетом SirfStarIII Garmin быстрее цепляет большее количество спутников (субъективная оценка). А вот пользователь СГ не знает по скольким спутникам он едет. Что значит эта зеленая пятиступенчатая шкала в нижнем углу экрана? Что подцеплено 5 спутников? Не могу утверждать, но не исключаю, что СГ не оптимальным образом использует GPS информацию. На это косвенно указывает то обстоятельство, что IGO (который, в городе пользую все же редко) не разу не прыгал на другие улицы и не вертел карту на светофорах.
Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...