24 November 2024, 08:07:26
⁣ ⁣
For the past 24 hours: 43 objects added, 44 objects edited, 16 objects removed.

Author Topic: Углы, дистанция, азимут срабатывания SpeedCam  (Read 27492 times)

yuryleb

  • Ветеран
  • *****
  • Posts: 1112
  • Карма: 346
  • Garmin DriveAssist 50 - nüvi 2497
    • View Profile
    • Русские TTS-голоса для навигаторов Garmin
Вопрос к знатокам не навителовских навигаторов: в каких навигационных программах проговаривается ограничение скорости для предупреждения типа "Опасный поворот"?
Для Гармина можно задать свое звуковое предупреждение хоть для каждой точки персонально, правда, записать/сгенерировать его надо будет заранее. Но практически так никто не делает, так как такой файл сборки предупреждений может оказаться просто неприемлемого размера - звук туда кладется в виде несжатого WAV (функцию синтеза речи к предупреждениям никак не применить, вернее, еще нет известного способа)

Yurych

  • Ветеран
  • *****
  • Posts: 291
  • Карма: 157
    • View Profile
Или, например, если брать азимут 125, то Навител округлит его до 120, и, если это опять же левая граница, то  биссектриса для того сектора, который видит Навител, будет 135, а сектор - от 120 до 150.
А по картинке видно, что данный сектор дорогу не захватывает. Точнее, захватывает на пересечении с бетонкой, а вот перекресток с Некрасова - точно не попадает в створ сектора. wiktor90 же проверял, и утверждает, что срабатывает.
Нет, wiktor90 такой угол (120) не проверял. :) Он сначала выставил 102, но проверил на месте и исправил на 105, при котором получил устойчивое срабатывание.

Quote
Может тогда логичнее предположить, что Навител докручивает этот округленный азимут в обе стороны, +-15 градусов?
Вряд ли. Простая логика: при азимуте близком к правой кратной границе (например, чуть-чуть ошиблись и поставили 104 градуса) в вашем случае получится сектор 90 +/-15, т.е. от 75 до 105. Значит сектор лишь чуть-чуть захватит дорогу и при малейшем изгибе или неточности в координатах оповещения не будет вовсе. Хотя меня и удивляют странные решения, применённые навителовскими программистами, но не думаю, что они такие вот варианты не просчитали.

Quote
а что если алгоритм в Навителе работает таким образом: если считанный из файла азимут не кратен 15 градусам, то округляет до меньшего, кратного 15 градусам, азимута и пририсовывает к нему 30-ти градусный сектор - как и говорил Yurych. А если кратен 15 - то добавляет по 15 градусов влево-вправо, чтобы более корректно выхватить сектор. Т.е., если у нас азимут 95, то возьмет от 90 до 120, а если 90 - то от 75 до 105. Но это опять же просто мысли вслух. Как это проверить - не знаю. ???
Ну и такой вариант не исключён.
А проверять... Год назад я проверял установкой фиктивных точек поодаль от дороги (по пути на дачу :)), менял им азимут, ехал по дороге (небыстро) и фиксировал в каком месте дороги появлялась панелька визуального оповещения (голос всегда запаздывает). Муторно это, долго... :(

Kimson

  • Guest
В продолжение изучения вопроса был создан объект, аналогичный IDX: 175375 с координатами: 38.0477106,55.6998619, азимут 105, ширина сектора 15


В навителе путем симуляции маршрута определены границы сектора:
правая и левая ,
которые дают вот такой сектор (два красных луча):

Невооруженным глазом видно, что величина угла сектора оповещения гораздо больше 15 градусов.
С помощью панели настройки объекта был смоделирован результирующий сектор и измерена величина его угла. Она оказалась равной 45 градусам.

Конечно, полученные значения имеют определенную погрешность, т.к. в силу инерционности навителовской программы сложно установить абсолютно точно границы сектора и переносить точки на карту проекта приходится на глазок. В результате азимут сместился на 2 градуса. Но вполне очевидно, что эта погрешность достаточно мала и полученные данные в достаточно высокой степени близки к истинным значениям.
Эксперимент проводился на версии Navitel 3.2.6.3594 с картой OSM *.nm2 RU-MOS (10.12.2011).

« Last Edit: 22 February 2012, 07:25:39 by Kimson »

Yurych

  • Ветеран
  • *****
  • Posts: 291
  • Карма: 157
    • View Profile
Здорово!
Но не сможете ли вы повторить этот же эксперимент путём реального проезда по улицам, желательно на небольшой скорости?
Симуляция у Навитела даёт чересчур большую погрешность даже для визуального оповещения, а уж о голосовом лучше и не вспоминать совсем.

Всё же сектор в 45 градусов мне кажется не очень вероятным... В самом спидкамовском индексе всегда хранится азимут, округлённый до ближайшего меньшего кратного 15 градусам. А при 45-градусном секторе это не очень-то логично было бы...

VovaSha1971

  • Постоялец
  • ***
  • Posts: 32
  • Карма: 36
    • View Profile
Супер! Kimson, а Вы уже удалили эту тестовую точку? Это я к тому, что можно попробовать покрутить ей азимут (поставить, например, 100, 95, 110) и также проверить сектор. По логике, при 110 должно быть то же, что и сейчас, а при 95 и 100 - сектор предупреждения должен уйти на север. Почему 95 и 100, объясню: принцип округления может также работать в разные стороны. Я могу попробовать просимулировать на 5-й версии, но это не быстро, т.к., у меня навигатор жестко прикручен в виде головного устройства в авто. :)

