Траектория разворота на перекрестке в картинках: Правила разворота на перекрестке в 2023 году

Содержание

Разворот на перекрестке — как правильно разворачиваться на перекрестке согласно ПДД, как делать разворот на перекрестке

Разворот на перекрёстке ПДД описывает немногословно, упоминаются лишь запреты и случаи, когда он разрешен. Однако, данный маневр имеет ряд особенностей.

Как правильно делать разворот на перекрестке?

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

  • Маневрирование выполняется с обязательным предупреждением о своих намерениях другим участникам движения посредством включения левого указателя поворота. При поломке внешних световых водитель автомобиля сообщает о будущей траектории используя левую руку, согнутую в локте.
  • Сам указатель не должен вводить в заблуждение и включается заблаговременно. В городе используется сигнал за 50-100 метров, за городом за 150-200 метров. Таким образом даётся возможность уведомить остальных и подготовиться к развороту. Важно, что включение не используется при совершении манёвра или его окончании, а заранее.
  • Сам разворот делается с крайнего левого положения.
  • Выполняется поворот/разворот таким образом, чтобы автотранспорт не оказался на полосе встречного движения, а иначе это может спровоцировать аварийную ситуацию.
  • В случае разворота с трамвайных путей при необходимости, автолюбитель не препятствует движению трамвая.
  • Разворачиваясь независимо от вида перекрёстка, необходимо уступить дорогу автотранспорту со встречных полос, что едут прямо или направо, а также трамваю.

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

Наши принципы

6 причин выбрать нашу автошколу

I

Никаких скрытых платежей

Сообщаем точные суммы и сроки перед заключением договора. Есть рассрочка платежа.

II

Коллектив автошколы

Веселый, стрессоустойчивый и пунктуальный. Обучают как мужчины, так и женщины.

III

Транспортные средства

МКП, АКП, электромобили и симулятор. Чистые и приятно пахнут. Климат- контроль. Гидроусилитель.

IV

Преподаватели и инструкторы

Постоянно учатся. Работают по чек-листу МРЭО. Онлайн в Telegram. Легко поменять.

V

Каждому клиенту доступно

Персональный менеджер. Теория офлайн и онлайн. Широкий выбор групп и адресов. Автосимулятор.

VI

Наши автоклассы

Комфортные столы и сиденья. Удобное расположение в городе. Климат- контроль.

Разворот на регулируемом перекрестке

Разворот на перекрестке со светофором осуществляется достаточно просто:

  • Автомобиль необходимо перестроить в крайнее левое положение(как можно ближе к разметке посередине) и включить указатель левого поворота.
  • По включению зелёного сигнала и разрешённой стрелке на дополнительной секции налево, начинаем движение до середины перекрестка. Передние колёса авто сохраняют ровность.
  • Как выполнить разворот на регулируемом перекрестке? На середине перекрестка снижаем скорость и готовимся по требованию уступить дорогу встречке. Середина перекрестка – наше потенциальное место остановки. Если препятствий для движения нет – выполняем разворот.
  • Важно следить за тем, что происходит слева от авто и сзади.

Разворот на нерегулируемом перекрестке

Выполняя разворот на перекрёстке без светофоров и регулировщика стоит учесть, где авто двигается – на главной или второстепенной.

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

  • Перестраиваемся в крайнее левое положение и включаем указатель левого поворота для предупреждения.
  • При низкой скорости доезжаем до середины перекрестка.
  • Берем во внимание разворот на перекрестке с пешеходным переходом и встречными авто выполняется после предоставления преимущества.

Разворот на Т-образном перекрестке

Трехсторонние перекрестки могут иметь разные дорожные условия и одно з них – наличие одностороннего движения.

Разворот на перекрёстке с односторонним движением т-образной формы выполняется после полной оценки ситуации. Манёвр не запрещается на таком участке, в отличие от поворота налево. Главное, не создавать аварийных ситуаций и выполняешь его при условии низкого потока автотранспорта.

Через трамвайные пути

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

С разделителем

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

Манёвр разворота совершается с крайнего положения, важно уведомить о намерениях остальных водителей световым указателем, так как при наличии разделительной возможно увеличение скоростного режима. Если разрыв находится на перекрёстке, то при развороте предоставляем дорогу автомобилям, имеющим приоритет. Чаще всего места с технологическими разрывами разделительной вне перекрёстков предусматривают разворот лишь с одной стороны, исключая «угадывание» траектории разворота встречных транспортов.

Где запрещен разворот на перекрестке?

Дабы точно понимать, разрешён ли разворот на перекрёстке и вне перекрестка, обратимся к ПДД и местам запрета совершения манёвра. Запрещено:

  1. Маневрирование в туннелях, на жд-пересечениях.
  2. Эстакады, мосты, путепроводы. ( А также под ними)
  3. На пешеходных, не ближе 10 м перед обозначенным местом для перехода и после.
  4. Обзорность дороги меньше 100м хотя бы в одну сторону.
  5. На магистралях и дорогах для авто, в технических разрывах. Кроме случая наличия указанного места для разворота.

В случае перекрестков, отсутствуют запреты для выполнения, а лишь условия безопасного совершения. (За исключением запретов соответствующими знаками и разметкой).

Автошкола в Днепре “Проспект” проводит постоянный набор групп на категорию «A», «В», «С», обучение на права категории «D», свяжитесь с менеджером по тел +38 (067) 572-68-42 (Тelegram) или оставьте заявку на сайте, для записи на обучение.

Как правильно развернуться на перекрёстке? — Kolesa.kz || Почитать

Типичная ситуация: вам нужно развернуться, слева тянется сплошная разметка — придётся разворачиваться на ближайшем перекрёстке. Всё верно, но как это сделать правильно?

Однозначно ответить нельзя — перекрёстки бывают разных конфигураций. Но есть одно требование, которое необходимо выполнять всегда, — соблюдать пункт 8.7 ПДД РК:

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

Казалось бы, к чему он, ведь поворот (возможный не только налево, но и направо) и разворот не одно и то же.

