Как авто паркуется самостоятельно

Содержание

Автоматическая парковка автомобиля: так нужен ли водитель?

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

Опция значительно упрощает процесс маневрирования тачкой в сложных локациях. Новички на машинах с автоматической парковкой получают возможность спокойно ставить «коня в стойло», не переживая за целостность кузова, и сохранность соседних машин.

Рассмотрим, как работает система автоматической парковки автомобиля более подробно. Опция сегодня присутствует на тачках многих марок. Однако, почти 15 лет назад ее впервые презентовали на Volkswagen. Поэтому, именно на примере этих автомобилей, мы ее сегодня и изучим.

Что такое автоматический паркинг?

Интеллектуальный комплекс безопасности «Service Park Assist System» или автоматическая парковка Volkswagen – это режим автопилота во время парковочных действий. Машина самостоятельно паркуется параллельно и перпендикулярно проезжей части, с заездом вперед и назад. Park Pilot имеется на следующих автомобилях: Golf, Passat B8, Passat CC, Tiguan, Teramont, Jetta и Touareg.

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

lazy placeholder

Устройство системы

Автоматическая парковка автомобиля без водителя работает с помощью ультразвуковых сенсоров и приемников. Напоминает принцип работы системы парктроников, не так ли? Однако, у автопарковки датчики имеют больший радиус действия.

Датчики излучают волны, а затем ловят обратный сигнал. Блок управления обрабатывает информацию и вычисляет расстояние до объектов, а затем дает команду на движение. Все маневры совершаются точно и без риска столкновения. Всего комплекс Service Parking Assist у Volkswagen насчитывает 12 сенсоров (по 4 спереди и сзади, по 2 по бокам авто).

lazy placeholder

Алгоритм работы датчиков при автоматической парковке полностью выстраивает электронный блок управления.

Включение и выключение опции осуществляет водитель. Он же в любой момент может прервать процесс. Наблюдать за схемой и ходом маневрирования можно на дисплее штатного ГУ. Там же отображаются необходимые команды.

lazy placeholder

Виды автопилота

Всего различают 2 основных вида автоматической парковки:

На машинах каких марок есть автоматическая парковка?

Интеллектуальная система автоматической парковки сегодня присутствует, практически, во всех автоконцернах. Только название везде разное:

lazy placeholder

Как это работает?

Общий принцип у всех автоматических парковок един:

lazy placeholder

Как пользоваться (на примере Volkswagen)

Приведем более подробные инструкции, например, для парковочного ассистента в автомобиле Фольксваген Туарег 2019 года:

lazy placeholder

lazy placeholder

Более подробные инструкции ищите в техническом руководстве своего автомобиля. Как правило, система Park Assist на Volkswagen Tiguan, Teramont или любом другом, работает одинаково.

Плюсы и минусы автоматической парковки

lazy placeholder

К сожалению, система не лишена недостатков:

lazy placeholder

Неблагоприятные условия для активации автопилота

В завершение, рассмотрим, в каких случаях автоматическая параллельная или поперечная парковка на Фольксваген Тигуан, или любом другом, может подвести:

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

Источник

Описание и принцип работы системы автоматической парковки

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

Что такое интеллектуальная система автоматической парковки

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

Первой подобную систему разработала компания Volkswagen. В 2006 году была представлена инновационная технология Park Assist на автомобиле Volkswagen Touran. Система стала настоящим прорывом в автомобильной индустрии. Автопилот сам выполнял маневры по парковке, но возможности были ограничены. Через 4 года инженеры смогли усовершенствовать систему. В настоящее время она есть во многих марках современных автомобилей.

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

Основные компоненты

Интеллектуальная система автоматической парковки работает в комплексе с разными устройствами и компонентами автомобиля. Большинство автопроизводителей разрабатывают собственные системы, но все они имеют в своем составе определенные элементы, среди которых:

Не каждый автомобиль может быть оборудован функцией автопарковки. Для оптимальной работы в комплектацию должны входить электроусилитель руля и автоматическая коробка передач. Датчики схожи с датчиками парктроника, но имеют повышенный радиус действия. Разные системы отличаются количеством датчиков. Например, известная система Park Assist имеет 12 датчиков (по четыре спереди и сзади, остальные – по бортам автомобиля).

Как работает система

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

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

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

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

Автоматический режим позволяет полностью исключить участие водителя. Будет достаточно только нажать кнопку. Система сама найдет место и выполнит все маневры. Под контролем блока управления будет усилитель руля и АКПП. Водитель даже может выйти из машины и наблюдать за процессом со стороны, запуская и отключая систему с пульта управления. Также можно в любой момент перейти в полуавтоматический режим.

Неблагоприятные условия для работы системы

Как и любая техника, система парковки может ошибаться и работать некорректно.

Системы автопарковки разных производителей

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

Преимущества и недостатки

Как и у многих инноваций у данной функции есть свои плюсы и минусы. К плюсам можно отнести следующее:

Но также есть и свои минусы:

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

Источник

Самопаркующаяся тачка в 500 строк кода

С помощью генетического алгоритма натренируем тачку парковаться самостоятельно.

2d1cba4abc477b314b1428f66d468dba

Вкратце

В этой статье мы «научим» автомобиль выполнять самостоятельную парковку с помощью генетического алгоритма.

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

image loader

В ≈40-м поколении автомобили понемногу начнут учиться парковке и будут все ближе и ближе подбираться к парковочному месту,

image loader

Еще один пример с более сложным стартовым положением:

image loader

Да-да, машины врезаются в другие машины по пути, и неточно становятся на парковочное место, но для них это всего-лишь 40-е поколение с момента создания мира, так что будьте снисходительны и дайте машинам подрасти 😀

Вы можете запустить 🚕 симулятор эволюции, чтобы увидеть эволюционный процесс прямо в браузере. Симулятор предоставляет следующие возможности:

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

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

С учетом вышесказанного, переходим к деталям.

Шаг за шагом мы сведем высокоуровневую задачу создания автомобиля способного парковаться автоматически к простой задаче нахождения оптимальной комбинации 180-и нулей и единиц (к нахождению оптимального генома).

Вот что мы собираемся сделать:

💪🏻 Дадим машине мышцы (двигатель, руль), чтобы она могла двигаться в сторону парковочного места.

👀 Дадим машине глаза (сенсоры), чтобы машина могла видеть препятствия вокруг.

🧬 Разовьем мозг, чтобы он мог инициировать правильные движения на основании сигналов сенсоров. Здесь мы применим генетический алгоритм. Поколение за поколением функция мозга movements = f(sensors) будет учиться как приближать авто к парковочному месту.

Даем машине мышцы

Чтобы двигаться, машине нужны «мускулы». Дадим машине два типа мышц:

С помощью этих двух мышц машина может выполнять следующие движения:

image loader

Вот как в нашем случае значения сигналов мозга соотносятся с действиями мышц:

image loader

Даем машине глаза

Прежде чем наша машина научится самостоятельно парковаться, используя свои мышцы, она должна «видеть» окружающую среду. Дадим машине 8 глаз в виде датчиков расстояния:

Каждый датчик может обнаруживать препятствие на расстоянии от 0 до 4 метров.

64200162cb12aa2da4efab16d7daeeb5

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

Даем машине мозг

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

Входящие сигналы мозга

Исходящие сигналы мозга

Каждые 100ms мозг должен выдавать на выходе два целых числа:

Мозговая функция

Тем не менее, чтобы избежать введения совершенно новой концепции нейронных сетей в этой статье, мы воспользуемся гораздо более простым подходом и будем использовать два линейных многочлена с несколькими переменными (чтобы быть более точным, каждый многочлен будет иметь ровно 8 переменных, поскольку у нас есть 8 датчиков), которые будут выглядеть примерно так:

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

Мы можем реализовать универсальную полиномиальную функцию следующим образом:

Мозг автомобиля в этом случае будет состоять из двух многочленов и будет выглядеть так:

Результатом функции linearPolynomial() является число с плавающей запятой. Функция brainToMuscleSignal() должна преобразовать широкий диапазон чисел с плавающей запятой в три конкретных целых числа, и она сделает это в два этапа:

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

image loader

Сигмоид преобразует широкий диапазон чисел с плавающей запятой (ось x ) в числа с плавающей запятой с ограниченным диапазоном (0. 1) (ось y ). Это именно то, что нам нужно.

image loader

Вот как шаги преобразования будут выглядеть на графике сигмоиды.

image loader

Реализация двух упомянутых выше шагов преобразования будет выглядеть так:

Геном автомобиля (ДНК)

Геном автомобиля в десятичной форме

Геном автомобиля в двоичной форме

Давайте пойдем на шаг глубже (на уровень генов) и переведем десятичные числа генома автомобиля в двоичный формат (в простые единицы и нули).

Я подробно описал процесс преобразования чисел с плавающей запятой в двоичные числа в статье Binary representation of the floating-point numbers. Обратитесь к ней, если код в этом разделе непонятен.

Вот краткий пример того, как число с плавающей запятой может быть преобразовано в 16-битное двоичное число (опять же, можете обратиться к этой статье, если пример непонятен):

image loader

В нашем случае, чтобы уменьшить длину генома, мы преобразуем каждый плавающий коэффициент в нестандартное 10-битное двоичное число ( 1 знаковый бит, 4 бита экспоненты, 5 дробных битов).

Например, для генома в десятичном формате, о котором говорилось выше, его двоичное представление будет выглядеть так:

Только взгляните! Бинарный геном выглядит довольно зашифрованным. Но представьте себе, что эти 180 нулей и единиц определяют, как автомобиль ведет себя на стоянке! Это как если бы вы взломали чью-то ДНК и точно знаете, что означает каждый ген. Сильно!