VovaSha1971

  • Постоялец
  • ***
  • Posts: 32
  • Карма: 36
    • View Profile
Или, например, если брать азимут 125, то Навител округлит его до 120, и, если это опять же левая граница, то  биссектриса для того сектора, который видит Навител, будет 135, а сектор - от 120 до 150.
А по картинке видно, что данный сектор дорогу не захватывает. Точнее, захватывает на пересечении с бетонкой, а вот перекресток с Некрасова - точно не попадает в створ сектора. wiktor90 же проверял, и утверждает, что срабатывает.
Нет, wiktor90 такой угол (120) не проверял. :) Он сначала выставил 102, но проверил на месте и исправил на 105, при котором получил устойчивое срабатывание.
Про 125 был просто пример. Отношения к данной точке не имеет. Чтобы не было разночтений - удалил из предыдущего поста. :)

Quote
Quote
Может тогда логичнее предположить, что Навител докручивает этот округленный азимут в обе стороны, +-15 градусов?
Вряд ли. Простая логика: при азимуте близком к правой кратной границе (например, чуть-чуть ошиблись и поставили 104 градуса) в вашем случае получится сектор 90 +/-15, т.е. от 75 до 105. Значит сектор лишь чуть-чуть захватит дорогу и при малейшем изгибе или неточности в координатах оповещения не будет вовсе. Хотя меня и удивляют странные решения, применённые навителовскими программистами, но не думаю, что они такие вот варианты не просчитали.
Логичнее, конечно, было бы округлять по принципу "куда ближе", а не в минус. Если же еще сюда добавить по 7,5 градусов, которые вычислил Kimson (вместо 30 градусов 45), то получится более чем приличный сектор предупреждения. Эх, Навителовцы бы алгоритм рассказали, а то приходится тут танцы с бубнами устраивать. *YES_* :)

Yurych

  • Ветеран
  • *****
  • Posts: 291
  • Карма: 157
    • View Profile
Логичнее было бы вообще ничего не округлять. :) Есть азимут - бери его и раскрывай симметричный сектор, куда уж проще. Но у навителовцев там такое наворочено в индексе, что волосы дыбом встают... у них всегда какой-то "свой путь".
В новой версии 5.1.0 изменений вряд ли стоит ждать (проверить пока не на чём), но в дальнейшем возможно перепишут таки модуль работы со speedcam'ом, юзеры давно об этом просят...

Kimson

  • Guest
... а Вы уже удалили эту тестовую точку? Это я к тому, что можно попробовать покрутить ей азимут (поставить, например, 100, 95, 110) и также проверить сектор...
В эмуляторе она у меня продолжает жить. А Вы сами не желаете покрутить? Координаты я выложил, формат данных объекта в speedcam.txt известен, могу выслать рабочий Навител-эмулятор. Если есть ещё желающие - выложу его в файлообменник для широкого доступа. Каждый сможет крутить куда захочет.

Но, тут не так всё просто!
Я проехался на машине на малой скорости по паре реальных точек и снял координаты для определения границ их секторов оповещения.
Смотрите, что получается. Красная жирная точка - место срабатывания.
IDX 104185: ...........IDX 104186:
Можно сказать, что в каждом из этих двух случаев срабатывание происходит очень близко к границе 15-градусного сектора, заложенного в базе.
Ни о каких 45 градусах, по сравнению с предыдущим случаем, речи и близко нет.

Как ко всем полученным результатам относиться? Где истина, а где ложь?
Я вижу несколько узких мест.
1. У меня разные версии Навитела: в навигаторе 5.0.3.100, а в эмуляторе 3.2.6.3594. Возможно, что в них различаются параметры секторов предупреждений и алгоритмы их вычисления.
Проблема в том, что обычный эмулятор WinCE не позволяет пользоваться версиями Навитела 5.0.3... (замуровали, демоны!)
2. Очевидно, что на срабатывание предупреждения влияет азимут курсора навигатора, определяемый вычисленным значением курсового угла (азимута) автомобиля. Вполне возможно, что величина угла сектора оповещения тем больше, чем ближе курсовой угол автомобиля к биссектрисе сектора оповещения. И наоборот, величина угла сектора оповещения тем меньше, чем меньше они смотрят навстречу друг другу. Ведь однозначно установлено, что оповещение не срабатывает, если двигаться под углом 90 градусов к биссектрисе сектора оповещения. И тем более оно не срабатывает, если двигаться в сторону от объекта.

