
Вариант решения глюков с прокладкой и подсказками!
Господа, ну о чём речь ? Правила проезда перекрёстков формализуются если и не элементарно, то не так уж и сложно
Зачем выдумывать то, чего в данной ситуации реализовано быть просто не может ? А если и может, то с неоправданными затратами...

"Вот если бы все на мине подорвались... Но об этом можно только мечтать !"
K750i + HP4700 + BT338
K750i + HP4700 + BT338
Эээ... Ну так формализуйте :)Правила проезда перекрёстков формализуются если и не элементарно, то не так уж и сложно
WBR,
BreQwaS.
ICQ: 241785226
LJ: http://livejournal.com/users/breqwas
Hard: iPAQ hx4700, SD Kingston 1 Gb, Luch-BT
BreQwaS.
ICQ: 241785226
LJ: http://livejournal.com/users/breqwas
Hard: iPAQ hx4700, SD Kingston 1 Gb, Luch-BT
Здесь ???BreQwaS писал(а):Эээ... Ну так формализуйтеПравила проезда перекрёстков формализуются если и не элементарно, то не так уж и сложно

Я похож на идиота ?





Есть ещё одно маленькое "но" - это вообще имеет смысл делать для правильно сделанного алгоритма-основы. Ибо считаю, что основой для подсказок является способ прокладки маршрута. Сейчас он тоже реализован по одному из алгоритмов, имеющему право на жизнь, но как я уже говорил - далеко не лучший алгоритм с точки зрения последующих подсказок пользователю.
"Вот если бы все на мине подорвались... Но об этом можно только мечтать !"
K750i + HP4700 + BT338
K750i + HP4700 + BT338
-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
когда ты въезжаешь на этот конкретный перекресток, есть поворот направо и чуть дальше поворот налевоLogout писал(а):ну почему же. Правильно скажет: "поворот налево во второй заезд".Alligator. писал(а):По-моему алгоритм будет плохо обрабатывать проезд перекрестка типа "ступеньки", как в на картинке.
что такое "второй поворот налево" в этот момент будет просто непонятно

но важно знать, что поворачивая налево, надо оказаться в правом ряду, чтобы потом повернуть направо

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