А теперь пример: вы движетесь по проспекту Райымбека в Алматы и решили развернуться на пересечении с улицей, к примеру, Панфилова. Особенность этого места в том, что оно имеет два пересечения проезжей части в пределах одного перекрёстка. Поэтому на них необходимо разворачиваться по большому радиусу, т. е. так, чтобы при выезде с первого пересечения не оказаться на стороне движения встречных машин.

Разворот на перекрёстке с разделительной полосой

На обычном перекрёстке разворачивайтесь так, чтобы при выезде с него также не оказаться на встречной стороне дороги.

Разворот на обычном перекрёстке

Второе правило, которое необходимо соблюдать (п.  8.6 ПДД РК):

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

Разворот разрешён только с крайней левой полосы (или с трамвайных путей, если не установлен знак «Движение по полосам»), хотя есть одно исключение (п. 8.8 ПДД РК):

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

Тут всё понятно.

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

Во всех ПДД нет ни слова о том, как проехать перекрёсток при развороте или повороте налево. Есть лишь упоминание, что при выезде нужно быть на стороне дороги своего направления, и прямые запреты того, как разворачиваться нельзя (п.  8.12-1 ПДД РК):

Разворот запрещается на пешеходных переходах и на перекрёстках по линии тротуаров или обочин.

Разворот на перекрёстке с пешеходным переходом

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

Но на перекрёстках с пересечением двух и более проезжих частей разворачиваться необходимо только по большому радиусу.

Будьте внимательны на дорогах, соблюдайте правила дорожного движения!

Ещё по теме

  • Александр Артемьев в 24-часовой гонке в Дубае: топ-5 класса и… клин мотора

    | | 7. 8K 5

  • Самые крутые премьеры автосалона в Гуанчжоу

    | | 18.9K 10

  • Праздник к нам приходит на красных грузовиках

    | | 9.7K 1

  • Пляжи, казино и автомобили, вернувшиеся с того света

    2 декабря 2022 | | 14. 3K 5

Моделирование траектории транспортных средств, поворачивающих влево, и установка направляющих линий на перекрестке

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

1. Введение

В большинстве мест в Китае на перекрестке нет указаний по полосе и ограничений, и многие водители хотят как можно скорее выехать на целевую полосу под влиянием психологического стимула. Когда транспортные средства, поворачивающие налево, пересекают стоп-линию и въезжают на перекресток, многие поворачивающие транспортные средства часто произвольно меняют маршрут движения. Явление случайного рассредоточения транспортных средств в пределах перекрестка вызывает серьезные конфликты между транспортными средствами и не позволяет транспортным средствам двигаться плавно. Это снижает эффективность и безопасность дорожного движения. Таким образом, путем анализа и исследования траекторий левоповоротных транспортных средств на перекрестке был предложен метод задания направляющей линии. Метод направления транспортных средств, поворачивающих в ряд, представляется необходимым и целесообразным для повышения уровня эффективности и безопасности левоповоротных транспортных средств на перекрестке. Он имеет определенное теоретическое и практическое значение.

В последние годы, чтобы уменьшить задержку транспортных средств, поворачивающих налево, на перекрестке и улучшить эксплуатационные характеристики движения, многие ученые провели исследования с разных точек зрения. Например, Ма и Янг [1] изучили скоординированный подход к проектированию группы левоповоротных перекрестков с большим и небольшим количеством людей, принимая во внимание как фазовую координацию, так и пространственную координацию, а также установили модель оптимизации для минимизации общей задержки; Кикучи и др. [2] изучали влияние двойной длины полос для левого поворота на работу. Шен [3] исследовал взаимосвязь между средней задержкой транспортного средства и длиной участка слияния. И она предложила метод определения минимальной длины сливающихся участков для тройных полос левого поворота, у которых полоса движения вниз по течению была меньше, чем полоса въезда. Эйлер [4] изучал проблему тройных полос для левого поворота, которые использовались на больших перекрестках и приводили к высокой частоте аварий и задержке движения. И была предложена концепция артериального обмена. Ву и др. [5] извлекли данные о траекториях левоповоротных транспортных средств с помощью видеометода и предложили метод перевода координат изображения в мировые координаты. Кайт и др. [6] предложили метод IQA для оценки задержки левого поворота. Ци и др. [7] использовали разные модели для оценки длины очереди на левый поворот, и результаты метода, основанного на моделировании, сравнивались с другими. Яо [8] Яо и Чжан [9] изучали синхронизацию сигнала и схему полосы движения коротких полос для левого поворота на изолированном перекрестке или на двух соседних перекрестках; Лю и др. [10] изучили поведение водителей при выборе полосы для левого поворота и указали на основные факторы выбора вне полосы для левого поворота. Мусса и др. [11] использовали систему дополненной реальности (ARV) для изучения маневра левостороннего движения. Многие виртуальные объекты, такие как пешеходы, транспортные средства и другие, можно было увидеть во время вождения в условиях реального дорожного движения. По результатам эксперимента система «АРВ» смогла эффективно улучшить работу водителей. Альхаджасин и др. [12] записали траектории отдельных транспортных средств, используя спиральную кривую Эйлера и круговую кривую с учетом геометрии пересечения, различных типов транспортных средств и скорости. Альхаджасин и др. отметил, что траектории транспортных средств очень важны при анализе маневров водителя. Ли и др. [13] изучали влияние факторов задержки при повороте налево на установку сигнала. Сандо и Мозес [14] исследовали 15 пересечений тройных полос с левым поворотом и изучили влияние геометрических факторов на работу левоповоротного движения. Ву и др. [15] оптимизированы фазы левого поворота для уменьшения задержки. Результаты этих исследований в некоторой степени влияют на уменьшение задержек при повороте налево, конфликтов и т. д. Однако, когда транспортные средства, поворачивающие налево, пересекают стоп-линию и выезжают на перекресток, проблема транспортных средств, мешающих друг другу, не получила должного решения. Транспортные средства случайным образом меняют свои линии, что влияет на уровень безопасности и эксплуатационные характеристики транспортных средств, поворачивающих налево, в процессе их поворота. Ван и др. [16] предложили новую модель сотовой передачи для имитации условий перенасыщенного трафика при блокировке левого поворота. Кунер и др. [17] выдвинул предварительную мысль об использовании направляющих линий для тройных левых поворотов и двойных правых поворотов в Техасе. Би и др. [18–20] изучали прогнозирование прибытия автобусов и другое соответствующее исследовательское содержание, которое можно было бы использовать при формулировании стратегии управления сигналами пересечения нескольких полос движения с левым поворотом в будущем.

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

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