Известно, что дальность срабатывания тем больше, чем точнее на объект движется автомобиль. Чем больше отклонение, тем меньше фактическая дистанция оповещения.
В моём последнем опыте в первом случае курс автомобиля был не параллелен биссектрисе сектора оповещения, но и не слишком отклонялся в сторону. Дальность оповещения составила 850 м. Во втором случае курс отклонялся на бОльшую величину и дальность была 750 м.
Предположительно, этот параметр является определяющим для вычисления момента срабатывания предупреждения.
В предыдущем опыте азимут курсора навигатора был параллелен биссектрисе сектора оповещения. И сектор, соответственно, был большим - по +15 градусов в каждую сторону. И дальность срабатывания стремилась к 1 км.

На все связанные с этим вопросы могли бы ответить навителовцы, но не для этого они создали свой коммерческий проект!
Так что, остается полагаться только на свою наблюдательность.

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

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

« Last Edit: 22 February 2012, 13:31:45 by Kimson »

Yurych

  • Ветеран
  • *****
  • Posts: 291
  • Карма: 157
    • View Profile
Вот говорят - дурной пример заразителен, так и есть. :)
Почитал описания Kimson'а, они и помогли преодолеть мою лень, спасибо ему!
В общем - я провёл таки серию тестов Навитела с целью прояснить ситуацию с размером сектора оповещения. Это очень нудное, муторное занятие... лучше б не делал... Потому что результаты оказались совсем не такими, как можно было бы ожидать.

Не буду тут замусоривать тему описаниями тестов, желающие узнать подробности и желающие проверить (или развить) эти тесты смогут сделать это самостоятельно. Скажу лишь, что тестов было около полутора десятков, а проводились они на навигаторе в режиме симуляции, т.к. проехать всё это вживую и за 2 недели проблематично, тем более, что найти параллельные прямые дороги вряд ли получится. Для тестов рисовался огрызок карты, на котором было от 3 до 5 строго параллельных прямых дорог. У объекта (камера) крутился азимут, в разные стороны. И имитировалась поездка с замером дальности предупреждения по каждой дороге.
Для каждого теста использовалась своя карта (в polish-формате и формате nm2 для Навитела), свой файл speedcam. Всё это и плюс сводные результаты тестирования выложены вот здесь.

Я ограничусь лишь выводами, а они неоднозначны:
1. Для практических целей (например при добавлении точек на этом проекте) можно считать, что ширина сектора составляет 30 градусов (величина центрального угла). Хотя это не всегда так, да и отсчитывается этот угол далеко не очевидным образом, увы.
2. В некоторых случаях угол может быть всего 15 градусов (меньше не бывает), а в других случаях - достигать аж 60 градусов. Но это - очень редко, т.е. этим можно пренебречь.
3. И наконец главное - я теперь вообще не уверен, что Навител оперирует с углом, с сектором. Мне вот стало казаться, что на самом деле Навител строит некий многоугольник (полигон) покрытия и выдаёт оповещение при въезде автомобиля в этот виртуальный полигон. А азимут и угол сектора  используются только для построения этого полигона (и рисования стрелок у объекта). Просто ничем иным я не могу объяснить некоторые результаты тестирования...

Но это так, для общего развития. А практически (повторюсь) можно считать, что угол сектора - 30 градусов.


Max_rl

  • Ветеран
  • *****
  • Posts: 898
  • Карма: 622
  • Спец по Ситигиду и немного по Навителу. Картограф
    • View Profile
Добавил инфу по Ситигиду, добавлять инфу по Навителу смысла не вижу, считаю что решение так и не найдено, а точки с азимутом по центру дороги работают правильно.

yuryleb

  • Ветеран
  • *****
  • Posts: 1112
  • Карма: 346
  • Garmin DriveAssist 50 - nüvi 2497
    • View Profile
    • Русские TTS-голоса для навигаторов Garmin
Таким образом, хочется чтобы участники поняли, что предложенная визуализация сектора сбивает потребителя с толку, т.к. он считает, что если сектор не покрывает дорогу, то предупреждение не сработает.
Честно говоря, ничего не понял :) "Предложенная визуализация" - это зеленые сектора точек на карте сайта? И они работают в Навителе совсем не так, как интуитивно предполагается, т.е. именно что "сектор должен покрывать дорогу"?