PS ещё как один вариант, часто встречаются похожие "ступеньки", но совсем маленькие
в таком случае твой алгоритм также выдаст "второй поворот налево"
но реально на перекрестке это воспринимается как движение почти прямо, т.е. подсказка будет сбивать с толку и провоцировать всё-таки повернуть налево ...
мне кажется, что либо надо уметь как-то определять несколько "стандартных" траекторий, одна из которых "ступенька"
либо выдавать подсказку на каждую развилку, но группировать их в "связки"...
-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
А можешь сформулировать, что ты называешь "алгоритмом прокладки маршрута" и почему ты считаешь, что он плох с точки зрения подсказок пользователю?Чайни писал(а):Есть ещё одно маленькое "но" - это вообще имеет смысл делать для правильно сделанного алгоритма-основы. Ибо считаю, что основой для подсказок является способ прокладки маршрута. Сейчас он тоже реализован по одному из алгоритмов, имеющему право на жизнь, но как я уже говорил - далеко не лучший алгоритм с точки зрения последующих подсказок пользователю.
Просто у меня такое ощущение, что собственно прокладка маршрута (то, что как я понимаю, реализовано в ядре и сделано VctOs) работает вполне нормально, а проблемы в системе подсказок, которые уже генерятся не ядром, а тем, что сделано над ядром командой МакЦентра ...
Но в моем понимании, прокладка маршрута - это генерация последовательности ребер, соответствующей оптимальному пути из точки А в точку В...
А проблемы в том, как выбираются точки, в которых выдаются подсказки, и какие подсказки в этих точках выдаются ...
повторяю... прокладка маршрута реализована можно сказать безошибочно, но алгоритм - неудачный. Алгоритм неудачный в том, что учитывает точки вне перекрёстков. Вне реальных перекрёстков (не будем использовать терминологию теории графов). Отсюда лезут лишние подсказки, а если уменьшать кол-во точек прокладки, т.е. "двигать ползунок", то из-за этого начинают пропускаться реальные перекрёстки. Это - главный недостаток существующего алгоритма. Он нацелен исключительно на прокладку маршрута любой ценой, а не на то, чтобы потом на реальных перекрёстках выдавались подсказки, причём только на перекрёстках, и без пропусков перекрёстков.
О том, какие подсказки должны вообще быть, можно говорить только после решения именно той задачи, о которой я говорю. Без решения этого говорить о "качестве подсказок" не имеет смысла - система всё равно не выполняет своих функций (навигация и помощь водителю в движении) КАК НАДО.
Будет поставлена грамотно задача, будет решена, тогда можно говорить о формализации системы подсказок на разных типах перекрёстков. А сейчас нет смысла обсуждать, какая стрелка должна выдаваться водителю посреди почти ровной (с небольшим изгибом) дороги, где поворота никуда и нет, и какая стрелка должна выдаваться на перекрёстке, на котором вообще никакая стрелка не выдаётся.
Да, ядро маршрут прокладывает, но, повторяю ещё раз, оно прокладывает маршрут ТАК, что система подсказок работать правильно не может в принципе.
(ударения на словах "прокладывает", "ТАК" и "в принципе")
Довести до ума, наверное, всё же можно... но появление "галочки" - только перекрёстки - ситуацию не спасает, а лишь усложняет программу и запутывает водителя. Поэтому и внёс то предложение МАКЦЕНТРУ...
Надеюсь, я объяснил, какая проблема НА САМОМ ДЕЛЕ стоит ?
О том, какие подсказки должны вообще быть, можно говорить только после решения именно той задачи, о которой я говорю. Без решения этого говорить о "качестве подсказок" не имеет смысла - система всё равно не выполняет своих функций (навигация и помощь водителю в движении) КАК НАДО.
Будет поставлена грамотно задача, будет решена, тогда можно говорить о формализации системы подсказок на разных типах перекрёстков. А сейчас нет смысла обсуждать, какая стрелка должна выдаваться водителю посреди почти ровной (с небольшим изгибом) дороги, где поворота никуда и нет, и какая стрелка должна выдаваться на перекрёстке, на котором вообще никакая стрелка не выдаётся.
Да, ядро маршрут прокладывает, но, повторяю ещё раз, оно прокладывает маршрут ТАК, что система подсказок работать правильно не может в принципе.
(ударения на словах "прокладывает", "ТАК" и "в принципе")
Довести до ума, наверное, всё же можно... но появление "галочки" - только перекрёстки - ситуацию не спасает, а лишь усложняет программу и запутывает водителя. Поэтому и внёс то предложение МАКЦЕНТРУ...
Надеюсь, я объяснил, какая проблема НА САМОМ ДЕЛЕ стоит ?
"Вот если бы все на мине подорвались... Но об этом можно только мечтать !"
K750i + HP4700 + BT338
K750i + HP4700 + BT338
-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
спасибо, я тебя понялЧайни писал(а):Надеюсь, я объяснил, какая проблема НА САМОМ ДЕЛЕ стоит ?
вопрос в терминологии. просто я отделяю расстановку точек, по которым выдаются подсказки, от задачи прокладки маршрута
но терминология в конечном счёте не так важна

однако по-моему, если поставить флажок "только развилки", то эта самая расстановка точек становится почти удовлетворительной
ты не согласен?
по крайней мере, мне кажется, что уже можно говорить о подсказках

и заодно о том, где стоило бы поставить точку для выдачи подсказки ...
Наверно, я неправильно выразился. Имелся ввиду дословный перевод "take second left". То есть во второй заезд направо (первый по-моему там в туннель уходит).Alligator. писал(а):когда ты въезжаешь на этот конкретный перекресток, есть поворот направо и чуть дальше поворот налевоLogout писал(а):ну почему же. Правильно скажет: "поворот налево во второй заезд".Alligator. писал(а):По-моему алгоритм будет плохо обрабатывать проезд перекрестка типа "ступеньки", как в на картинке.
что такое "второй поворот налево" в этот момент будет просто непонятно![]()
По расстоянию между нимиAlligator. писал(а): но важно знать, что поворачивая налево, надо оказаться в правом ряду, чтобы потом повернуть направо![]()
т.е. это именно "связка"
ты писал про связки, но в твоем предложенном алгоритме остается неясным вопрос, как отличать "перекресток" от "связки перекрестков"