Кстати, вы можете увидеть точные значения геномов и коэффициентов для наиболее «умного» автомобиля в панели симулятора

image loader

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

Мозговая функция, работающая с бинарным геномом

Формулировка проблемы обучения автомобиля

☝🏻 Итак, наконец-то, мы подошли к моменту, когда высокоуровневая проблема обучения автомобиля самостоятельной парковке сводится к простой оптимизационной задаче поиска оптимальной комбинации 180 единиц и нулей (нахождение «достаточно хорошего» генома машины). Звучит просто, не правда ли?

Наивный подход

Мы могли бы подойти к проблеме поиска «достаточно хорошего» генома наивно и опробовать все возможные комбинации генов:

Генетический подход

Основы генетического алгоритма

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

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

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

Переходим к «Шагу №2», если количество поколений не достигло предела (например, не прошло 100 поколений) или пока самые успешные индивидуумы не достигли ожидаемого значения функции пригодности (например, если лучший автомобиль еще не приблизился к месту стоянки ближе, чем на 1 метр ). В противном случае выходим из цикла.

image loader

Развитие мозга автомобиля с помощью генетического алгоритма

Перед запуском генетического алгоритма давайте создадим функции для этапов «СОЗДАНИЯ», «СЕЛЕКЦИИ», «СПАРИВАНИЯ» и «МУТАЦИИ».

Функции для шага «СОЗДАНИЕ»

Функция createGeneration() создает массив случайных геномов ( популяцию или поколение) и принимает два параметра:

Функции для шага «МУТАЦИЯ»

Функции для шага «СПАРИВАНИЕ»

Функция mate() примет геномы father и mother и произведет двух детей. Мы также произведем мутацию во время спаривания.

В приведенном выше примере мутации не учитывались.

Реализация функции может выглядеть следующим образом:

Функции для шага «СЕЛЕКЦИЯ»

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

Функция пригодности всегда связана с конкретной задачей, которую мы пытаемся решить, и не является универсальной. В нашем случае фитнес-функция будет измерять расстояние между автомобилем и местом парковки. Чем ближе машина к месту стоянки, тем она «лучше» (более пригодна). Мы реализуем фитнес-функцию чуть позже, а пока давайте опишем ее интерфейс:

Мы можем реализовать функцию select() следующим образом:

Фитнеса-функция (функция пригодности)

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

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

image loader

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

Расстояние между двумя точками в пространстве будет вычисляться на основе теоремы Пифагора (ура! она наконец-то понадобилась после школы!) следующим образом:

Расстояние между автомобилем и местом парковки (урон) будет рассчитываться следующим образом:

Поскольку пригодность ( fitness ) должна быть обратно пропорциональна урону ( loss ), мы рассчитаем ее следующим образом:

Вы можете увидеть значения fitness и loss для определенного генома и для текущего положения автомобиля на панели симулятора:

image loader

Запускаем эволюцию

После запуска функции select() массив generation сортируется по значениям пригодности в порядке убывания. Следовательно, наиболее приспособленный автомобиль всегда будет первым автомобилем в массиве.

Автомобили 1-го поколения со случайным геномом будут вести себя примерно так:

image loader

Автомобили ≈40-го поколения начинают учиться парковаться самостоятельно и все ближе приближаются к месту парковки:

image loader

Другой пример с немного более сложной стартовой точкой:

image loader

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

Из поколения в поколение мы можем видеть, как урон уменьшается (что означает, что значения пригодности растут). P50 Avg Loss показывает среднее значение урона (среднее расстояние от автомобилей до места парковки) для 50% наиболее приспособленных автомобилей. Min Loss показывает урон наиболее приспособленного автомобиля в каждом поколении.

image loader

Вы можете видеть, что в среднем 50% наиболее приспособленных автомобилей учатся приближаться к месту парковки (от 5,5м от места парковки до 3,5м за 35 поколений). Тренд для значений Min Loss менее очевиден (от 1м до 0,5м с некоторыми шумом), однако из анимации выше вы можете увидеть, что автомобили научились некоторым базовым парковочным движениям.

Заключение

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

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

Вы можете запустить 🚕 Симулятор эволюции, чтобы увидеть эволюционный процесс прямо в браузере. Симулятор предоставляет следующие возможности:

Полный генетический исходный код, показанный в этой статье, также можно найти в репозитории Evolution Simulator repository. Если вы один из тех, кто действительно будет считать и проверять количество строк, чтобы убедиться, что их меньше 500 (без учета тестов), пожалуйста, проверьте код здесь 🥸.

Остался еще ряд нерешенных проблем с кодом и симулятором:

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

Мы не уменьшаем значение пригодности машины, когда она наезжает на другую машину. Таким образом, автомобиль не «чувствует» никакой вины в создании ДТП.

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

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

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

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

Источник

Оцените статью
AvtoRazbor.top - все самое важное о вашем авто