2.1. Извлечение центра транспортного средства и коррекция искажения объектива камеры

Траектории транспортных средств могут эффективно отражать изменения их пространственного положения, скорости, ускорения, условий транспортного потока и плотности транспортных средств в определенное состояние времени. И траектории могут предоставить экспериментальные данные для модели взаимодействия транспортных средств, такие как модель допустимого разрыва, модель следования и модель смены полосы движения. В этой статье меры видеообнаружения используются для получения в реальном времени траекторий транспортных средств, поворачивающих налево, внутри перекрестка. Во-первых, центры поворачивающих транспортных средств внутри перекрестка извлекаются с помощью сложного алгоритма извлечения. А затем отслеживаются их центры, фиксируются координаты положения центров в разное время. С учетом дисторсии объектива камеры корректируется его центр. Наконец, скорректированные координаты изображения преобразуются в мировые координаты и получаются траектории транспортных средств. Центр поворота транспортного средства рассчитывается по следующим уравнениям: где информация о контуре транспортного средства и представляет количество пикселей, включенных в .

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

Используя описанный выше метод, можно извлечь траектории движения транспортных средств, поворачивающих налево, на перекрестке. Взяв в качестве примера перекресток улиц Тунчжи и Цзиюу-роуд в городе Чанчунь, мы извлекли траектории движения транспортных средств, поворачивающих налево, с востока на юг, и одно из изображений показано на рисунке 2.

2.2. Извлечение смещения транспортного средства и оценка скорости

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

Средняя скорость транспортных средств в течение этого интервала времени может быть выражена как где – количество кадров изображения, содержащихся в движущемся перемещении, соответствующем интервалу времени, и – время изображения каждого кадра, которое в документе составляет 0,04 с.

Извлекая перемещение транспортного средства в процессе поворота, записывая время поворота транспортных средств и количество поворачивающих транспортных средств, можно рассчитать среднюю скорость поворачивающих транспортных средств как

Расчет средней скорости поворота транспортных средств может использоваться для измерения эффективности движения транспортных средств при различных условиях установки направляющей линии или без установки объездной линии.

3. Модель траектории левоповоротного автомобиля
3.1. Характеристики поворота транспортных средств с левым поворотом

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

( 1) Распределение траекторий . В один и тот же период времени зеленой фазы, от начала зелени до конца, транспортные средства плотно оборачиваются слой за слоем снаружи внутрь и от разреженного к плотному, что может образовывать огибающую поверхность. После того, как были извлечены и исследованы траектории 120 циклов левоповоротных транспортных средств, можно было сделать такой же вывод. Как показано на рисунке 3, с порядком поворота очереди траектории транспортных средств, проходящих через перекресток, извлекаются во время зеленого поворота налево. Чтобы легко различать траектории разных транспортных средств, для обозначения траекторий разных порядков используются разные цвета, например красный, желтый и синий. Характеристики распределения траекторий могут служить ориентиром для выбора области установки направляющих линий.

( 2) Характеристики изменения скорости поворота . Отслеживая и контролируя скорость транспортных средств, поворачивающих налево, мы могли бы обнаружить, что, когда транспортные средства, поворачивающие налево, меняют свою полосу движения во время поворота, скорость заднего транспортного средства будет показывать очевидную паузу или замедление. Наоборот, если все транспортные средства, поворачивающие налево, не меняют свою полосу движения во время поворота, колебания скорости будут небольшими, а освобождение от движения будет стабильным и эффективным. Таким образом, необходимо направлять движение транспортных средств на поворотах и ​​уменьшать поведение при смене полосы движения. Изменения скорости отражают остроту конфликтов между левоповорачивающими транспортными средствами, и водители вынуждены принимать меры по обеспечению личной безопасности. С другой стороны, извлечение скорости может быть использовано для расчета угла поворота транспортных средств в процессе моделирования траектории.

( 3) Характеристики распределения потока различного поперечного сечения . От въезда на перекресток по диагонали выводят три участка, а также изучаются характеристики распределения потока во времени при въезде на перекресток левоповоротного потока. Из изменения каждой секции на диаграмме потока во времени можно понять дискретные характеристики в процессе поворота транспортных средств, а изменения потока могут также отражаться в условиях боковых конфликтов транспортных средств. Сделайте, например, зеленую фазу поворота налево на перекрестке, которая демонстрирует изменения потока во времени в разных поперечных сечениях, как показано на рис. 4. изменить соответственно.

3.2. Разработка модели траектории

В процессе поворота положение транспортных средств непрерывно изменяется с изменением углов, скоростей и перемещений. Траектории поворота разных транспортных средств могут иметь некоторые различия. Но на одном и том же перекрестке, схема распределения каналов которого фиксирована, траектории поворачивающих транспортных средств имеют некоторую закономерность. А по принципу оптимизации траектории поворачивающих машин всегда стремятся к разумному пути. Диаграмма траектории левого поворота выглядит так, как показано на рис. 5.9.0003

