Как я могу представить дорожную систему в программном обеспечении?

Я собираюсь провести имитацию дорожного движения в качестве побочного проекта, но у меня возникают проблемы с идеями о том, как я должен представлять саму дорогу. Мне нравится идея использовать серию путевых точек (прямые линии с координатами широта и долгота), но мне сложно представить разные полосы движения с помощью этого метода. Я также изучал некоторые другие вопросы о моделировании дорожного движения, и в одном из них упоминается использование растрового изображения, но мне трудно решить, как это позволит мне легко назначать реальные длины сегментам дороги, ширину полос и т. Д. Есть ли у кого-нибудь полезные советы или другие идеи, которые позволили бы автомобилю существовать в определенной точке дороги и иметь возможность переключаться между полосами движения и т. Д.?


person Joe Phillips    schedule 28.05.2011    source источник
comment
если вас интересует очень реалистичное моделирование, вы можете использовать базу данных, например открытую карту улиц: openstreetmap.org   -  person Paul W    schedule 28.05.2011
comment
Я могу подтвердить это. В прошлом мы делали несколько проектов с openstreetmap, и он неплохо работает. Возможно, вам придется упростить данные из openstreetmap, поскольку они очень подробны и вам могут не понадобиться слишком сложные соединения между двумя узлами на карте (незначительное изменение направления полосы может не иметь для вас никакого отношения).   -  person marsbear    schedule 28.05.2011


Ответы (3)


Я бы начал с сетки связанных узлов. Узел будет представлять изменение состояния дороги, например, пересечение, начало или конец полосы, расширение самой дороги и т. Д. Либо вы выполняете сложные соединения, которые хранят всю информацию (полосы в обоих направлениях? Сколько полос в каждом направлении? Полоса properties и т. д.), или вы сохраняете одно соединение для каждой полосы. Чтобы убедиться, что 2 соединения на разных сторонах узла связаны с одной и той же полосой, вы можете использовать идентификаторы дорожек для каждого узла.

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

person marsbear    schedule 28.05.2011
comment
Мне нравится идея использовать идентификаторы дорожек для каждого узла. Я должен подумать об этом. Моя главная задача при использовании этого метода - определить, где находится машина. Что, если это на полпути между двумя узлами или между двумя узлами? - person Joe Phillips; 28.05.2011
comment
Если вы используете способ «одно соединение на полосу», вы можете сказать, что транспортное средство x находится на соединении y в позиции z. Если вы украшаете свои узлы значениями позиции, тогда каждое соединение имеет неявную начальную и конечную точку, а также длину. Абсолютное положение транспортного средства определяется, как указано выше: соединение (полоса движения) + положение на полосе движения (возможно, в метрах). - person marsbear; 28.05.2011
comment
Я думаю, что склоняюсь к этому. Просто пытаюсь проработать детали - person Joe Phillips; 28.05.2011

Это действительно зависит от того, что вы хотите делать со своей моделью, поэтому здесь сложно дать «правильный» ответ.

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

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

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

person Wouter van Nifterick    schedule 28.05.2011
comment
Я хочу смоделировать настоящую автостраду. Для этого, я думаю, вам нужно принять во внимание практически все, включая полосы движения. - person Joe Phillips; 28.05.2011
comment
Если вы хотите построить модель для моделирования, обычно не стоит делать это снизу вверх. Похоже, что вы здесь делаете именно это. Реальность такова, что вы в конечном итоге потратите слишком много времени на реализацию деталей, которые не имеют значения для того, что вы пытаетесь исследовать. Если вы хотите узнать, каковы результаты для транспортных потоков, когда водители меняют полосу движения, вам необходимо ввести полосы движения. - person Wouter van Nifterick; 28.05.2011
comment
В общем, я думаю, что разумнее начать с максимально простой модели. Запустите моделирование с этим и используйте результаты, чтобы решить, где вам нужно добавить детали. - person Wouter van Nifterick; 28.05.2011
comment
Нереалистично и неразумно пытаться начать с общего симулятора мира, где вы моделируете сами автомобили, гравитацию, интеллект водителя, дороги со всеми их деталями, светофоры, правила дорожного движения, а затем ожидаете определенных (пока не определенных) результатов. появиться автоматически, потому что симуляция настолько реалистична. Поэтому я считаю, что нет, вам не нужно принимать во внимание почти все. Я говорю не о модели дороги, а об общем подходе к моделированию симулятора. - person Wouter van Nifterick; 28.05.2011
comment
Я не пытаюсь испортить тебе удовольствие. Напротив ... Будет гораздо приятнее, если вы достигнете поставленных целей, чем если вы просто потратите время на бесцельные игры. - person Wouter van Nifterick; 28.05.2011

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

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

Короче говоря, многоугольники, составляющие дорогу, были построены вокруг центральной дорожки вдоль дороги, например

*------*------*
|\     |\     |
| \    | \    |
|  \   |  \   |
|   \  |   \  |
|    \ |    \ |
|     \|     \|
*------*------*

где * - вершина, создающая 4 полигона для этого простого прямого участка дороги.

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

Не уверен, что это именно то, что вам нужно, но я все же надеюсь, что это поможет :-)

person andyb    schedule 28.05.2011
comment
Это действительно близко к подходу, над которым я сейчас работаю. Спасибо за советы! - person Joe Phillips; 29.05.2011