Я собираюсь провести имитацию дорожного движения в качестве побочного проекта, но у меня возникают проблемы с идеями о том, как я должен представлять саму дорогу. Мне нравится идея использовать серию путевых точек (прямые линии с координатами широта и долгота), но мне сложно представить разные полосы движения с помощью этого метода. Я также изучал некоторые другие вопросы о моделировании дорожного движения, и в одном из них упоминается использование растрового изображения, но мне трудно решить, как это позволит мне легко назначать реальные длины сегментам дороги, ширину полос и т. Д. Есть ли у кого-нибудь полезные советы или другие идеи, которые позволили бы автомобилю существовать в определенной точке дороги и иметь возможность переключаться между полосами движения и т. Д.?
Как я могу представить дорожную систему в программном обеспечении?
Ответы (3)
Я бы начал с сетки связанных узлов. Узел будет представлять изменение состояния дороги, например, пересечение, начало или конец полосы, расширение самой дороги и т. Д. Либо вы выполняете сложные соединения, которые хранят всю информацию (полосы в обоих направлениях? Сколько полос в каждом направлении? Полоса properties и т. д.), или вы сохраняете одно соединение для каждой полосы. Чтобы убедиться, что 2 соединения на разных сторонах узла связаны с одной и той же полосой, вы можете использовать идентификаторы дорожек для каждого узла.
Таким образом, у вас есть график, на котором вы можете проводить вычисления, и все данные для визуализации всей сети.
Это действительно зависит от того, что вы хотите делать со своей моделью, поэтому здесь сложно дать «правильный» ответ.
Если вы хотите моделировать перегрузки, вам может вообще не понадобиться сеть. Вы можете смоделировать это на круговой дороге.
Вам действительно нужна концепция полос? Если вы это сделаете, вы можете просто смоделировать их как отдельные линии между узлами, или, может быть, достаточно просто сохранить количество полос на дорогу.
В любом случае, я хочу сказать, что сначала вам следует подумать немного глубже о том, чего вы хотите достичь, прежде чем вы начнете думать о точной модели данных.
На предыдущей работе я был ведущим разработчиком симулятора вождения, в частности моделирования дорожной сети. Я построил то, что я назвал логической дорожной сетью, которая представляла собой абстрактное описание дорожной сети, которая используется для отслеживания транспортных средств на дороге.
Полоса - это просто путь, который следует за дорогой, но смещен на положительное или отрицательное расстояние от центрального пути. Каждая дорога представляла собой прямой или изогнутый участок и по сути представляла собой путь из центральных вершин с одной или несколькими смещенными полосами с каждой стороны. Тогда автономные автомобили могут следовать по полосе движения.
Короче говоря, многоугольники, составляющие дорогу, были построены вокруг центральной дорожки вдоль дороги, например
*------*------*
|\ |\ |
| \ | \ |
| \ | \ |
| \ | \ |
| \ | \ |
| \| \|
*------*------*
где * - вершина, создающая 4 полигона для этого простого прямого участка дороги.
Интерполяция между двумя вершинами на пути предоставила простой способ переместить транспортное средство в заданном направлении. Вдобавок к этому простому пути мы затем ввели некоторую нечеткость для автономных транспортных средств, чтобы возникали небольшие отклонения на пути (создавая более реалистичное движение). Логично, что автомобили добавлялись к сегменту дороги и удалялись с него, и автомобили могли проверять этот сегмент, чтобы видеть другие автомобили впереди, сзади или на другой полосе. Это позволило в некоторой степени использовать ИИ внутри каждого транспортного средства, чтобы они могли замедлиться позади другого транспортного средства или дождаться прохождения встречного транспорта, прежде чем совершить поворот.
Не уверен, что это именно то, что вам нужно, но я все же надеюсь, что это поможет :-)