HPC.ru lite - Все форумы
Форум: PocketGPS Pro и MacCentre PocketGPS
Тема: Подсказки. Ох уж эти подсказки...
[Ответить]
Logout [25.01.2005 01:06] Подсказки. Ох уж эти подсказки...:
Насколько я помню, уже не первый раз возникали жалобы на тему неправильных подсказок. Внесу я и свою лепту в это дело
Хочу сразу сказать, что этот пост в первую очередь адресуется разработчикам продукта. Так же, я ни в коем случае не наезжаю на вас. Сам занимаюсь разработкой, и самого бесят пользователи с необоснованными претензиями
Итак, начнем.
Как я понимаю, какую именно подсказку ядро вычисляет из разницы углов ребер графа. Такой способ наиболее универсальный конечно, но в реалиях Москвы не очень оправдан.
Я примерно представляю как написано ядро вашей программы, поэтому свои пожелания разбил на две группы: "легко реализовать" и "нужно внимательно обдумать".
То что легко.
1) сделать настройку "за сколько метров предпреждать" в заависимости от типа дороги. Оптимально конечно от скорости, но это тоже не очень верно ИМХО. У вас же забиты весовые коэффициенты ребер графа в зависимотсти от прускной способности дорог! Предлагаю разбить "подсказки" на три категории: шоссе, магистральные улицы и второстепенные улицы. На МКАДе за 200м предупреждение слишком поздно, а для центра - в самый раз. Это должно быть настраиваемо.
2) съезды с шоссе.
Как правило, тетя не говорит о съездах с МКАДа, если съезд "пологий". Если увеличить кол-во точек маршрута, то начинают задалбливать частые подсказки.
Съезды с шоссе или заезды на него - это отдельная песня, и тот же ТомТом говорит "съезд с шоссе бла-бла-бла" (exit который). Не вижу ничего сложного реализовать так же. Я так понимаю, признаки развязки у вас тоже проставлены на карте. Да и развязок в Москве не так уж и много.
3) поворот улицы.
Раздражает иногда молчание тети, когда надо бы сказать. Я имею ввиду ситуацию, когда улица уходит в сторону, а с нее съезд на переулок прямо (маршрут проложен именно на этот переулок). Совершенно зря вы отказались от подсказки "прямо". Интуитивно водитель не услышав подсказки поедет по главной дороге, то есть
Тоже не вижу сложности в реализации, так как ядро вроде знает на какой улице в данный момент автомобиль. В случае , когда маршрут сходит с одной улицы на другую - принуждать тетю сказать направление. Думаю, это не будет раздражать. Тем более эту фичу можно сделать отключаемой.
4) Развороты.
очень странно, некоторые развороты объявляются как развороты, а некоторые - как крутые повороты налево.
5) Короткие команды
Как то тут на форуме уже звучала идея коротких подсказок. Действительно, избыточность аудио-информации налицо.
Как вариант могу предложить начинать говорить заранее. Причем заранее, в зависимости от скорости. Чтобы к концу фразы водитель действительно был в "двухстах" метрах от поворота, а не в 50ти за ним.
Теперь сложные фичи.
6) Круговые движения.
У вас я так понимаю, круговое движение вообще никак не отличается от перекрестка. Тот же самый Том-Том различает круги обыкновенные перекрестки и выдает соответсвующие подсказки. Проблема в том, что Мвропеские круги и Московские - две большие разницы, и зачастую Московские действительно больше похоже на перекрестки с односторонним движением по кругу
Это надо думать как сделать, у меня пока идей нет. Но нынешний алгоритм подсказок на кругу не просто не помагает, а вводит в заблуждение.
7) "номер" поворота.
Тут тоже уже была идея говоорить типа "второй заезд направо" и т.д. Насчет этой задачи у меня нет пока идей. Но фича несомненно нужная.
Пример: конец 1-й Тверской-Ямской по направлению в область. "Направо" уходит три дороги (под мост, на Бутырский Вал и на Лесную). Ну и плюс одна прямо - на Ленинградский пр-т.
И немного не в тему. Когда будет база по Зеленоградским домам!?!
И почти на каждом корпусе уже висит его номер и все прочее. Но поиска НЕТ. 
Чайни [25.01.2005 02:23] :
Дело не в подсказках, а в самом алгоритме прокладки маршрута (либо алгоритме выдачи подсказок).
Уже кто-то предлагал очень правильную идею, значительно упрощающую работу с "точками маршрута", а подсказки упростятся автоматически.
Её смысл заключается в том, что маршрут надо привязывать не к "абстрактным точкам" на карте (количество которых регулирует пользователь), а к перекрёсткам. Т.е. любой перекрёсток (даже Т-образный) - всегда точка, а изгиб дороги точкой быть не может по определению
Если прокладывать маршрут именно так, то подсказки будут всегда и только на перекрёстках. Тогда никакие "изгибы" дороги (хоть её разворот) водителя трогать не будут, а съезды с шоссе (или откуда угодно) всегда буду подсказаны.
Вообще, хотелось бы услышать мнение разработчиков на эту тему.
Alligator. [25.01.2005 08:13] :
Полностью согласен. Точки маршрута (к которым привязаны и подсказки доллжны стоять только в местах пересечения более 2 ребер. Точки на изгибах одной единственной дороги абсолютно бесполезны.
Имхо есть два пути - либо модифицировать алгоримт прокладки маршрута, либо кардинально переделывать карту (делать ребра так, чтобы не было такого, что на ровной дороге заканчивается одно ребро и начинается другое, без всякого перекрестка).
Андрей К. [25.01.2005 09:20] :
Добрый день.
Спасибо за Ваши пожелания.
Я согласен практически со всеми замечаниями. Технически мы могли бы реализовать почти всё (хотя кое-что - методом прилаживания "костылей"), мешает исключительно нехватка ресурсов. Мы вынуждены заниматься тем, что в данный момент представляется наиболее актуальным. Поэтому не могу обещать, что в течение ближайшего месяца мы сможем заняться улучшением "режима движения".
По сути:
1. сделать настройку "за сколько метров предпреждать" в заависимости от типа дороги и т.п. Не всё так просто, как кажется (например, условия движения по некоторым "магистральным" улицам сильно отличаются), но кое-что улучшить можно.
2. основные съезды с основных шоссе (и вообще улучшение обработки развязок). ОЧЕНЬ много ручной работы, но технически сделать можно. То же относится к многим круговым движениям, номерам поворотов и т.п. В ближайшем будущем (2-3 месяца) мы этим заниматься не сможем, если только что-то радикально не изменят картографы.
3. Отличать поворот улицы от изгиба дороги и т.п. Сложно при текущей карте. В ней есть понятие "узел графа", без каких-либо атрибутов (изгиб дороги, основной перекрёсток, съезд в переулок и т.п.). О значимости манёвра приходится судить по косвенным признакам (в частности, по величине угла между рёбрами графа). Этот вопрос ещё требует обдумывания.
4. Короткие команды, опережение. Решаемо.
Logout [25.01.2005 23:17] :
Чайни писал(а):
Дело не в подсказках, а в самом алгоритме прокладки маршрута (либо алгоритме выдачи подсказок).
Уже кто-то предлагал очень правильную идею, значительно упрощающую работу с "точками маршрута", а подсказки упростятся автоматически.
Её смысл заключается в том, что маршрут надо привязывать не к "абстрактным точкам" на карте (количество которых регулирует пользователь), а к перекрёсткам. Т.е. любой перекрёсток (даже Т-образный) - всегда точка, а изгиб дороги точкой быть не может по определению
Я хоть и не являюсь разработчиком PocketGPS, но имею неплохое представление о прикладной математике в-общем и теории графов в частности. Ко всему прочему, являюсь разработчиком ПО. Ну вот, совсем расхвастался.
Теперь ближе к теме. Для прокладки маршрута можно применить две вещи: теорию графов или волновой алгоритм (и его разновидности). Граф подразумевает состоит из ребер и вершин. Причем ребра прямые. Этакая получившаяся паутина накладывается на растровую или вектрорную карту. В результате получаем математическую модель наших лююбимых дорог.
Другой способ (волновой алгоритм) реализуется путем накладывания сетки MxN на карту. Но в данном случае этот алгоритм малоэффективен из-за самой сути дорог, а так же из-за огромного количества требуемых ресурсов.
То большое количество ребер графа, которое мы видим на карте при сильном увеличении - это вынужденная мера, для того, чтобы алгоритм прокаладывания маршрута смог проложить корректный маршрут с учетом разметки, запрета поворотов и т.д. Другого способа НЕТ. Можно модифицировать и улучшить этот алгоритм, но граф останется, никуда он не денется.
Другой вопрос заключается в том, что нужно ли говорить подсказку, если у нас просто поворачивает дорога, и никакого перекрестка нет? Конечно же нет, не нужно.
Еще один вопрос заключается в том, чтобы алгоритм выдачи подсказок отличал ряд специальных развилок/перекрестков (развязки и круговые движения) для выдачи корректной подсказки пользователю. На текущий момент ИМХО подсказки выдаются корректно только в самых простых случаях. То есть на прстых перекрестках 
Вот об этом и было мое сообщение. К алгоритму прокладки маршрута у меня нет претензий. Глюки прокладки, которые возникают скорее относятся к карте.
Logout [25.01.2005 23:31] :
Андрей К. писал(а):
По сути:
1. сделать настройку "за сколько метров предпреждать" в заависимости от типа дороги и т.п. Не всё так просто, как кажется (например, условия движения по некоторым "магистральным" улицам сильно отличаются), но кое-что улучшить можно.
2. основные съезды с основных шоссе (и вообще улучшение обработки развязок). ОЧЕНЬ много ручной работы, но технически сделать можно. То же относится к многим круговым движениям, номерам поворотов и т.п. В ближайшем будущем (2-3 месяца) мы этим заниматься не сможем, если только что-то радикально не изменят картографы.
3. Отличать поворот улицы от изгиба дороги и т.п. Сложно при текущей карте. В ней есть понятие "узел графа", без каких-либо атрибутов (изгиб дороги, основной перекрёсток, съезд в переулок и т.п.). О значимости манёвра приходится судить по косвенным признакам (в частности, по величине угла между рёбрами графа). Этот вопрос ещё требует обдумывания.
4. Короткие команды, опережение. Решаемо.
1. В чем сложность? У вас же веса ребер проставлены. Кстати, какое отношение весов ребер МКАДа к магистральным улицам, или к улочкам? Просто интересно.
2. Согласен. Работы много. Но картографам можно тоже упростить работу, реализовав некоторые функции на уровне ядра. как я и говорил, это надо думать. И думать много
Быстрой реализации этой фичи я от вас и не жду. Понимаю масштаб бедствия.
3. Не видел кода вашей программы, но есть следующие выводы:
а) то что программа показывает мне по какой улице я еду, или то, что когда я кликаю на улицу с "i" мне говорят что это за объект. Из этого делаю вывод что программа может определить к какой улице относится то или иное ребро графа.
б) не сложно определить, что если угол между двумя ребрами слишком большой, то следует проверить, а к одной ли улице отностятся эти оба ребра? Если нет, то следуюет отметить эту точку как "поворотную точку". Так же, если угол небольшой, но ребра относятся к разным дорогам - выдать подсказку "прямо".
Если же конечно, граф у вас сам по себе, а объекты карты сами по себе... то это конечно плохо. Но тоже решаемо.
Еще предлагаю несколько фич. В частности, первая фича существенно облегчит жизнь вашим картографам, так как минимум 10-20 добровольцев из этого форума захотят на общественных началах сделать за свои же деньги продукт лучше
. А в частности запись трэка в каком-нибудь удобоваримом формате, для того, чтобы потом это отправить вам. Дело в том, что в области привязка дорог просто никакая. А некоторых дорог просто нет.
Вторая фича. Текстовая таблица элементов маршрута (повороты, расстояния до следующих поворотов и т.п.) Как пример - тот же Том-том или Гарминовский MapSource.
VctOs [26.01.2005 15:41] :
Андрей К. писал(а):
3. Отличать поворот улицы от изгиба дороги и т.п. Сложно при текущей карте. В ней есть понятие "узел графа", без каких-либо атрибутов (изгиб дороги, основной перекрёсток, съезд в переулок и т.п.). О значимости манёвра приходится судить по косвенным признакам (в частности, по величине угла между рёбрами графа). Этот вопрос ещё требует обдумывания.
Чем может отличаться поворот улицы от изгиба дороги я не понимаю (поворот это почти изгиб, а улица это почти дорога).
По развилкам: уже больше года прошло с того момента как ядро начало выдавать для каждой точки проложенного маршрута различные аттрибуты, в т.ч. признак наличия "развилки дороги".
Немного подробнее:
http://www.hpc.ru/pda/board/index.php?p=127817&highlight=#127817
Андрей К. [26.01.2005 18:39] :
Использованная терминология:
поворот улицы - место, где НУЖНО дать подсказку.
изгиб дороги - место, где НЕ НУЖНА подсказка.
Сорри, если было туманно.
Кстати, в следующей версии программы будет возможность отключать подсказки на изгибах дороги.
[Ответить]