Проезд перекрестков онлайн тренажер: Please Wait… | Cloudflare
Лучший тренажер по решению билетов 2017, Сотрудничество с автошколами, автовиджет на ваш сайт,Экзамен ПДД онлайн, Билет 31 Вопрос 13 Тема Проезд перекрестков, Билет 31 Вопрос 14 Тема Проезд перекрестков, Билет 31 Вопрос 15 Тема Проезд перекрестков, Билет 32 Вопрос 13 Тема Проезд перекрестков, Билет 32 Вопрос 14 Тема Проезд перекрестков, Билет 32 Вопрос 15 Тема Проезд перекрестков, Билет 33 Вопрос 13 Тема Проезд перекрестков, Билет 33 Вопрос 14 Тема Проезд перекрестков, Билет 33 Вопрос 15 Тема Проезд перекрестков, Билет 34 Вопрос 13 Тема Проезд перекрестков, Билет 34 Вопрос 14 Тема Проезд перекрестков, Билет 34 Вопрос 15 Тема Проезд перекрестков, Билет 35 Вопрос 13 Тема Проезд перекрестков, Билет 35 Вопрос 14 Тема Проезд перекрестков, Билет 35 Вопрос 15 Тема Проезд перекрестков, Билет 36 Вопрос 13 Тема Проезд перекрестков, Билет 36 Вопрос 14 Тема Проезд перекрестков, Билет 36 Вопрос 15 Тема Проезд перекрестков, Билет 37 Вопрос 13 Тема Проезд перекрестков, Билет 37 Вопрос 14 Тема Проезд перекрестков,
Билет 1 Вопрос 13.
Билет 1 Вопрос 14. Тема: Проезд перекрестков
Билет 1 Вопрос 15. Тема: Проезд перекрестков
Билет 2 Вопрос 14.

Билет 3 Вопрос 13. Тема: Проезд перекрестков
Билет 3 Вопрос 14. Тема: Проезд перекрестков

Билет 4 Вопрос 13. Тема: Проезд перекрестков
Билет 4 Вопрос 15. Тема: Проезд перекрестков

Билет 5 Вопрос 14. Тема: Проезд перекрестков
Билет 6 Вопрос 13. Тема: Проезд перекрестков
Билет 6 Вопрос 14.

Билет 6 Вопрос 15. Тема: Проезд перекрестков
Билет 7 Вопрос 13. Тема: Проезд перекрестков
Правильных ответов: , неправильных:
Правила дорожного движения.