Однозначно. Есть куда стремиться.Alligator. писал(а): мне кажется, что это вопрос непростой, и алгоритм, который, конечно, можно придумать, не всегда будет решать эту задачу правильно![]()
"маленькие" ступеньки можно спокойно игнорировать. Это один из уточняющих факторов предложенного мной алгоритма. Реализация, кстати, алгоритма должна предусматривать каки-либо дополнительные правила, которые можно было бы легко дополнять. То есть обработка перекрестка будет состоять из последовательно наложенных обработчиков (юнитов). При правильной рализации это будет красиво и легко расширяемо/исправляемо.Alligator. писал(а): PS ещё как один вариант, часто встречаются похожие "ступеньки", но совсем маленькие
в таком случае твой алгоритм также выдаст "второй поворот налево"
но реально на перекрестке это воспринимается как движение почти прямо, т.е. подсказка будет сбивать с толку и провоцировать всё-таки повернуть налево ...
ИМХО второе.Alligator. писал(а):мне кажется, что либо надо уметь как-то определять несколько "стандартных" траекторий, одна из которых "ступенька"
либо выдавать подсказку на каждую развилку, но группировать их в "связки"...
-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
нуу, всё равно не очень понятно будетLogout писал(а):Наверно, я неправильно выразился. Имелся ввиду дословный перевод "take second left". То есть во второй заезд направо (первый по-моему там в туннель уходит).Alligator. писал(а):когда ты въезжаешь на этот конкретный перекресток, есть поворот направо и чуть дальше поворот налево
что такое "второй поворот налево" в этот момент будет просто непонятно![]()

надо это рассматривать именно как связку, тогда правильно будет ...
а туннеля там нет

-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
Второе однозначно прощеLogout писал(а):ИМХО второе.Alligator. писал(а):мне кажется, что либо надо уметь как-то определять несколько "стандартных" траекторий, одна из которых "ступенька"
либо выдавать подсказку на каждую развилку, но группировать их в "связки"...

В этом случае надо просто брать некоторое расстояние, "развилки", расстояние между которыми меньше, объединять в "связки" и выдавать общую подсказку
Хотя первое мне кажется лучше

Если научиться определять некоторое кол-во "стандартных" типов перекрестков ("ступенька", "круговое двидение", и т.п.), то можно подсказки выдавать лучше

Не-аAlligator. писал(а):вопрос в терминологии.


Сама по себе абстрактная задача прокладки маршрута не имеет смысла, если подсказки выдаются водителям не там, где надо, и не такие, как надо. Задача выдачи подсказок, конечно же, не совпадает с задачей прокладки маршрута, но от того, как проложен маршрут (а точнее - какие "опорные точки" на нём присутствуют), такими и будут подсказки (именно в том смысле, что я написал раньше - не там, и не то). Это означает, что от алгоритма прокладки маршрута зависит и алгоритм генерации подсказок на проложенном маршруте.Alligator. писал(а):просто я отделяю расстановку точек, по которым выдаются подсказки, от задачи прокладки маршрута
Сорри, если повторяюсь

Нет. Абсолютно ! Это лишь приближает к более-менее видимому решению задачи "правильного сопровождения", но окончательно её не решает. Я уже говорил, что при нынешнем подходе задачу, может, и можно решить, но это слишком... как бы это сказать помягче... утяжеляет систему. И ресурсов больше жрёт, и настроек лишних куча, и настройки всё менее и менее будут понятны пользователю. В итоге - конфигурацией настроек делается то, что могло быть сделано программно без "заморочек". И общее название такого решение - налепить "заплаток". Эти заплатки "выпирают", буквально орут о непродуманном решении. Уж прости, но не люблю такие системы.Alligator. писал(а):однако по-моему, если поставить флажок "только развилки", то эта самая расстановка точек становится почти удовлетворительной
ты не согласен?
Не-аAlligator. писал(а):по крайней мере, мне кажется, что уже можно говорить о подсказках