На основе знаний вероятностного и статистического анализа извлекается и подсчитывается большое количество траекторий поворота транспортных средств. В сочетании с характеристиками левого поворота, такими как распределение траектории, характеристики распределения скорости, удаляются траектории с аномальным распределением, а также должны быть удалены траектории, создаваемые транспортными средствами с большими колебаниями скорости. Таким образом, получают выборки траектории транспортного средства, которые формируются в нормальных условиях поворота. Покрытая этими образцами траектории область образовывала геометрическую фигуру. Затем извлекается центральная линия геометрической фигуры от въезда в направлении выезда. После плавной обработки центральной линии отображается приемлемый путь для транспортных средств, поворачивающих налево. Создайте модель для разумной траектории пути и возьмите пересечение на рисунке 5 в качестве примера; разумный путь транспортных средств, поворачивающих налево, показан дугой AB. Пусть количество полос движения в направлении восток-запад на перекрестке будет EW.ln, пусть ширина полосы будет EW.lw, а зеленая полоса будет EW.grw; а количество полос движения в направлении юг-север — SN.ln, ширина полосы — SN.lw, а зеленая полоса — SN.grw. Безопасный боковой зазор составляет и . Точкой считался центр поворота, находящийся в левом нижнем углу перекрестка. ds — расстояние по вертикали от крайней границы полосы движения западного входа до точки . , , которые являются радиусами поворота начала и конца дуги, определяются как и рассчитываются как

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

Начальный угол поворота и начальная точка .

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

4. Установка направляющих линий левого поворота на перекрестке

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

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

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

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

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

5. Обсуждение экземпляра

Было проведено долгосрочное исследование перекрестка улиц Ятай и Наньху-роуд, на котором имеется четыре полосы для поворота налево в Чанчуне, Китай, как показано на рис. 7. Средняя задержка движения и скорость движения составляли напротив, между двумя состояниями смены полосы движения и без смены полосы движения. Здесь мы предположили, что состояние без смены полосы движения было таким же, как состояние установки направляющей линии. Результаты расчетов приведены в таблице 1.

Из Таблицы 1 видно, что задержка без смены полосы движения или установки направляющих линий меньше, чем без установки направляющих линий, а средняя скорость движения с установленными направляющими линиями выше, чем без установки направляющих линий. Таким образом, настройка направляющей линии может уменьшить задержку транспортных средств, поворачивающих налево, на перекрестке и повысить эффективность движения.

6. Заключение

В данной статье применяется метод видеообнаружения для извлечения и отслеживания в реальном времени траекторий поворота транспортных средств на перекрестке. Подробно анализируются характеристики распределения траекторий, изменяющиеся характеристики скорости и изменяющиеся характеристики потока. Установлена ​​траекторная модель левоповоротных транспортных средств. С учетом характеристик поворота транспортных средств и модели траектории предлагается метод задания направляющих линий. В качестве примера показан перекресток с четырьмя полосами для левого поворота. Наконец, пересечение улиц Ятай и Наньху-роуд используется для проверки эффекта установки направляющих линий на перекрестке. Результат показывает, что при использовании направляющей линии взаимные помехи транспортных средств могут быть эффективно уменьшены. Таким образом, исследование обеспечивает теоретическую основу для распределения трафика на перекрестке и имеет хорошую перспективу применения.

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

Конфликт интересов

Авторы заявляют об отсутствии конфликта интересов в отношении публикации данной статьи.

Благодарности

Эта работа частично поддерживается Национальным фондом естественных наук Китая (№ 51278220, 61104168) и Китайским стипендиальным советом. Авторы благодарят анонимных рецензентов за ценный вклад и предложения.

Ссылки
  1. W. Ma и X. Yang, «Координация левого движения группы регулируемых перекрестков», Journal of Tongji University: Natural Science Edition , vol. 36, нет. 11, стр. 1507–1511, 2008.

    Просмотр:

    Google Scholar

  2. С. Кикучи, М. Кии и П. Чакроборти, «Длина двойных или двойных полос для левого поворота», Transportation Research Record , vol. 1881, стр. 72–78, 2004.

    Просмотр по адресу:

    Google Scholar

  3. К. Шен, «Минимальные длины сливающихся участков для тройных полос левого поворота с сокращением полосы движения вниз по течению», ITE Journal 9004 4 , т. . 71, нет. 3, стр. 40–45, 2001.

    Посмотреть по адресу:

    Google Scholar

  4. Д. Р. Эйлер, «Артериальный обмен», Отчет о транспортных исследованиях , том. 1912, стр. 65–71, 2005.

    Просмотр по адресу:

    Google Scholar

  5. Дж. Ву, К. Сюэ, З. Чжао и Б. Лю, «Подход к траектории левоповоротных транспортных средств на перекресток на основе видеотехнологий», в Proceedings of the International Conference on Communication, Electronics and Automation Engineering , vol. 181 из Достижения в области интеллектуальных систем и вычислений , стр. 1–7, 2013.

    Посмотреть по адресу:

    Google Scholar

  6. М. Кайт, А. Абдель-Рахим, М. Диксон, Дж.-М. Ли и Д. Стронг, «Проверка метода накопления добавочной очереди для оценки задержки левого поворота», Transportation Research Record , vol. 2130, стр. 42–51, 2009 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  7. Ци Ю. Г., Го Л., Ю Л. и Тэн Х., «Оценка проектной длины полос движения для левого поворота», стр. 9.0043 Журнал транспортного машиностроения , том. 138, нет. 3, стр. 274–283, 2012 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  8. Р. Яо, «Анализ чувствительности моделей оптимизации для двух соседних перекрестков с коррелированными короткими полосами для поворота налево», Transport , vol. 28, нет. 3, стр. 256–269, 2013.

    Просмотр по адресу:

    Google Scholar

  9. Р. Яо и Х. М. Чжан, «Оптимальное распределение полосы движения и зеленые полосы изолированных сигнальных перекрестков с короткими полосами для левого поворота, Журнал транспортного машиностроения , том. 139, нет. 7, стр. 667–677, 2013 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  10. P. Liu, C. Xu и W. Wang, «Идентификация факторов, влияющих на выбор водителями нетрадиционных полос движения за пределами левого поворота на сигнальных перекрестках», IET Intelligent Transport System , vol. 7, нет. 4, pp. 396–403, 2013.

    Просмотр по адресу:

    Google Scholar

  11. Г. Мусса, Э. Радван и К. Хуссейн, «Система автомобиля с дополненной реальностью: исследование маневра влево», Transportation Research Part C: Emerging Technologies , vol. 21, нет. 1, стр. 1–16, 2012 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  12. WKM Alhajyaseen, M. Asano, H. Nakamura, and DM Tan, «Стохастический подход к моделированию влияния геометрии перекрестка на повороты транспортных средств», Transportation Research C , vol. 32, стр. 179–192, 2013 г.

    Посмотреть по адресу:

    Сайт издателя | Академия Google

  13. Р. Ли, В. Ли и Ф. Цю, «Сигнал, устанавливающий критический объем для двустороннего перекрестка с регулируемой остановкой на основе значительной задержки левого поворота», Journal of Southeast University (Natural Science Edition) , vol. . 42, нет. 3, стр. 551–554, 2012 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  14. Т. Сандо и Р. Мозес, «Влияние геометрии перекрестка на работу тройных полос для левого поворота», Journal of Transportation Engineering , vol. 135, нет. 5, стр. 253–259., 2009.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  15. W. Wu, W. Ma, and X. Yang, «Интегрированный метод оптимизации фаз левого поворота соседних перекрестков», Journal of Tongji University , vol. 41, нет. 1, стр. 66–71, 2013 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  16. П. Ван, С. Л. Джонс, С. Гурупакиам и Л. Ван, «Новое моделирование на основе модели сотовой передачи блокировок левых поворотов внутри перекрестков», Протокол транспортных исследований , том. 2390, с. 60–67, 2013.

    Просмотр по адресу:

    Google Scholar

  17. S. A. Cooner, S.E. Ranft, Y. K. Rathod et al. Проект выполнен в сотрудничестве с Министерством транспорта Техаса и Федеральной администрацией автомобильных дорог, 2011 г.

    Посмотреть по адресу:

    Google Scholar

  18. Ю. Би, Д. Ван и Х. Ци, «Модель прогнозирования времени прибытия автобуса». на регулируемом перекрестке с использованием данных GPS», Журнал транспортного машиностроения , том. 138, нет. 1, стр. 12–20, 2012 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  19. Y. Bie, Z. Liu, D. Ma и D. Wang, «Калибровка параметра рассеивания взвода с учетом влияния количества полос», Journal of Transportation Engineering , vol. 139, нет. 2, стр. 200–207, 2013 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

  20. Y. Bie, D. Wang и X. Qu, «Моделирование степени корреляции между двумя соседними сигнальными перекрестками для динамического разделения подзон», Интеллектуальные транспортные системы ИЭТ , том. 7, нет. 1, стр. 28–35, 2013 г.

    Посмотреть по адресу:

    Сайт издателя | Google Scholar