Все товары: | ПДД |
---|---|
Издатель: | Аркитек Мультима (Беларусь) |
Тип издания: | Лицензия |
Год издания: | 2020 |
Формат: | ключ активации |
Платформа: | PC (Windows) |
Язык интерфейса: | Русский |
Упаковка: | Super Jewel (стеклянная коробка формата DVD-Box) |
Вес: | 130 г |
Правила дорожного движения. Электронный тренажёр «ADrive Проезд перекрёстков 3D» Серийный номер
Назначение
Изучение правил проезда перекрёстков, демонстрация типичных дорожных ситуаций при проезде различных перекрёстков, тестирование, демонстрация и решение конфликтных ситуаций вне перекрёстков.Содержание
- Тренажёр «ADrive Проезд перекрёстков 3D».
Преимущества
- Использование при изучении перекрёстков (участков дорог) в 3D на этапе изучения типичных дорожных ситуаций.
- Реалистичность и наглядность.
- Применение в процессе обучения динамических задач.
Минимальные системные требования: | ||
---|---|---|
Операционная система | Windows XP / Vista / 7 / 8.1 / 10 | |
Процессор | 2 GHz (рекомендуется 2 ядра) | |
Оперативная память | 1 GB | |
Видеокарта | NVidia GeForce серия 6xxx ATI Radeon серия X1300 или аналоги (рекомендуется установить драйвер последней версии) | |
Свободное место на жёстком диске | до 2 GB | |
Microsoft Internet Explorer | Версия 8 и выше | |
Microsoft .![]() | Версия 4.0 и выше | |
Объем лицензии | Установка только на одном компьютере |
Конспект на тему «Проезд перекрестков»
Санкт-Петербургское
государственное бюджетное профессиональное образовательное учреждение «Лицей сервиса и индустриальных технологий»
Методическая разработка урока
«Проезд перекрестков»
Профессия – Автомеханик
Тема: «Проезд перекрестков»
Выполнил
Лавров Андрей Эдуардович
Преподаватель- спецдисциплины
СПб ГБПОУ ЛСИТ
2017 г.
Конспект урока
Тема: «Проезд перекрестков»
Цели урока:
Обучающая: изучить правила Проезда перекрестков, сформировать умения действовать в различных ситуациях в соответствии с правила Проезда перекрестков, действовать согласуясь с обстановкой на перекрестке, обеспечивая безопасность также и на других участках движения.
Развивающая: развивать внимание, память, коммуникативные навыки.
Воспитательная: прививать будущим водителям убеждение в необходимости точно исполнять правила Проезда перекрестков.
Тип урока: комбинированный урок.
Формы работы на уроке: коллективная, устная, письменная.
Межпредметные связи: Основы безопасного управления транспортным средством: «Проезд перекрестков».
Право: «Уголовная ответственность», «Гражданская ответственность».
Материально-техническое обеспечение: Компьютер, мультимедийный проектор.
Наглядные пособия: плакаты ПДД, фигуры транспортных средств, макет
перекрестка, стенд «Светофоры в дорожных ситуациях», тренажер ТПР – 3м (Регулируемый перекресток).
Методическое обеспечение: карточки-задания по теме « Сигналы регулировщика», набор ПДД, тестовые задания в программе «My test».
Структура урока:
Организационный момент.
Проверка домашнего задания (устный опрос).
Изучение нового материала (рассказ-демонстрация).
Закрепление материала (работа по карточкам).
Первичный контроль усвоения материала (компьютерное тестирование).
Постановка домашнего задания.
Подведение итогов урока.
Рефлексия.
Ход урока
Организационный момент.
Приветствие студентов.
Постановка целей и задач урока.
Наша задача сегодня разобрать правила Проезда перекрестков.
2.Проверка домашнего задания (устный опрос).
3.Изучение нового материала (рассказ-демонстрация).
Перекрестком называют пересечение нескольких дорог на одной уровне, поэтому, проезды под мостами, въезды в тоннели не считаются перекрестками. Также перекрестками не считаются выезды с прилегающих территорий.
Благодаря перекресткам строятся развязки различных транспортных потоков. Иногда перекрестки бывают достаточно большими и сложными. Чтобы водитель всегда уверенно себя чувствовал на перекрестке, не путался, не терялся, создавая при этом аварийно-опасную ситуацию, он должен в совершенстве знать правила проезда регулируемых, нерегулируемых перекрестков, и перекрестков равнозначных дорог.
Первое правило, которое следует четко усвоить, и всегда помнить:
Наивысшим приоритетом на перекрестке являются сигналы регулировщика, которые отменяют сигналы светофора и знаки приоритета;
В том случае, если вместе со светофором на перекрестке установлены знаки приоритета, но при этом работает светофор, то водитель обязан выполнять сигналы светофора, игнорируя при этом знаки приоритета;
Пример:В случае, если не работает светофор (постоянно мигает желтый сигнал), водитель обязан руководствоваться знаками приоритета, которые установлены на перекрестке, в случае их отсутствия перекресток считается пересечением равнозначных дорог (при одинаковом типе их покрытия).
Второе правило, которое должен запомнить водитель — в случае образования за перекрестком затора, выезд на такой перекресток (пересечение проезжих частей) запрещен, если такой маневр заставить водителя остановиться на перекрестке, создав препятствие для движения других транспортных средств (ТС).
Пример:
Правило третье — при повороте (развороте) на перекрестке водитель всегда должен уступть дорогу пешеходам, переходящим проезжую часть дороги, а также велосипедистам, пересекающим перекресток по велосипедной дорожке.
Пример:
Регулируемый перекресток
Регулируемым называется перекресток, движение на котором определяется сигналами регулировщика или светофора.
Пример:
При левом повороте (развороте) на разрешающий сигнал основной секции светофора водитель обязан уступить дорогу ТС, движущимся навстречу прямо или направо, и только после этого выполнять маневр.
Пример:
При движении в направлении стрелки дополнительной секции светофора, которая включена одновременно с желтым (красным) сигналом основной секции, водитель обязан уступить дорогу всем ТС, движущихся с других направлений.
Пример:
Это же правило касается и трамвая.
Пример:
В случае равных условий, когда сигналы светофора (регулировщика) разрешают движение трамваю и безрельсовым ТС, трамвай всегда перед ними имеет преимущество независимо от направления его движения.
Пример:
Водитель, который выехал на перекресток при разрешающем сигнале светофора, должен покинуть перекресток в намеченном направлении независимо от сигналов светофора на выезде с перекрестке, при условии, что на пути его следования на перекрестке нет стоп-линии.
Пример:
В случае, если зажегся разрешающий сигнал светофора, но на перекрестке еще находится ТС, завершающее маневр или пешеходы, заканчивающие переходить проезжую часть, водитель должен уступить им дорогу и только после этого начинать движение.
Нерегулируемые перекрестки
Если порядок движения на перекрестке регулируется только установленным дорожными знаками приоритета, такой перекресток называется нерегулируемым перекрестком неравнозначных дорог.
На таких перекрестках, водитель, находящийся на второстепенной дороге, должен уступить дорогу ТС, которые приближаются по главной дороге, независимо от направления их дальнейшего движения.
Пример:
На нерегулируемых перекрестках неравнозначных дорог трамвай всегда имеет преимущество перед безрельсовыми ТС, которые движутся с ним в попутном (встречном) направлении по равнозначной дороге, независимо от направления движения трамвая.
В том случае, если главная дорога на перекрестке меняет направление своего движения, водители, движущиеся по главной дороге, должны руководствоваться между собой правилами проезда перекрестков равнозначных дорог. Также этими правилами должны руководствоваться водители, которые движутся по второстепенным дорогам.
Пример:
В том случае, если перед перекрестком с круговым движением установлен знак 4.3 «Круговое движение» в сочетании со знаком 2.4 «Уступите дорогу» или 2.5 «Движение без остановки запрещено» , водитель ТС, находящегося на перекрестке, имеет преимущество перед выезжающими на такой перекресток ТС.
Если перекресток не регулируется сигналами светофора (реглуировщика), и на нем не установлены знаки приоритета (либо знак 1.6 «Пересечение равнозначных дорог»), такой перекресток называется нерегулируемым перекрестком равнозначных дорог.
На таких перекрестках водитель безрельсового ТС обязан уступить дорогу ТС, которые приближаются справа (правило «помехи справа»). Этим же правилом руководствуются и водители трамваев при разъездах между собой.
Пример:
На нерегулируемых перекрестках равнозначных дорог трамвай всегда имеет преимущество перед безрельсовыми ТС независимо от направления движения.
Пример:
При левом повороте (развороте) водитель безрельсового ТС обязан уступить дорогу ТС, которые движутся по равнозначной дороге со встречного направления прямо или направо. Этим же правилом руководствуются между собой водители трамваев.
Пример:
ВАЖНО! В том случае, если водитель по каким-либо причинам не может определить принадлежность дороги по которой он движется (является ли она главной или второстепенной), всегда следует считать, что он находится на второстепенной дороге, и уступать дорогу всем ТС, движущимся с других направлений, считая, что они движутся по главной дороге.
Пройти онлайн экзамен по данной теме:
4. Закрепление материала
Закрепление изученного материала проведем по карточкам.
Работа будет проводиться в парах. Необходимо письменно ответить на поставленный вопрос.
5. Первичный контроль усвоения материала (компьютерное тестирование).
Чтобы определить, как вы освоили новый материал, предлагаю выполнить тестовое задание по теме «Проезд перекрестков»
Задание выполняется на компьютерах, ваша работа будет оценена.
6. Постановка домашнего задания.
Выучить раздел 13 Правил дорожного движения.
7. Подведение итогов урока.
Сегодня мы рассмотрели тему проезд перекрестков и действия водителя при них. Компьютерное тестирование показало, что основная часть группы усвоила новый материал.
8. Рефлексия.
Что нового узнали на уроке?
Что понравилось?
Что не понравилось?
Оправдались ли ожидания?
Понравилось ли изложение нового материала?
В доступной ли форме излагался материал?
Проезд перекрестков. Тренажер
Проезд перекрестков. Тренажер
Тренажер для изучения правил проезда перекрестков
Тренажер проезда перекрестков создан для закрепления теоретических знаний по проезду перекрестков и основан на новейших требованиях Правил дорожного движения РФ за 2019 год и охватывает такие темы как: проезд регулируемых и нерегулируемых перекрестков, перекрестки с круговым движением, дорожные ситуации с участием пешеходов и велосипедистов. Анимированные дорожные ситуации позволяют глубже понять тему и будут отличным дополнением к решению билетов по экзамену в ГИБДД. Каждая дорожная ситуация сопровождается исчерпывающей справкой, разъясняющей как поступить водителю в каждом конкретном случае. Приложение позволяет отслеживать прогресс прохождения тренировок.
Privacy Policy
VolgaApps built the Проезд перекрестков. Тренажер as an Ad Supported app. This SERVICE is provided by VolgaApps at no cost and is intended for use as is.
This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Drawing on the tablet unless otherwise defined in this Privacy Policy.
Information Collection and Use
For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way.
The app does use third party services that may collect information used to identify you.
Link to privacy policy of third party service providers used by the app
Google Play ServicesAdMob
Firebase Analytics
Log Data
I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.
Cookies
Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device’s internal memory.
This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.
Service Providers
I may employ third-party companies and individuals due to the following reasons:
To facilitate our Service;
To provide the Service on our behalf;
To perform Service-related services; or
To assist us in analyzing how our Service is used.
I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
Security
I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.
Links to Other Sites
This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.
Children’s Privacy
These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.
Changes to This Privacy Policy
I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.
Contact Us
If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at [email protected].
Моделирование перекресткас использованием Pygame, часть 1 | by Mihir Gandhi
Эта серия статей содержит пошаговое руководство по разработке симуляции транспортной развязки с нуля с использованием Pygame.
Окончательный результат моделированияМы разрабатываем моделирование с нуля с использованием Pygame, чтобы моделировать движение транспортных средств по перекрестку со светофором и таймером. Он содержит 4-полосную транспортную развязку с сигналами светофора, контролирующими движение транспорта в каждом направлении.У каждого сигнала есть таймер наверху, который показывает время, оставшееся до переключения сигнала с зеленого на желтый, с желтого на красный или с красного на зеленый. Транспортные средства, такие как автомобили, мотоциклы, автобусы и грузовики, генерируются, и их движение контролируется в соответствии с сигналами и транспортными средствами вокруг них. Это моделирование можно в дальнейшем использовать для анализа данных или для визуализации приложений AI или ML. На видео ниже показан окончательный результат моделирования, которое мы будем строить.
Прежде чем погрузиться в кодирование и увидеть, как наша прекрасная симуляция оживает, позвольте нам получить несколько изображений, которые нам понадобятся для построения симуляции.Вот список того, что нам нужно:
crossction.png- Дорожные сигналы: красный, желтый и зеленый
Убедитесь, что вы переименовали изображения вы скачиваете согласно подписи к изображениям выше. Затем нам нужно изменить размер изображений светофоров и транспортных средств в соответствии с размером изображения перекрестка с четырьмя путями. Это единственный шаг, который потребует некоторых проб и ошибок, но поскольку мы строим симуляцию с нуля, это необходимо.
Откройте изображение четырехстороннего перекрестка в приложении, например Paint для Windows или Preview для Mac. Выберите область, равную тому, как вы хотите, чтобы машина выглядела в финальной симуляции. Запишите размеры.
Получение размера и координат транспортного средства из изображения перекресткаТеперь измените размер транспортных средств до этого размера, открыв их в любом инструменте по вашему выбору. Повторите тот же процесс для изображений светофора.
Остается последний шаг, прежде чем мы перейдем к кодированию.Как вы могли заметить, у нас есть изображения автомобилей, повернутых только вправо. Поэтому поверните изображения автомобилей и сохраните каждое из них, чтобы получить изображения, обращенные во все стороны, как показано на изображении ниже.
Создайте папку « Traffic Intersection Simulation » и в ней создайте папку « изображений ». Здесь мы будем хранить все эти изображения. Структура папок показана ниже, где:
- вниз : содержит изображения автомобилей лицом вниз
- вверх : содержит изображения автомобилей лицом вверх
- влево : содержит изображения автомобилей лицом влево
- вправо : содержит изображения транспортных средств, повернутых вправо.
- сигналов. : содержит изображения светофоров.
. Теперь давайте погрузимся в кодирование.
Установка 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 # Указывает, включен ли желтый сигнал или нет скорости = {'car': 2.25, 'bus': 1.8, 'truck': 1.8, 'bike': 2.5} # средняя скорость транспортных средств
Координаты ниже также извлекаются путем открытия изображения 4-стороннего перекрестка в Paint / Preview и получения значений пикселей .
# Координаты начала движения автомобилей
x = {'вправо': [0,0,0], 'вниз': [755,727,697], 'влево': [1400,1400,1400], 'вверх': [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, 'down': 330, 'left': 800, 'up': 535} defaultStop = {'right': 580, 'down': 320, 'left': 810, 'up': 545} # Промежуток между транспортными средствамиstoppingGap = 15 # остановка gapmovingGap = 15 # подвижный зазор
Инициализация Pygame
Затем мы инициализируем Pygame с помощью следующий код:
pygame.init () simulation = pygame.sprite.Group ()
Определение классов
Теперь давайте создадим несколько классов, объекты которых мы будем генерировать в симуляции. У нас есть 2 класса, которые нам нужно определить.
- Сигнал трафика : нам нужно сгенерировать 4 сигнала светофора для нашей симуляции. Итак, мы создаем класс TrafficSignal, который имеет следующие атрибуты:
- красный : значение таймера красного сигнала
- желтый : значение таймера желтого сигнала
- зеленый : значение таймера зеленого сигнала
- signalText : значение таймера для отображения
class TrafficSignal:
def __init __ (self, red, yellow, green):
self.красный = красный
self.yellow = желтый
self.green = зеленый
self.signalText = ""
2. Автомобиль : это класс, который представляет объекты транспортных средств, которые мы будем генерировать в симуляции. Класс Vehicle имеет следующие атрибуты и методы:
- vehicleClass : Представляет класс транспортного средства, например, легковой автомобиль, автобус, грузовик или велосипед
- speed : Представляет скорость транспортного средства в соответствии с его классом
- direction_number : представляет направление — 0 для вправо, 1 для вниз, 2 для влево и 3 для вверх
- direction : представляет направление в текстовом формате
- x : представляет текущую координату x объекта транспортное средство
- y : представляет текущую координату y транспортного средства
- пересекло : указывает, пересекло ли транспортное средство сигнал или нет
- index : отображает относительное положение транспортного средства среди движущихся транспортных средств в том же направлении и в той же полосе
- 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.speed = скорости [ VehicleClass]
self.direction_number = direction_number
self.direction = direction
self.x = x [направление] [полоса]
self.y = y [направление] [полоса]
self.crossed = 0
транспортных средств [направление] [ lane] .append (self)
self.index = len (cars [direction] [lane]) - 1
path = "images /" + direction + "/" + vehicleClass + ".png "
self.image = pygame.image.load (путь) if (len (cars [direction] [lane])> 1
and Vehicles [direction] [lane] [self.index-1] .crossed == 0 ):
if (direction == 'right'):
self.stop =
cars [direction] [lane] [self.index-1] .stop
- cars [direction] [lane] [self.index-1] ] .image.get_rect (). width
- stoppingGap
elif (direction == 'left'):
self.stop =
cars [direction] [lane] [self.index-1] .stop
+ cars [direction ] [переулок] [сам.index-1] .image.get_rect (). width
+ stoppingGap
elif (direction == 'down'):
self.stop =
транспортных средств [направление] [полоса] [self.index-1] .stop
- cars [direction] [lane] [self.index-1] .image.get_rect (). height
- stopGap
elif (direction == 'up'):
self.stop =
cars [direction] [lane] [ self.index-1] .stop
+ cars [direction] [lane] [self.index-1] .image.get_rect (). height
+ stoppingGap
else:
self.stop = defaultStop [direction]if ( direction == 'right'):
def render (self, screen):
temp = self.image.get_rect (). width + stoppingGap
x [направление] [полоса] - = temp
elif (direction == 'left'):
temp = self.image.get_rect (). width + stoppingGap
x [направление] [lane] + = temp
elif (direction == 'down'):
temp = self.image.get_rect (). height + stopGap
y [direction] [lane] - = temp
elif (direction == 'вверх '):
temp = self.image.get_rect (). Height + stoppingGap
y [направление] [дорожка] + = temp
simulator.add (self)
screen.blit (self.image, (self.x, self.y))
Давайте разберемся с последней частью конструктора.
В конструкторе после инициализации всех переменных мы проверяем, есть ли уже транспортные средства в том же направлении и полосе движения, что и текущее транспортное средство. Если да, нам нужно установить значение « stop » для текущего транспортного средства с учетом значения « stop » и ширины / высоты транспортного средства впереди него, а также stopGap .Если впереди уже нет транспортного средства, тогда значение stop устанавливается равным defaultStop . Это значение stop используется для контроля места остановки транспортных средств при красном сигнале. Как только это будет сделано, мы обновим координаты места генерации транспортных средств. Это сделано для того, чтобы избежать перекрытия вновь созданных транспортных средств с существующими, когда на красный свет остановлено много транспортных средств.
Теперь поговорим о функции move (), которая является одним из наиболее важных фрагментов кода в нашем моделировании.Обратите внимание, что эта функция также является частью класса Vehicle, определенного выше, и должна иметь соответствующий отступ.
def move (self):
if (self.direction == 'right'):
if (self.crossed == 0 и 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
<(cars [self.направление] [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
<(cars [self.direction] [self.lane] [self.index-1] .y - movingGap))):
self.y + = self.speed
elif (self.direction == 'left'):
if (self.crossed == 0 и
self.xself.crossed = 1
if ((self.x> = self.stop или self.crossed == 1
или (currentGreen == 2 и currentYellow == 0))
и (self.index == 0 или self.x
> (cars [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.yself.crossed = 1
if ((self.y> = self.stop или self.crossed == 1
или (currentGreen == 3 и currentYellow == 0))
и (self.index == 0 или self.y
> (cars [self.direction] [self.lane] [self. index-1] .y
+ cars [self.direction] [self.lane] [self.index-1] .image.get_rect (). height
+ movingGap))):
self.y - = self.speed
Для каждого направления мы сначала проверяем, пересекло ли транспортное средство перекресток или нет.Это важно, потому что, если транспортное средство уже пересекло дорогу, оно может продолжать движение независимо от того, будет ли сигнал зеленого или красного цвета. Поэтому, когда транспортное средство пересекло перекресток, мы устанавливаем значение , пересеченное , равным 1. Затем мы решаем, когда транспортное средство движется и когда оно останавливается. Транспортное средство движется в трех случаях:
- Если он не достиг точки остановки перед перекрестком
- Если он уже пересек перекресток
- Если светофор, управляющий направлением движения транспортного средства, имеет зеленый цвет
Только в этих 3 случаях координаты транспортного средства обновляются путем увеличения / уменьшения их на скорость транспортного средства, в зависимости от их направления движения.Однако нам необходимо рассмотреть еще одну возможность, что впереди идёт транспортное средство, движущееся в том же направлении и по той же полосе. В этом случае транспортное средство может двигаться только в том случае, если есть достаточный зазор до впереди идущего транспортного средства, и это решается с учетом координаты и ширины / высоты транспортного средства впереди него, а также movingGap .
Создание объектов класса 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])
сигналов .append (ts2)
ts3 = TrafficSignal (defaultRed, defaultYellow, defaultGreen [2])
signal.append (ts3)
ts4 = TrafficSignal (defaultRed, defaultYellow, defaultGreen [3])
сигналов.append (ts4)
repeat ()
Функция repeat ()
Функция repeat (), которая вызывается в конце функции initialize () выше, является рекурсивной функцией, которая запускает всю нашу симуляцию. Это движущая сила нашей симуляции.
def repeat ():
global currentGreen, currentYellow, nextGreen
while (signal [currentGreen] .green> 0):
updateValues ()
time.sleep (1)
currentYellow = 1
для i в диапазоне (0, 3):
для транспортного средства в транспортных средствах [directionNumbers [currentGreen]] [i]:
транспортное средство.stop = defaultStop [directionNumbers [currentGreen]]
while (signal [currentGreen] .yellow> 0):
updateValues ()
time.sleep (1)
currentYellow = 0сигналов [currentGreen] .green = defaultGreen [currentGreen]
сигналы [currentGreen] .yellow = defaultYellow
сигналов [currentGreen] .red = defaultRedcurrentGreen = nextGreen
nextGreen = (currentGreen + 1)% noOfSignals
сигналов [nextGreen] .red = сигналы [currentGreen] .yellow + сигналы [currentGreen] ] .green
repeat ()
Функция repeat () сначала вызывает функцию updateValues () каждую секунду для обновления таймеров сигналов, пока таймер зеленый сигнала currentGreen не достигнет 0.Затем он устанавливает для этого сигнала желтый цвет и сбрасывает значение stop для всех транспортных средств, движущихся в направлении, управляемом сигналом currentGreen . Затем он вызывает функцию updateValues () снова через каждую секунду, пока таймер yellow сигнала currentGreen не достигнет 0. Значение currentYellow теперь установлено на 0, поскольку этот сигнал теперь станет красным. Наконец, значения сигнала currentGreen восстанавливаются до значений по умолчанию, значение currentGreen и nextGreen обновляется, чтобы указывать на следующие сигналы в цикле, а значение nextGreen сигнала красный таймер обновляется в соответствии с желтым и зеленым обновленного сигнала currentGreen .Затем функция repeat () вызывает себя, и процесс повторяется с обновленным сигналом currentGreen .
Функция updateValues ()
Функция updateValues () обновляет таймеры всех сигналов каждую секунду.
def updateValues ():
для i in range (0, noOfSignals):
if (i == currentGreen):
if (currentYellow == 0):
сигналов [i] .green- = 1
else:
сигналов [i] .yellow- = 1
else:
сигналов [i] .red- = 1
Функция generateVehicles ()
Функция generateVehicles () используется для генерации транспортных средств.Тип транспортного средства (автомобиль, автобус, грузовик или велосипед), номер полосы движения (1 или 2), а также направление движения транспортного средства определяются с помощью случайных чисел. Переменная dist представляет совокупное распределение транспортных средств в процентах. Таким образом, распределение [25,50,75,100] означает, что существует равное распределение (по 25% в каждом) транспортных средств по всем 4 направлениям. Некоторые другие дистрибутивы могут быть [20,50,70,100], [10,20,30,100] и так далее. Новый автомобиль добавляется к моделированию каждые 1 секунду.
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 (tempdirection_number = 0
elif (tempdirection_number = 1
elif (tempdirection_number = 2
elif (tempdirection_number = 3
Автомобиль (lane_number, vehicleTypes [vehicle_type], direction_number, directionNumbers [direction_number])
раз.sleep (1)
Основной класс
И мы достигли нашего последнего фрагмента кода, основного класса, после чего мы можем увидеть нашу симуляцию в действии.
class Main:
thread1 = threading.Thread (name = "initialization", target = initialize, args = ())
thread1.daemon = True
thread1.start ()black = (0, 0, 0)
redSignal = pygame.image.load ('images / signal / red.png' )
белый = (255, 255, 255)
screenWidth = 1400
screenHeight = 800
screenSize = (screenWidth, screenHeight)
background = pygame.image.load ('images / correction.png')
screen = pygame.display.set_mode (screenSize)
pygame.display.set_caption ("SIMULATION")
yellowSignal = pygame.image.load ('images / signal / yellow.png')
greenSignal = pygame.image.load ('images / signal / green.png')
font = pygame.font.Font (None, 30) thread2 = threading.Thread (name = "generateVehicles", target = generateVehicles, args = ())
thread2.daemon = True
thread2.start () while True:
для события в pygame.event.get ():
if event.type == pygame.QUIT:
sys.exit () screen.blit (background, (0,0))
для i in range (0, noOfSignals):
if (i == currentGreen):
if (currentYellow == 1):
сигналов [i] .signalText = signal [i] .yellow
screen.blit (yellowSignal, signalCoods [i ])
else:
сигналов [i] .signalText = сигналов [i] .green
screen.blit (greenSignal, signalCoods [i])
else:
if (сигналов [i] .red <= 10):
сигналов [я].signalText = сигналы [i] .red
else:
сигналы [i] .signalText = "---"
screen.blit (redSignal, signalCoods [i])
signalTexts = ["", "", "", " "]
для i в диапазоне (0, noOfSignals):
signalTexts [i] = font.render (str (signal [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 / terminal и выполните команду:
$ python Simulation.pyСнимок окончательного результата моделирования
И вуаля! У нас есть полностью функциональная симуляция четырехстороннего перекрестка, которую мы построили с нуля, прямо от получения изображения перекрестка, сигналов и транспортных средств, до кодирования логики переключения сигналов и движения транспортных средств.
Исходный код: https://github.com/mihir-m-gandhi/Basic-Traffic-Intersection-Simulation
Это первая часть из серии статей:
Это моделирование было разработано как часть исследовательский проект «Интеллектуальное управление светофором с использованием искусственного интеллекта». Посмотрите его демонстрационное видео здесь. Эта исследовательская работа была представлена на Международной конференции IEEE по последним достижениям и инновациям в инженерии (ICRAIE) 2020 и опубликована в IEEE Xplore.Прочтите статью здесь.
Спасибо за чтение! Надеюсь, эта статья была полезной. Если у вас есть какие-либо сомнения или вам нужны дополнительные разъяснения, не стесняйтесь обращаться ко мне по телефону LinkedIn .
Управление поворотом транспортного средства на перекрестке для сценариев полностью автономного вождения
Аннотация
В настоящее время исследования и разработки автономных транспортных средств (ADV) в основном рассматривают ситуацию, когда транспортные средства с ручным управлением и ADV одновременно движутся по полосам.Для получения информации о самом транспортном средстве и окружающей среде, необходимой для принятия решений и управления, разрабатываемые в настоящее время ADV обычно оснащены множеством датчиков, например, высокоточными системами глобального позиционирования, различными типами радары и системы обработки видео. Очевидно, что современные передовые системы помощи водителю (ADAS) или ADV все еще имеют некоторые проблемы, связанные с высокой надежностью безопасности вождения, а также стоимостью и ценой транспортного средства.Однако несомненно, что в будущем появятся некоторые дороги, районы или города, где все транспортные средства являются ADV, то есть без людей, управляющих транспортными средствами в движении. Для таких сценариев методы определения условий окружающей среды, указания дорожных инструкций и управления транспортным средством должны отличаться от описанной выше ситуации, если надежность вождения и ожидаемые затраты на производство должны быть значительно улучшены. В ожидании того, что более сложная специализированная сеть транспортных средств (VANET) должна стать важной транспортной инфраструктурой для будущих сценариев ADV, изучается проблема управления поворотом транспортного средства на основе связи транспортного средства со всем (V2X) на перекрестках дорог.Управление поворотом на перекрестках в основном связано с тремя основными проблемами: выбором целевой полосы движения, планированием и расчетом траектории, а также контролем и отслеживанием транспортных средств. В этой статье предлагаются стратегия, модель и алгоритмы управления для трех основных задач. Парадигма управления с прогнозированием модели (MPC) используется в качестве контроллера верхнего уровня транспортного средства. Моделирование проводится на платформе CarSim-Simulink с типичными сценами перекрестков.
Ключевые слова: автономное вождение , управление поворотом транспортного средства, VANET, прогнозирующее управление модели
1.Введение
В настоящее время исследования и разработки усовершенствованных систем помощи водителю (ADAS) в основном сосредоточены на растущем рыночном спросе [1]. Его проводят такие компании, как Tesla, Google, Baidu и т. Д., И транспортная ситуация, которую они представляют, обычно связана с людьми, управляющими транспортными средствами, а также с автономными транспортными средствами (ADV) или автомобилями без водителя, которые одновременно появляются на дорогах. Чтобы получить информацию о самом транспортном средстве и окружающей среде, которая необходима для принятия решений и управления, разрабатываемые в настоящее время ADV обычно оснащены множеством систем обнаружения, например.g., система позиционирования земного шара, лидар, радар миллиметрового диапазона, инфракрасный радар, видеосистема или система обзора и так далее. Информация с датчиков обрабатывается передовыми или интеллектуальными модулями обработки. Текущие решения ADAS или ADV все еще имеют некоторые проблемы [2]. Во-первых, эти оборудованные сенсорные системы могут не полностью гарантировать надежность безопасности вождения из-за ухудшения их характеристик, вызванного плохой погодой, недостатком света, препятствиями, слепыми зонами и т. Д. Во-вторых, продвинутым или интеллектуальным алгоритмам может потребоваться слишком много времени, чтобы извлекать необходимую информацию из воспринимаемых сигналов, таких как видео, из-за сложности вычислений.Например, если мы хотим, чтобы транспортное средство со скоростью 160 км / ч принимало решения об автономном вождении в интервале времени, когда транспортное средство движется каждые 0,5 м расстояния, все вычисления должны быть завершены за 22,5 миллисекунды. В-третьих, эти системы зондирования, особенно лидары, значительно увеличивают стоимость производства транспортных средств.
Можно ожидать, что в будущем появятся некоторые дороги, районы или города, где все транспортные средства будут полностью ADV, то есть без каких-либо транспортных средств с ручным управлением в движении.Для повышения безопасности вождения и снижения стоимости производства в таких сценариях способ измерения окружающей среды, индикации дорожных инструкций и управления транспортным средством может отличаться от того, что используется в текущих ADAS или ADV. Мы предполагаем, что более сложная VANET (специальная автомобильная сеть) должна стать важной инфраструктурой для будущих перевозок ADV, поскольку она может предоставлять гораздо больше информации с гораздо большей эффективностью с помощью связи V2X (т.е. , транспортно-пешеходный и т. д.). Это ожидание мотивирует работу над статьей.
Статистические данные дорожно-транспортных происшествий показывают, что причиной многих аварий является поворот транспортного средства на перекрестках [3]. Поэтому правильное управление поведением транспортного средства в таких ситуациях является важным вопросом, более того, управление поворотом транспортного средства на перекрестке с дорогами является одной из самых сложных проблем, которые необходимо решить в сценарии ADV. Проблема в основном состоит из трех основных вопросов: выбор целевой полосы движения, планирование и расчет траектории, а также управление и отслеживание транспортных средств.В этой статье предлагаются стратегия, модель и алгоритмы управления поворотом транспортных средств на перекрестке с помощью ADV для решения трех вышеупомянутых фундаментальных проблем. Парадигма MPC (модели управления с прогнозированием) [4] используется в качестве контроллера верхнего уровня транспортного средства. Моделирование проводится на платформе CarSim-Simulink с типичными сценами перекрестков [5]. Основные статьи этого документа:
Предложить подход к проблеме управления маневром поворота на перекрестках для сценариев ADV, который основан на связи V2X вместо различных систем зондирования, таких как лидар, миллиметровый радар и видеосистема.Можно было ожидать, что с таким решением можно будет значительно снизить стоимость автомобилей.
Предложите простую и осуществимую стратегию для выбора целевой полосы с учетом характеристик сценариев полностью ADV. Выбор целевой полосы — относительно сложная проблема в сценарии неполного ADV.
Разработайте и внедрите контроллер верхнего уровня на основе MPC для самостоятельного вождения транспортных средств и проведите обширное моделирование с помощью кросс-платформы CarSim-Simulink.
Остальная часть этой статьи организована следующим образом: Исследования, связанные с нашей, исследуются в Разделе 2. В Разделе 3 обсуждаются сценарии ADV и управление поворотом. В разделе 4 проводится проверка моделирования и анализ данных предложенного метода. В заключение даются выводы и направления дальнейших исследований.
2. Сопутствующие работы
Пионер-производитель ADV теперь разрабатывает автомобили, которые будут ездить по дорогам вместе с управляемыми людьми.Они не раскрывают деталей своих решений, таких как расчет траектории и управление транспортным средством. Однако можно предположить, что они предпочитают общее решение, подходящее для всех дорожных сценариев, а не рассмотрение конкретных форм дороги, таких как перекресток или перекресток [6]. Это связано с двумя факторами. Во-первых, в настоящее время нет простого способа получить достаточно информации о дорожных инструкциях и надежно определить форму дороги до того, как будут развернуты VANET или станут доступны высокодетализированные электронные карты.Во-вторых, случайные события или поведение человека при вождении затрудняют принятие решений по управлению, которые являются эффективными для всей процедуры, например, выбор целевой полосы движения при повороте ADV.
Для создания правильного поворота транспортного средства, который может предотвратить риск столкновения, наиболее важным вопросом является планирование и расчет географической траектории для транспортных средств. Существует много литературы, в которой описаны работы, связанные с траекторией поворота, но в основном они относятся к транспорту или проектированию дорог [7,8,9,10].Например, [7,8] используют анализ диаграммы, чтобы показать, что траектории могут сильно отличаться для разных водителей в соответствии с фактическими данными трафика. Путем анализа и кластеризации очень разнообразных реальных поворотов, управляемых человеком, [9] модель поворачивает через кривую Эйлера, соединенную с прямой линией на каждом конце, чтобы получить непрерывно изменяющуюся кривизну. Позже предлагается пятисегментная траектория поворота путем вставки дуги окружности между двумя кривыми Эйлера [10]. Чтобы сформировать траекторию движения по географическому маршруту, необходимо установить зависимость скорости или ускорения от времени.В исследовании [10] с помощью метода кластеризации представлены профили средней скорости для различных типов транспортных средств и геометрии дорог. Кубическая функция изменения скорости на поворотном перекрестке предложена в [11], многие условия ограничений определяют каждый параметр в этой кубической функции, например, остаточный коэффициент, скорость и ускорение транспортного средства, а также неизвестные величины. Эти неизвестные величины отражают различия в поведении, вызванные индивидуальными характеристиками и внутренними атрибутами водителей. Эти различия моделируются как случайные величины, и, наконец, параметры определяются статистическим методом.
Чтобы решить проблему конфликта многополосных транспортных средств, [12] заставляет каждое поворачивающее транспортное средство выбирать фиксированную полосу, задавая направляющие левого поворота. В [13] измеряется поведение транспортного потока при выборе полосы движения от ответвления до магистральной дороги на четырех непрерывных перекрестках городских магистральных дорог. Поведение при выборе полосы движения делится на две части: поведение при выборе временной полосы и поведение при выборе целевой полосы. Принимая во внимание различные факторы, которые влияют на две вышеупомянутые части, такие как характеристики водителей, атрибуты полосы движения, ожидаемая максимальная полезность прямой полосы и т. Д.строится совместная вероятностная модель для выбора полосы с наибольшей вероятностью для каждого транспортного средства.
Третий вопрос — это управление транспортным средством. Популярная структура управляющего блока — иерархическая [14,15,16,17,18,19,20,21]. То есть верхний уровень управления в основном предназначен для создания соответствующих управляющих переменных, обычно включая ускорение и угол поворота передних колес. Нижний уровень управления — это контроллер динамики транспортного средства, который преобразует выходные данные верхнего уровня во входные переменные привода, такие как открытие дроссельной заслонки, угол поворота рулевого колеса и т. Д.Работа в этой статье в основном сосредоточена на разработке верхнего контроллера, позволяя реализовать нижний уровень управления на развитой платформе динамического моделирования транспортных средств, такой как CarSim.
Основная цель контроллера верхнего уровня — отслеживать его опорный ввод. В настоящее время обычно используемые методы включают классическое пропорционально-интегральное дифференциальное (PID) управление [14,15], управление скользящим режимом [16,17] и управление с прогнозированием модели (MPC) [4,18,19,20,21]. В статье [14] PID используется для реализации продольного верхнего контроля транспортного средства на автостраде с автоматическим управлением.В исследовании [15] разрабатывается стратегия прямого управления и завершается адаптивная крейсерская система координации пласта, улучшая коэффициент пропорциональности PID. Тем не менее, ПИД-регулятор верхнего уровня обычно учитывает только обратную связь по ошибке и имеет относительно фиксированную структуру. Следовательно, эффект управления производительностью неудовлетворителен при изменении внешних условий. Следовательно, была предложена схема, называемая скользящим режимом управления, которая не требует фиксированной структуры системы и имеет преимущества быстрого реагирования и нечувствительности к помехам.В работе [16] используется каскадная система управления, в которой внутренний цикл использует управление скользящим режимом для обеспечения отслеживания траектории формации. В [17] предложен способ управления сдвоенным скользящим режимом для улучшения характеристик управления и устойчивости взвода двусторонней связи. Однако этот метод должен преодолевать вибрацию при приближении к точке равновесия. Самые последние работы [4,18,19,20,21] основаны на MPC, который представляет собой класс парадигм управления на основе оптимизации с гибкой структурой и целевой функцией.В исследовании [4] строится квадратичная целевая функция для минимизации ошибки траектории, а целевые функции [18] и [19] основаны на топливной эффективности, а [20,21] предлагает прогнозирующий контроллер, полученный из бесконечной нормы. с целью обеспечения того, чтобы расстояние между передним и задним транспортным средством всегда было больше минимального безопасного расстояния [20].
В нескольких других работах были представлены методы на основе данных для прогнозирования траекторий поворота и управления транспортным средством.Ведущее транспортное средство определяет траекторию поворота путем обучения траектории переднего транспортного средства в наборе данных [22,23] и полагается на камеры, радар, GPS и другие датчики для завершения управления транспортным средством [24]. Вообще говоря, этот вид управления поворотом транспортного средства, основанный на большом количестве датчиков, имеет высокую сложность, точность воспринимаемой периферийной информации не может быть гарантирована, а стоимость также значительно выше, чем на основе связи V2X [25].
Однако, насколько нам известно, нет литературы, посвященной полностью сценариям ADV, где можно было бы ожидать, что VANET станет важной инфраструктурой будущей транспортной системы.Такое ожидание побуждает нас решать проблему, используя разные направления мысли и разные решения.
3. Управление поворотом для сценариев ADV
Как уже упоминалось, управление поворотом на перекрестке в основном связано с тремя основными проблемами, а именно: выбор целевой полосы движения, планирование и расчет траектории, а также управление и отслеживание транспортного средства, которые рассматриваются в этом разделе. . Прежде всего следует уточнить, что проект или подход, предлагаемые в этой статье, основаны на следующих соображениях или предположениях:
Вычислительная нагрузка алгоритмов минимальна, чтобы они могли работать на недорогих встроенных системах при сохранении возможность обработки в реальном времени.
Используя специализированную систему позиционирования вместо GPS или упомянутых датчиков, будущая VANET могла бы предоставлять информацию о местоположении для всех транспортных средств с точностью до десятков сантиметров (на самом деле такое устройство позиционирования находится в стадии разработки [26,27 ]).
Информации, передаваемой через VANET или предоставляемой ею, должно быть как можно меньше, поскольку возможность беспроводного канала будет узким местом приложения ADV в случаях переполненного трафика.
3.1. Описание сценария и формулировка проблемы
Как показано на, мы рассматриваем сигнализацию перекрестка с несколькими полосами поворота и несколькими целевыми полосами. Придорожные блоки (RSU) распределены по обеим сторонам дороги, и все транспортные средства на дороге являются ADV, которые оснащены бортовыми блоками (OBU). Задержку связи и потерю содержимого передачи нельзя рассматривать в поворотной сцене. Для этих условий в данной статье разрабатывается система управления токарной обработкой, которая может выполнять следующие три функции.
Типичный сценарий многополосного перекрестка.
(1)
В соответствии с требованиями вождения автомобили, выезжающие на перекресток, могут осуществлять автоматическое управление поворотом налево, поворотом направо и разворотом.
(2)
Когда разворачивающиеся транспортные средства высвобождаются с нескольких полос поворота на сигнальном перекрестке, система управления поворотом должна решить проблему конфликта путей между поворачивающими транспортными средствами, чтобы максимально сбалансировать выездной транспортный поток, и чтобы учесть как можно меньше смены полосы движения после поворота.
(3)
Транспортные средства в процессе поворота должны сокращать расстояние от впереди идущих транспортных средств, насколько это возможно, для повышения эффективности движения перекрестка с условием обеспечения безопасного расстояния от впереди идущих транспортных средств. .
Для более эффективного управления транспортными средствами, приближающиеся к перекресткам транспортные средства могут получать важные сообщения от RSU. Базовые состояния движения и некоторые дополнительные данные каждого транспортного средства также могут передаваться друг другу с помощью бортовых блоков.
В этом документе от блоков RSU требуется только отправлять сообщения в блоки OBU, не получая ответа от блоков OBU, что значительно снизит нагрузку на блоки RSU. Формат и содержание сообщений от блоков RSU и OBU показаны в.
Таблица 1
Сообщения, определенные для RSU и OBU.
Сообщение RSU | Сообщение OBU |
---|---|
Количество полос | Идентификатор транспортного средства |
Расположение стоп-линии | Расположение |
Статус | |
Оставшееся время | Момент |
В сообщении RSU будет транслироваться количество начальных полос, целевых полос и координаты стоп-линии каждой дороги.Состояние может быть либо да, либо нет, чтобы указать, есть ли доступ в этом направлении. Оставшееся время (RT) — это время, оставшееся до изменения состояния. Комбинация направления, состояния и оставшегося времени может указывать оставшееся время зеленого света в каждом направлении.
В сообщении бортового блока идентификатор транспортного средства, местоположение и скорость являются основной информацией о транспортных средствах. Состояние указывает поведение, которое, как ожидается, будет выполнять ведущее транспортное средство, значение которого может быть -1, 0 или 1, что означает замедление до остановки, сохранение движения в текущих состояниях движения или ускорение до желаемой скорости, соответственно.Момент подсказывает, когда нужно изменить поведение, связанное со статусом. Это означает замедляющий момент, когда статус равен -1, и ускоряющий момент, когда статуи равны 1.
3.2. Рама управления поворотом машины
Рама управления поворотом, предложенная в этой статье, показана на рис. Он в основном состоит из пяти модулей: выбор целевой полосы движения, планирование траектории движения, расчет контрольных входных сигналов контроллера, контроллер MPC и установка. Чтобы решить проблему конфликта траекторий транспортных средств на нескольких полосах поворота, в этой статье сначала разрабатывается алгоритм выбора целевой полосы движения, который генерирует координаты точки съезда для каждого транспортного средства.
Состав системы поворотной машины для ADV.
Модуль планирования траектории устанавливает географический маршрут движения от начальной точки поворота до конечной точки. Затем модуль расчета контрольного входного контроллера генерирует географическую траекторию движения с отметкой времени, чтобы сформировать опорную траекторию. В этой статье для отслеживания пути используется иерархическая структура. Контроллер верхнего уровня использует модуль MPC для генерации управляющих переменных, ускорения и направления передних колес.Контроллер нижнего уровня выполняет управление динамикой транспортного средства, в основном полагаясь на платформу динамического моделирования CarSim, которая является модулем установки на блок-схеме. Модуль обнаружения периферийных транспортных средств в нашей системе нуждается только в информации о местоположении, скорости и значениях курса других транспортных средств, чтобы определить, является ли окружающая среда ненормальной в процессе поворота транспортного средства, что может быть получено через транспортное средство к транспортному средству (V2V ), но необходимая информация о состоянии эго-транспортного средства, такая как поза, может быть предоставлена локальным бортовым блоком.Модуль планирования v-состояний транслирует состояние автомобиля, которое в основном относится к тому, когда автомобиль впереди меняет свое состояние. Например, status = 1 и Moment = tAd указывают, что впереди идущий автомобиль начинает ускоряться в момент времени tAd, что удобно для автомобиля сзади для планирования траектории.
3.3. Выбор целевой полосы
Как упоминалось выше, цель выбора целевой полосы состоит в том, чтобы разрешить конфликт пути транспортного средства при многополосном повороте, обеспечить эффективность движения и заставить транспортные средства менять полосу движения после поворота как можно реже.Поэтому наш алгоритм выбора полосы движения применяется до того, как транспортные средства въезжают на перекресток, и в основном зависит от направления движения транспортных средств на следующем перекрестке и выбора полосы движения для транспортных средств впереди.
Конкретный проект с левым поворотом в качестве примера выглядит следующим образом: предположим, что на текущем перекрестке есть M полос левого поворота и N целевых полос (эти данные получены с помощью широковещательной передачи RSU на перекрестке). Основная идея схемы выбора полосы движения состоит в том, чтобы преобразовать проблему выбора полосы движения M — N в проблему выбора полосы 1 — N ‘, и транспортные средства в каждой левой исходной полосе не влияют на каждую other, поэтому схема должна получать результаты выбора дороги для переднего транспортного средства только в текущей полосе левого поворота.Кроме того, несколько транспортных средств поворачивают налево на следующем перекрестке при повороте налево на текущем перекрестке, поэтому выделенная полоса движения должна быть смещена от второй полосы. Конкретные шаги следующие:
Шаг 1: Целевая полоса делится в среднем на M частей, и среднее количество полос, соответствующих каждой исходной полосе, составляет k = N / M.
Шаг 2: Поскольку он не точно равномерно разделен, оставшийся запас целевой полосы составляет T = N — k * M .
Шаг 3. Каждое транспортное средство создает очередь длиной M в своем собственном бортовом блоке. Во-первых, начальное значение каждой очереди составляет k , то есть [k, k, k ⋯ k], где количество элементов равно M. Затем запас целевой полосы выделяется из второй полосы. Наконец, следующая очередь может быть получена во всех OBU, то есть:
[k, k + 1, k + 1, ⋯ k + 1⏟T, k ⋯ k⏟M]
(1)
Шаг 4 : Каждый бортовой блок преобразует очередь в целевую полосу, необходимую для текущего транспортного средства.
Шаг 5: Вызовите функцию выбора полосы движения от 1 до N ‘ и каждый раз выбирайте пустую полосу рядом с ее целевой полосой.
Что касается функции выбора полосы движения от 1 до N ‘, она относительно проста, поскольку не связана с проблемой конфликта путей. Транспортные средства сначала группируются в соответствии с N ‘, и заднее транспортное средство выбирает полосу движения, которую не выбирает переднее транспортное средство, но которая находится ближе всего к желаемой полосе движения. Например, если автомобиль повернет направо на следующем перекрестке, он естественным образом ожидает ближайшую правую полосу.Если впереди идущие машины в той же группе не выбрали крайнюю правую полосу, текущая машина поворота выберет эту полосу.
3.4. Планирование и расчет траектории
При планировании маршрута движения учитывается только географический маршрут, по которому должно следовать транспортное средство. На этом треке, когда и где транспортное средство запускается и останавливается, скорость транспортного средства для каждой позиции анализируется и контролируется как отдельные проблемы. Здесь идеальным следом поворачивающего транспортного средства можно считать дугу, совмещенную с прямой линией.Его рациональность в основном заключается в двух моментах: (I) колея поворота водителя близка к дуге в большинстве сцен поворота; и (II) угол поворота рулевого колеса в основном фиксируется при фактическом повороте (то есть угол поворота переднего колеса в основном тот же). Согласно идее Аккермана о геометрии рулевого управления [28], мы имеем R = L / δ, где L обозначает продольное расстояние в метрах между центром передних и задних колес, δ обозначает прогиб передних колес в радианах, а R обозначает радиус поворота в метрах.Если скорость в основном фиксированная, то соответствующий путь — определенная дуга. Однако, если местность слишком ограничена, чтобы следовать по дуге, или если транспортное средство обнаруживает опасность для окружающих транспортных средств при повороте, нам необходимо перепланировать траекторию (см.). В этом документе основное внимание уделяется раскрытию сценария, в котором поворот может быть завершен по дуге в сочетании с прямой линией.
В соответствии с нашим алгоритмом, OBU получает четыре координаты ключевой точки, передаваемые RSU, включая координаты местоположения начальной точки остановки на дороге X s ( x 0 , y 0 ), начальная линия расширения дороги одна точка X s1 ( x 1 , y 1 ), конечная точка остановки дороги X f ( x N 0 , y N 0 ), и одна точка конечной выносной линии дороги X f1 ( x N 1 , y N 1 ).Здесь точка расширенной линии не выбирается произвольно, а предварительно выбирается RSU. Он может представлять угол рыскания дороги в сочетании с точкой стоп-линии. Координаты здесь — это GPS-координаты. Если взять в качестве примера X s , x 0 — это долгота положения, а y 0 — это широта, и другие аналогичны. Выходные данные: положение начальной остановки дороги X s , конечной остановки дороги X f , начала дуги A , конца дуги B , центра окружности T и радиуса угла R . угол рыскания начальной дороги φs, конечный угол рыскания дороги φf.Угол рыскания здесь означает угол между направлением основного корпуса транспортного средства и направлением северного полюса. Кроме того, следует отметить, что точка A и точка X s , точка B и точка X f могут совпадать. Конкретная реализация алгоритма показана следующим образом.
Шаг 1. Прямая линия определяется по двум точкам. Таким образом, угол рыскания стартовой дороги определяется от точки остановки стартовой дороги и продолжения дороги.Угол рыскания конечной дороги определяется от точки остановки конечной дороги и продолжения дороги.
Шаг 2: Вычислите линейное уравнение начальной и конечной дорог. Это L1, L2.
Шаг 3. Рассчитайте линейное уравнение стоп-линии начальной и конечной дороги.
Шаг 4. Вычислите координату пересечения M (xM, yM) двух дорог. Сохраните точку пересечения, если есть пересечение. В остальном две дороги параллельны.
Шаг 5: Расстояние между центром круга и двумя дорогами равно, и определенный круг должен быть вписан в линию полосы движения, чтобы определился уникальный круг. Таким образом можно получить центр круга и радиус дуги.
Шаг 6: Так как траектория дуги определена, получается начальная и конечная точки дуги во всем процессе токарной обработки.
Вышеупомянутый алгоритм применим к повороту влево, вправо и развороту. Когда разница между φs и φf равна π или −π, это означает разворот на 180 градусов.Точно так же, если разница между 0 и π или между −2π и −π, это означает поворот налево; в противном случае это означает поворот направо.
При планировании маршрута движения, описанном выше, спланирован маршрут географического движения, ограничение скорости поворота и ускорение поворачивающего транспортного средства на текущем перекрестке следует учитывать затем, чтобы сделать отметку времени географического маршрута. Таким образом, в этой статье будет представлен алгоритм расчета входного эталонного сигнала контроллера с учетом двух вышеупомянутых аспектов, соответственно, следующим образом.
3.4.1. Максимальная скорость поворотного транспортного средства
Максимальный предел скорости поворотного транспортного средства в основном зависит от местности и характеристик транспортных средств. Здесь будет принята максимальная скорость, которой может достичь большинство транспортных средств. На этой скорости во время поворота транспортных средств не будет скольжения. В соответствии с нашим алгоритмом, это минимум из следующих двух значений: (I) ограничение скорости для поворота транспортных средств на текущем перекрестке и (II) литература [28,29] дает ограничение скорости при установившихся характеристиках рулевого управления по формуле с использованием модели транспортного средства с двумя степенями свободы [28,29].Соотношение между скоростью и радиусом поворота формулируется следующим образом.
Из формулы (3) можно получить соотношение между скоростью и радиусом поворота:
где K называется коэффициентом устойчивости транспортного средства и определяется следующим образом.
где k 1 , k 2 обозначают жесткость передних и задних колес на поворотах; lf и lr — расстояние от центра масс до центра передних и задних колес, L — длина колесной базы транспортного средства, а м — его масса.Предположим, что все параметры транспортного средства могут быть получены из его электронных блоков, а радиус поворота может быть получен из RSU. Уравнение (4) определит одно ограничение скорости v h для поворачивающего транспортного средства. С другой стороны, может быть ограничение скорости поворота v l , заданное также RSU перекрестка, поэтому фактическое максимальное значение может быть получено путем выбора минимального, а именно:
Расчетный результат в основном согласован с фактической скоростью поворота.
3.4.2. Модель ускорения разворачивающегося автомобиля
Вообще говоря, при въезде на перекресток начальная скорость v 0 не больше максимальной скорости поворота v cmax . Таким образом, наша задача трансформируется в изменение скорости с v 0 на v cmax . В этом документе используется идея кластеризации, представленная в ссылке [9], которая объединяет среднее ускорение транспортных средств на нескольких транспортных развязках, а затем устанавливает соотношение между средним значением ускорения a и радиусом поворота R дороги для построения функция.
В настоящее время использование вычисленного среднего ускорения для замены изменения ускорения на всем перекрестке может не только упростить процесс управления транспортным средством, но и быть более легким в реализации в эпоху электромобилей.
Таким образом, мы можем получить процесс изменения скорости всего перекрестка.
Когда скорость автомобиля достигает v cmax , транспортное средство проезжает перекресток с постоянной скоростью v cmax .
3.5. Контроль и слежение за транспортным средством
Поскольку транспортное средство не следует нашей опорной траектории без ошибок в то время, применение MPC в этом документе в основном предназначено для помощи в управлении верхним динамическим регулированием транспортного средства.
Принцип управления MPC показан на. Во-первых, значение состояния в реальном времени и ожидаемое значение состояния управляемого объекта (обратите внимание, что ожидаемая траектория дискретизируется, чтобы стать известной) принимаются как входные данные контроллера MPC.Затем модуль прогнозирования в контроллере MPC вычисляет значения состояния будущих моментов времени N p в соответствии с уравнением обновления состояния в виде формулы (9). Наконец, модуль оптимизации контроллера MPC устанавливает функцию потерь в соответствии с минимальным значением ошибки между прогнозируемым значением состояния и ожидаемым значением состояния и решает значение управляющего входа, примененное к управляемому объекту.
Здесь значения состояния, которые выбирает этот документ, включают ошибку поперечного положения, ошибку продольного положения и ошибку угла рыскания и их производную, которая выражается как ξ¯ = (y¯˙, x¯˙, ψ¯, ψ¯˙, Y ¯, X¯) T, выходные управляющие переменные — это текущий угол переднего колеса и ускорение, выраженные как u (δ, a).Ссылаясь на уравнение динамики транспортного средства [30,31,32], получается следующее уравнение передачи состояния:
ξ¯ (k + 1) = Aξ¯ (k) + Bu (k) + D
(9a)
A = [1T000001-T * (2 * Cf + 2 * Cr) m * vxT * (2 * Cf + 2 * Cr) m-T * (2 * Cf * lf-2 * Cr * lr) m * vx00001T000 −T * (2 * Cf * lf − 2 * Cr * lr) Iz * vx − T * (2 * Cf * lf − 2 * Cr * lr) Iz1 − T * (2 * Cf * lf2 + 2 * Cr * lr2) Iz * vx0000001T000001] D = [0 − vx * T − T * (2 * Cf * lf − 2 * Cr * l) m * vx0 − T * (2 * Cf * lf − 2 * Cr * lr) Iz * vx0T]; B = [002 * Cf * Tm0002 * T * Cf * lfIz0000-T].
(9b)
Функция стоимости построена по принципу минимальной ошибки.
минΔu (k) J (k) = ∑i = 1Np‖ξ¯ (k + i | k) ‖Q2 + ∑i = 1Nc‖Δu (k + i | t) ‖R2 + ρε2 s.t. umin (k + j)
(10)
где j = 0,1,2,… Nc −1 и i | k обозначает i -й шаг прогнозирования на временном шаге k. N p представляет длину горизонта прогнозирования. N c — длина контрольного горизонта. Параметры Q, R и ρ ∊ [0, 1] выбраны для того, чтобы иметь хороший компромисс между опорной траекторией, отслеживанием политики пропусков и возбуждением исполнительных механизмов.Параметр ε — фактор релаксации, который делает функцию оптимизации разрешимой.
После решения уравнения (10) в каждом цикле управления получается серия приращений управляющего входа во временной области управления:
ΔUt * = [Δut *, Δut + 1 *, Δut + 2 *, ⋯, Δut + Nc − 1 *] T
(11)
Первый элемент в последовательности управления действует в системе как фактическое приращение управляющего входа, то есть:
После входа в следующий цикл управления он повторяет описанный выше процесс, чтобы реализовать управление отслеживанием траектории транспортного средства.
4. Simulink и экспериментальные результаты
В этом разделе мы проведем несколько экспериментов по моделированию, чтобы протестировать наш алгоритм, а также контроллер MPC на CarSim-Simulink. Качество связи предполагается идеальным, сцены движения смоделированы для проверки алгоритма выбора полосы движения и контроля поворота транспортного средства с соблюдением правил правостороннего движения, таких как Китай, США и т. Д.
4.1. Моделирование выбора целевой полосы движения
Как показано на, в одном направлении движутся семь транспортных средств с трех разных полос движения.Ширина каждой полосы установлена равной 3,5 м, при этом необходимо выбрать три левых полосы и пять целевых полос. Если взять в качестве примера первый автомобиль в первой полосе, координата по оси Y транспортного средства, движущегося по левой полосе движения, установлена на 0, координата оси X также установлена на 0. Дополнительные основные параметры транспортного средства и начальные условия показано в и соответственно. Рабочие параметры автомобиля, выбранного в CarSim, показаны в, где L , l f , l r , k 1 и k 2 совпадают с значение в формуле (5), а Iz обозначает момент инерции относительно оси Z.
Начальная сцена многополосной симуляции.
Таблица 2
Стартовые позиции транспортного средства в многополосном моделировании.
№ машины | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X (м)
Таблица 3Динамические параметры автомобиля.
|