И кстати, ув. Max_rl, нельзя ли немного исправить информацию по Гармину в первом сообщении темы:
Quote
1. Изменение угла предупреждения на сайте. Сейчас не поддерживается ни в одной программе кроме MapcamDroid и PocketGIS. В Гармине при использовании Garmin POI Loader всем точкам присваивается 360, но сам он поддерживает углы от 5 до 75 с кратностью 5. Другими разработчиками используются стандартные углы: в Навителе - 15, ИГО - 45, Гармин 360, СитиГид - прямоугольники шириной 5 м
Quote
3. Направление  - поддерживается большинством программ. Навител, IGO, Ситигид - полностью. Гармин - не поддерживается при самостоятельной сборке с использованием Garmin POI Loader.

Max_rl

  • Ветеран
  • *****
  • Posts: 898
  • Карма: 622
  • Спец по Ситигиду и немного по Навителу. Картограф
    • View Profile

И кстати, ув. Max_rl, нельзя ли немного исправить информацию по Гармину в первом сообщении темы:


Сделано.

Kimson

  • Guest
Думаю, алгоритм Навитела следующий.

1. Формируется некоторый массив значений координат, образующих равнобедренный треугольник высотой 1км с вершиной в точке с координатами автомобиля, и в соответствии с курсовым углом автомобиля. Координаты точек этого созданного массива изменяются с изменением местоположения и курсового угла автомобиля.
2. Производится сравнение координат и азимутов точек предупреждений из файла speedcam.txt с координатами из массива треугольника автомобиля и с курсовым углом автомобиля.
3. Если полученные значения разностей этих координат и азимутов становятся меньше установленных соответствующих пороговых значений, выдается предупреждение (звуковое и визуальное) в соответствии с характеристиками точки speedcam.
4. Для уменьшения количества вычислений массив speedcam.txt ограничивается точками, попадающими в отображаемый на экране участок карты. При проложенном маршруте этот подмассив ещё и ограничивается координатами точек, находящихся на маршруте.

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

На точность этих вычислений влияют следующие факторы:
1. Количество доступных спутников GPS и качество приёма их сигналов
2. Точность вычисления координат и курсового угла автомобиля в конкретном устройстве.
3. Скорость движения автомобиля.

В итоге получается, что первостепенное значение для того чтобы сработало предупреждение speedcam, имеет правильное соотношение азимута точки speedcam и курсового угла автомобиля, и чтобы точка находилась перед автомобилем в некотором секторе на удалении не более 1 км (для пешеходного перехода, кажется, это 0,5 км).
Установка ширины сектора точек speedcam принципиального значения для Навитела не имеет, но имеет значение для других навигационных программ и для MCD.

Поскольку до сих пор не получается опытным путём определить точно величину угла вершины треугольника перед автомобилем, можно, на основании некоторых имеющихся данных, условно принять его равным, например, 30 градусам.

Плюс, замечено, что в Навителе предупреждение speedcam появляется после того, как навипрога обработает карту. Это может привести к тому, что при проложенном маршруте по сложному дорожному графу, предупреждение speedcam может вообще не появиться, но стоит точку speedcam вынести на простую часть дорожного графа, как всё работает без проблем.

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

IMHO

Heckfy66

  • Ветеран
  • *****
  • Posts: 223
  • Карма: 410
    • View Profile
Возможно, с ростом скорости уменьшается плотность значений координат в массиве треугольника автомобиля, но при этом увеличивается угол вершины этого треугольника.
Если предположить, что плотность в массиве уменьшается, то чем выше скорость, тем вероятность проблемы пропуска предупреждения выше, или дельты тоже корректируются ?

Не замечал, пока, влияние скорости на дальность при которой выдается оповещение

(для пешеходного перехода, кажется, это 0,5 км)
ранее было для ЛП вектор 500м, для всех остальных типов 1000м, поменялось ?

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

Kimson

  • Guest
Heckfy66, по поводу уменьшения плотности массива, как и относительно всего остального, – это всё лишь предположения. Возможно, изменения плотности массива и нет.
Есть ещё одна особенность – при увеличении скорости движения дальность предупреждения снижается, но это, возможно, делается искусственно для компенсации промежутка времени, требуемого для проговаривания голосового предупреждения.
Установить причину ошибок по дальности предупреждения вслепую сложно. Я полагаю, что основная причина кроется в тормозах при обработке карты и в том, что предупреждение speedcam обрабатывается только после обработки дорожного графа, маршрута и т.п. Если за это время точка прошла половину или более рассматриваемого треугольника, то предупреждение выдаётся на соответствующей дальности. Или совсем не выдается. Недаром в последних версиях Навитела для повышения быстродействия снижена детализация карты.
Хотя, в общем такие ошибки не так уж часты.
Возможно, на новых Android-устройствах, эта проблема проявляется меньше.

По поводу дальности предупреждения о пешеходном переходе, сдаётся мне, что оно всегда срабатывает на расстоянии гораздо меньше 1 км.