Copyright

Copyright © 2014 Fulu Wei et al. Это статья с открытым доступом, распространяемая в соответствии с лицензией Creative Commons Attribution License, которая разрешает неограниченное использование, распространение и воспроизведение на любом носителе при условии надлежащего цитирования оригинальной работы.

Моделирование перекрестка

с использованием Pygame, часть 1 | Михир Ганди

Эта серия статей содержит пошаговое руководство по разработке моделирования транспортных развязок с нуля с использованием Pygame.

Мы разрабатываем с нуля симуляцию с использованием Pygame для симуляции движения транспортных средств через перекресток со светофорами с таймером. Он содержит 4-полосную транспортную развязку со светофорами, контролирующими поток движения в каждом направлении. У каждого сигнала есть таймер, который показывает время, оставшееся до переключения сигнала с зеленого на желтый, с желтого на красный или с красного на зеленый. Транспортные средства, такие как автомобили, велосипеды, автобусы и грузовики, генерируются, и их движение контролируется в соответствии с сигналами и транспортными средствами вокруг них. Эту симуляцию можно в дальнейшем использовать для анализа данных или для визуализации приложений AI или ML. На видео ниже показан окончательный результат моделирования, которое мы будем строить.

Окончательный результат симуляции

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

  • 4-сторонний перекресток
пересечение.png
  • Светофоры: красный, желтый и зеленый