В том и дело, что ОСНОВНАЯ ПРОБЛЕМА - эти точки ! Разрабатывать алгоритм на "сырой" основе - увольAlligator. писал(а):и заодно о том, где стоило бы поставить точку для выдачи подсказки ...

"Вот если бы все на мине подорвались... Но об этом можно только мечтать !"
K750i + HP4700 + BT338
K750i + HP4700 + BT338
-
- Кандидат (3 lvl)
- Сообщения: 177
- Зарегистрирован: Ср май 05, 2004 15:07
В ситуации, как на Самотеке, правильная система будет генерить связки, в частности по приведенному маршруту подсказки будут:
- перед первым светофором на Самотеке - go straight on, then turn left;
- перед поворотом налево - turn left, then turn right
При этом на экране появятся две стрелки вместо обычной одной.
Если плечо между поворотами достаточно длинное, то вторая связка может быть - turn left, then stay in the right lane.
Почему ТомТом это умеет делать, а ПГПСП нет? ХЗ. Но солидарен с gren, что проще дождаться прохода ТомТома, чем убедить разработчиков ПГПСП в том, что в основу функционирования их системы заложены неверные алгоритмы.
- перед первым светофором на Самотеке - go straight on, then turn left;
- перед поворотом налево - turn left, then turn right
При этом на экране появятся две стрелки вместо обычной одной.
Если плечо между поворотами достаточно длинное, то вторая связка может быть - turn left, then stay in the right lane.
Почему ТомТом это умеет делать, а ПГПСП нет? ХЗ. Но солидарен с gren, что проще дождаться прохода ТомТома, чем убедить разработчиков ПГПСП в том, что в основу функционирования их системы заложены неверные алгоритмы.
В жизни всякое бывает, но с годами - все реже...
В том то и дело, что правило по которому подбирать некий стандартный тип перекрестка не очень хорошо формализуется. В этом и проблема. Опять же, на все случаи жизни шаблонами не напасешься.Alligator. писал(а):Второе однозначно прощеLogout писал(а):ИМХО второе.Alligator. писал(а):мне кажется, что либо надо уметь как-то определять несколько "стандартных" траекторий, одна из которых "ступенька"
либо выдавать подсказку на каждую развилку, но группировать их в "связки"...
В этом случае надо просто брать некоторое расстояние, "развилки", расстояние между которыми меньше, объединять в "связки" и выдавать общую подсказку
Хотя первое мне кажется лучше
Если научиться определять некоторое кол-во "стандартных" типов перекрестков ("ступенька", "круговое двидение", и т.п.), то можно подсказки выдавать лучше
Что-то я совсем потерял нить разговора. Если мы говорим о твоей картине, то я однозначно вижу там два поворота: первый поворот налево во второй заезд и затем поворот направо. Что не так?Alligator. писал(а):нуу, всё равно не очень понятно будетLogout писал(а):Наверно, я неправильно выразился. Имелся ввиду дословный перевод "take second left". То есть во второй заезд направо (первый по-моему там в туннель уходит).Alligator. писал(а):когда ты въезжаешь на этот конкретный перекресток, есть поворот направо и чуть дальше поворот налево
что такое "второй поворот налево" в этот момент будет просто непонятно![]()
он всё-таки не left ...
надо это рассматривать именно как связку, тогда правильно будет ...
а туннеля там нет

Кстати, я оговорился, на "второй заезд направо", а "налево" (см. курсив в цитате)[/i]
-
- Профессор (5 lvl)
- Сообщения: 708
- Зарегистрирован: Пт окт 10, 2003 14:25
да по-моему уже пора заканчивать этот флудLogout писал(а):Что-то я совсем потерял нить разговора. Если мы говорим о твоей картине, то я однозначно вижу там два поворота: первый поворот налево во второй заезд и затем поворот направо. Что не так?![]()
Кстати, я оговорился, на "второй заезд направо", а "налево" (см. курсив в цитате)[/i]

я говорил о той самой картинке
поворот налево я считал единственным (первый - это встречка)
но рассматривал вместе с последующим поворотом направо как единый перекресток