red.pngyellow.pnggreen.png
  • Автомобиль:
  • 903 27 машина.png
    • Велосипед :
    bike.png
    • Автобус
    bus.png
    • Грузовик
    truck.png

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

    Откройте изображение четырехстороннего перекрестка в приложении, таком как Paint для Windows или Preview для Mac. Выберите область, равную тому, как вы хотите, чтобы транспортное средство выглядело в вашей окончательной симуляции. Запишите размеры.

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

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

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

    Создать папку Traffic Intersection Simulation » и внутри него создайте папку « images ». Здесь мы будем хранить все эти изображения. Структура папок показана ниже:

    • вниз : содержит изображения транспортных средств, обращенных вниз
    • вверх : содержит изображения транспортных средств, обращенных вверх
    • влево : содержит изображения транспортных средств, обращенных влево
    • 9 0107 справа : содержит изображения транспортных средств, обращенных вправо
    • signal : содержит изображения светофоров

    Теперь давайте погрузимся в кодирование.

    Установка Pygame

    Перед установкой PyGame в вашей системе должен быть установлен Python 3.1+. Вы можете скачать Python отсюда. Самый простой способ установить Pygame — использовать pip. Просто запустите следующую команду в cmd/Terminal.

     $ pip install pygame 

    Импорт необходимых библиотек

    Начнем с создания файла с именем ‘ Simulation.py » и импортировать библиотеки, которые нам потребуются для разработки этой симуляции.

     import randomimport timeimport threadingimport pygameimport sys 

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

    Структура папок проекта

    Определение констант

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

     # Значения таймеров сигналов по умолчанию в секундахdefaultGreen = {0:20, 1:20, 2:20, 3:20}defaultRed = 150defaultYellow = 5signals = []noOfSignals = 4currentGreen = 0 # Указывает, какой сигнал является зеленым в настоящее времяnextGreen = ( currentGreen+1)%noOfSignals currentYellow = 0 # Указывает, включен желтый сигнал или нет. Speeds = {'car': 2.25, 'bus': 1.8, 'truck': 1.8, 'bike': 2.5} # средняя скорость транспортных средств 

    Приведенные ниже координаты также извлекаются путем открытия изображения четырехстороннего пересечения в Paint/Preview и получения значений пикселей.

     # Координаты старта машин 
    x = {'right':[0,0,0], 'down':[755,727,697], 'left':[1400,1400,1400], 'up':[602,627,657 ]}y = {'право':[348 370 398], 'вниз':[0,0,0], 'влево': [498 466 436], 'вверх': [800 800 800]}автомобили = {'право': {0 :[], 1:[], 2:[], 'перечеркнуто':0}, 'вниз': {0:[], 1:[], 2:[], 'перечеркнуто':0}, 'влево ': {0:[], 1:[], 2:[], 'перечеркнуто':0}, 'вверх': {0:[], 1:[], 2:[], 'перечеркнуто':0 }}vehicleTypes = {0:'машина', 1:'автобус', 2:'грузовик', 3:'велосипед'}directionNumbers = {0:'право', 1:'вниз', 2:'лево', 3:'up'}# Координаты изображения сигнала, таймера и счетчика транспортных средствsignalCoods = [(530,230),(810,230),(810,570),(530,570)]signalTimerCoods = [(530,210),(810,210),(810,550), (530,550)]# Координаты стоп-линийstopLines = {'right': 590, «вниз»: 330, «влево»: 800, «вверх»: 535} defaultStop = {'вправо': 580, «вниз»: 320, «влево»: 810, «вверх»: 545}# Промежуток между VehiclestoppingGap = 15 # остановка промежуткаmovingGap = 15 # перемещение промежутка

    Инициализация Pygame

    Затем мы инициализируем Pygame следующим кодом:

     pygame. init()simulation = pygame.sprite.Group() 

    Определение классов

    Сейчас давайте создадим несколько классов, объекты которых мы будем генерировать в симуляции. У нас есть 2 класса, которые нам нужно определить.

    1. Светофор : Нам нужно сгенерировать 4 светофора для нашей симуляции. Итак, мы создаем класс TrafficSignal со следующими атрибутами:
    • красный : значение таймера красного сигнала
    • желтый : значение таймера желтого сигнала
    • зеленый : Значение таймера зеленого сигнала
    • signalText : значение таймера для отображения
     class TrafficSignal: 
    def __init__(self, red, yellow, green):
    self.red = красный
    self.yellow = желтый
    self.green = зеленый
    self.signalText = ""

    2. Транспортное средство : Это класс, представляющий объекты транспортных средств, которые мы будем генерировать в моделировании. . Класс Vehicle имеет следующие атрибуты и методы:

    • VehicleClass : Представляет класс транспортного средства, такого как автомобиль, автобус, грузовик или велосипед
    • скорость : Представляет скорость транспортного средства в соответствии с его классом
    • direction_number : Представляет направление — 0 вправо, 1 вниз, 2 влево и 3 вверх
    • direction : Представляет направление в текстовом формате x-координата
    • y : Представляет текущую координату y транспортного средства
    • Пересечение : Представляет, пересекло ли транспортное средство сигнал или нет
    • индекс : Представляет относительное положение транспортного средства среди транспортные средства движутся в том же направлении и по той же полосе
    • image : Представляет изображение для визуализации
    • render(): Для отображения изображения на экране
    • move(): Для управления движением транспортного средства в соответствии со светофором и транспортными средствами впереди
     class Vehicle(pygame. sprite.Sprite): 
    def __init__(self, lane, VehicleClass, direction_number, direction):
    pygame.sprite.Sprite.__init__(self)
    self.lane = lane
    self.vehicleClass = VehicleClass
    self. скорость = скорость [класс автомобиля]
    self.direction_number = direction_number
    self.direction = направление
    self.x = x[направление][полоса]
    self.y = y[направление][полоса]
    self.crossed = 0
    транспортных средств[направление][полоса] .append(self)
    self.index = len(транспортные средства [направление][полоса]) - 1
    path = "images/" + direction + "/" + VehicleClass + ".png"
    self.image = pygame.image .load(path) if(len(транспортные средства [направление][полоса])>1
    и транспортные средства[направление][полоса][self.index-1].crossed==0):
    if(direction=='right '):
    self.stop =
    транспортных средств[направление][полоса][self.index-1].stop
    - транспортные средства[направление][полоса][self.index-1].image.get_rect().width
    - stopingGap
    elif(direction=='left'):
    self. stop =
    транспортных средств[направление][полоса][self.index-1].stop
    + транспортные средства[направление][полоса][self.index-1].image .get_rect().width
    + stopGap
    elif(direction=='down'):
    self.stop =
    транспортных средств[направление][полоса][self.index-1].stop
    - транспортные средства[направление][полоса ][self.index-1].image.get_rect().высота
    - stopingGap
    elif(direction=='up'):
    self.stop =
    транспортных средств[направление][полоса][self.index-1].stop
    + транспортные средства[направление][полоса][self.index- 1].image.get_rect().height
    + stopGap
    else:
    self.stop = defaultStop[направление]

    if(direction=='right'):
    temp = self.image.get_rect().width + stopgap
    x[направление][полоса] -= temp
    elif(direction=='left'):
    temp = self.image.get_rect().width + stopgap
    x[направление][полоса] += temp
    elif(направление=='вниз'):
    temp = self.image.get_rect().height + stopingGap
    y[направление][полоса] -= temp
    elif(направление=='вверх'):
    temp = self. image.get_rect().height + stopGap
    y[направление][полоса] += temp
    Simulation.add(self) def render(self, screen):
    screen.blit(self.image, (self.x , self.y))

    Давайте разберемся с последней частью конструктора.

    В конструкторе, после инициализации всех переменных, мы проверяем, есть ли уже транспортные средства в том же направлении и полосе движения, что и текущее транспортное средство. Если да, нам нужно установить значение ‘ стоп ’ текущего автомобиля с учетом значения ‘ стоп ’ и ширины/высоты впереди идущего автомобиля, а также stopingGap . Если впереди уже нет транспортного средства, то значение stop устанавливается равным defaultStop . Это значение stop используется для управления местом остановки транспортных средств при красном сигнале. Как только это будет сделано, мы обновим координаты, откуда генерируются транспортные средства. Это сделано для того, чтобы избежать наложения вновь сгенерированных транспортных средств на существующие транспортные средства, когда на красный свет остановилось много транспортных средств.

    Теперь давайте поговорим о функции move(), которая является одним из самых важных фрагментов кода в нашей симуляции. Обратите внимание, что эта функция также является частью класса Vehicle, определенного выше, и должна иметь соответствующий отступ.

     def move(self): 
    if(self.direction=='right'):
    if(self.crossed==0 and self.x+self.image.get_rect().width>stopLines[self.direction ]):
    self.crossed = 1
    if((self.x+self.image.get_rect().width<=self.stop
    или self.crossed == 1 или (currentGreen==0 и currentYellow==0 ))
    и (self.index==0 или self.x+self.image.get_rect().width
    <(автомобили[self.direction][self.lane][self.index-1].x - movingGap)) ):
    self.x += self.speed
    elif(self.direction=='down'):
    if(self.crossed==0 и
    self.y+self.image.get_rect().height>stopLines [self.direction]):
    self.crossed = 1
    if((self.y+self.image.get_rect().height<=self.stop
    или self.crossed == 1 или (currentGreen==1 и currentYellow==0))
    и (self. index==0 или self.y+self.image.get_rect().height
    <(транспортные средства[self.direction][self.lane][self.index-1].y - movingGap))):
    self.y += self.speed
    elif(self.direction=='left') :
    if(self.crossed==0 и
    self.x self.crossed = 1
    if((self.x>=self.stop or self.crossed == 1
    или (currentGreen==2 и currentYellow==0))
    и (self.index==0 или self.x
    >(транспортные средства[self.direction][self.lane][self.index-1].x
    + транспортные средства[self.direction][self.lane][self.index-1].image.get_rect().width
    + movingGap))):
    self.x -= self.speed
    elif(self.direction=='up'):
    if(self.crossed==0 и
    self.y self.crossed = 1
    if((self.y>=self.stop или self.crossed == 1
    или (currentGreen==3 и currentYellow==0))
    и (self.index==0 или self.y
    >(транспортные средства[self.direction][self.lane][self.index-1].y
    + транспортные средства[self. direction][self.lane][self.index-1].image. get_rect().height
    + movingGap))):
    self.y -= self.speed

    Для каждого направления мы сначала проверяем, пересек ли автомобиль перекресток или нет. Это важно, потому что если транспортное средство уже пересекло дорогу, то оно может продолжать движение независимо от того, зеленый или красный сигнал светофора. Итак, когда транспортное средство пересекло перекресток, мы устанавливаем значение пересечений равным 1. Затем мы решаем, когда транспортное средство движется и когда останавливается. Возможны 3 случая, когда транспортное средство движется:

    1. Если оно не достигло точки остановки перед перекрестком
    2. Если он уже пересек перекресток
    3. Если сигнал светофора, контролирующий направление движения транспортного средства, зеленый

    Только в этих 3 случаях координаты транспортного средства обновляются путем увеличения/уменьшения их на скорость транспортных средств в зависимости от направления их движения. Однако нам необходимо рассмотреть еще одну возможность того, что впереди находится транспортное средство, движущееся в том же направлении и по той же полосе. В этом случае транспортное средство может двигаться только при наличии достаточного расстояния до впереди идущего транспортного средства, и это решается с учетом координат и ширины/высоты впереди идущего транспортного средства, а также перемещениеGap .

    Создание объектов класса TrafficSignal

    Далее мы инициализируем 4 объекта TrafficSignal, сверху слева вниз по часовой стрелке, со значениями таймеров сигналов по умолчанию. Таймер красного сигнала ts2 устанавливается равным сумме таймеров желтого и зеленого сигналов ts1 .

     def initialize(): 
    ts1 = TrafficSignal(0, defaultYellow, defaultGreen[0])
    signal.append(ts1)
    ts2 = TrafficSignal(ts1.yellow+ts1.green, defaultYellow, defaultGreen[1])
    signal.append(ts2)
    ts3 = TrafficSignal(defaultRed, defaultYellow, defaultGreen[2])
    signal. append(ts3)
    ts4 = TrafficSignal(defaultRed, defaultYellow, defaultGreen[3])
    signal.append(ts4)
    Repeat()

    Repeat() function

    Функция repeat(), которая вызывается в конце функции initialize() выше, является рекурсивной функцией, которая запускает всю нашу симуляцию. Это движущая сила нашего моделирования.

     def repeat(): 
    global currentGreen, currentYellow, nextGreen
    while(signals[currentGreen].green>0):
    updateValues()
    time.sleep(1)
    currentYellow = 1
    для i в диапазоне (0,3):
    для транспортного средства в транспортных средствах[directionNumbers[currentGreen]] [i]:
    Vehicle.stop=DefaultStop[directionNumbers[currentGreen]]
    while(signals[currentGreen].yellow>0):
    updateValues()
    time.sleep(1)
    currentYellow = 0

    signal[currentGreen]. зеленый = defaultGreen[currentGreen]
    signal[currentGreen].yellow = defaultYellow
    signal[currentGreen].red = defaultRed

    currentGreen = nextGreen
    nextGreen = (currentGreen+1)%noOfSignals
    signal[nextGreen]. red = signal[currentGreen].yellow+signals[currentGreen].green
    repeat()

    Функция repeat() сначала вызывает функцию updateValues() каждую секунду для обновления таймеров сигнала до тех пор, пока зеленый таймер сигнала currentGreen не достигнет 0. Затем она устанавливает этот сигнал на желтый и сбрасывает стоп значение всех транспортных средств, движущихся в направлении, контролируемом сигналом currentGreen . Затем он снова вызывает функцию updateValues() через каждую секунду, пока таймер yellow сигнала currentGreen не достигнет 0. Значение currentYellow теперь установлено на 0, так как этот сигнал теперь станет красным. Наконец, значения сигнала currentGreen восстанавливаются до значений по умолчанию, значения currentGreen и nextGreen 9.0360 обновляется, чтобы указать на следующие сигналы в цикле, а значение таймера красного сигнала nextGreen обновляется в соответствии с желтым и зеленым обновленного сигнала currentGreen . Затем функция repeat() вызывает себя, и процесс повторяется с обновленным сигналом currentGreen .

    Функция updateValues()

    Функция updateValues() обновляет таймеры всех сигналов каждую секунду.

     def updateValues(): 
    для i в диапазоне (0, noOfSignals):
    if(i==currentGreen):
    if(currentYellow==0):
    signal[i].green-=1
    else:
    signal[i].yellow-=1
    else:
    signal[i].red-=1

    функция generateVehicles()

    Функция generateVehicles() используется для генерации транспортных средств. Тип транспортного средства (автомобиль, автобус, грузовик или велосипед), номер полосы движения (1 или 2), а также направление движения транспортного средства определяются с помощью случайных чисел. Переменная dist представляет совокупное распределение транспортных средств в процентах. Таким образом, распределение [25,50,75,100] означает, что существует равное распределение (по 25% в каждом) транспортных средств по всем 4 направлениям. Некоторые другие распределения могут быть [20,50,70,100], [10,20,30,100] и так далее. Каждую секунду в симуляцию добавляется новое транспортное средство.

     def generateVehicles(): 
    while(True):
    Vehicle_type = random.randint(0,3)
    lane_number = random.randint(1,2)
    temp = random.randint(0,99)
    direction_number = 0
    dist= [25,50,75,100]
    if(temp direction_number = 0
    elif(temp direction_number = 1
    elif(temp direction_number = 2
    elif(temp direction_number = 3
    Vehicle(lane_number, VehicleTypes[vehicle_type], direction_number, directionNumbers[direction_number])
    time.sleep(1)

    Основной класс

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

     class Main: 
    thread1 = threading.Thread(name="initialization",target=initialize, args=())
    thread1.daemon = True
    thread1. start()

    black = (0, 0, 0)
    белый = (255, 255, 255)
    screenWidth = 1400
    screenHeight = 800
    screenSize = (screenWidth, screenHeight)
    background = pygame.image.load('images/intersection.png')
    screen = pygame.display.set_mode (screenSize)
    pygame.display.set_caption("СИМУЛЯЦИЯ") redSignal = pygame.image.load('images/signals/red.png')
    yellowSignal = pygame.image.load('images/signals/yellow.png')
    greenSignal = pygame.image.load('images/signals/green.png')
    font = pygame.font.Font(None, 30 ) thread2 = threading.Thread(name="generateVehicles",target=generateVehicles, args=())
    thread2.daemon = True
    thread2.start(), в то время как True:
    для события в pygame.event.get():
    if event.type == pygame.QUIT:
    sys.exit() screen.blit(background,(0,0))
    для i в диапазоне(0,noOfSignals):
    if(i==currentGreen):
    if(currentYellow==1):
    signal[i].signalText = signal[i].yellow
    screen.blit(yellowSignal, signalCoods[i])
    else:
    signal[i]. signalText = signal[i] .green
    screen.blit(greenSignal, signalCoods[i])
    else:
    if(signals[i].red<=10):
    signal[i].signalText = signal[i].red
    else:
    signal [i].signalText = "---"
    screen.blit(redSignal, signalCoods[i])
    signalTexts = ["","","",""]
    для i в диапазоне (0,noOfSignals):
    signalTexts[i] = font.render(str(signals[i].signalText), True, white, black)
    screen.blit(signalTexts[i],signalTimerCoods[i])

    для автомобиля в симуляции:
    screen.blit(vehicle.image, [vehicle.x, Vehicle.y])
    Vehicle.move()
    pygame. display.update()

    Давайте разберемся с функцией Main(), разбив ее на более мелкие части. Начнем с создания отдельного потока для метода initialize(), который создает экземпляры 4 объектов TrafficSignal . Затем мы определяем 2 цвета, белый и черный , которые мы будем использовать в нашем отображении. Затем мы определяем ширину и размер экрана, а также фон и заголовок, которые будут отображаться в окне моделирования. Затем мы загружаем изображения трех сигналов, то есть красного, желтого и зеленого. Теперь мы создаем еще один поток для generateVehicles().

    Затем мы запускаем бесконечный цикл, который постоянно обновляет экран моделирования. Внутри цикла мы сначала определяем критерии выхода. В следующем разделе мы визуализируем соответствующее изображение сигнала и таймер сигнала для каждого из 4 светофоров. Наконец, мы визуализируем транспортные средства на экране и вызываем функцию move() для каждого транспортного средства. Эта функция заставляет транспортные средства двигаться в следующем обновлении.

    Функция blit() используется для рендеринга объектов на экране. Он принимает 2 аргумента: изображение для рендеринга и координаты. Координаты указывают на верхний левый угол изображения.

    Почти готово! Теперь нам просто нужно вызвать программу Main(), и наш код готов.

     Main() 

    Запуск кода

    Время посмотреть результаты. Запустите cmd/терминал и выполните команду:

     $ python Simulation.py 
    Снимок окончательного результата моделирования

    И вуаля! У нас есть полнофункциональная симуляция четырехстороннего перекрестка, которую мы построили с нуля, начиная с получения изображения перекрестка, сигналов и транспортных средств и заканчивая кодированием логики переключения сигналов и движения транспортных средств.

    Исходный код: https://github.com/mihir-m-gandhi/Basic-Traffic-Intersection-Simulation

    Это первая часть из серии статей:

    • Моделирование пересечения дорог с использованием Pygame, Часть 1
    • Моделирование транспортных развязок с использованием Pygame, часть 2
    • Моделирование транспортных развязок с использованием Pygame, часть 3

    Это моделирование было разработано в рамках исследовательского проекта под названием «Умное управление светофорами с использованием искусственного интеллекта». Посмотрите его демонстрационное видео здесь.

    Comments |0|

    Legend *) Required fields are marked
    **) You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
    Category: Разное