Как научиться держать полосу движения


Как научиться ездить ровно | AVTONAUKA.RU

Вопрос: Как научиться ездить ровно? Как вести машину ровно, чтобы она не виляла по дороге? Может выбирать какой-то ориентир на дороге, или что-то ещё?

Ответ.

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

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

Объезд всевозможных неровностей на дороге или маневрирование между дорожными ямами — не в счет. Также не берем в счет люфты в рулевых тягах, из-за которых колеса автомобиля «живут своей жизнью», т.е. считаем, что автомобиль технически исправен.

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

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

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

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

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

 

Нужно научиться смотреть на дорогу дальше, взгляд должен скользить впереди машины на каком-то расстоянии (дальше – ближе – дальше – снова ближе и т.д.), как бы «ощупывая» дорогу, примерно посередине вашей полосы. Чем выше скорость, тем дальше должен быть взгляд. Не следует «привязывать» свой взгляд к линии разметки, к краю дороги, автомобиль невольно будет к ним «притягиваться».

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

Руль нужно держать свободно, без напряжения в кистях рук. Когда автомобиль, все-таки, уклоняется от прямолинейного движения, что естественно, ведь, дороги у нас не идеальные, например, начал смещаться вправо, нужно легким движением немного качнуть руль в другую сторону, т.е. влево, но не задерживать его в той точке. Т.е. чуть повернули (плавно качнули) руль влево и сразу же возвращаете его на место в положение «прямо».

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

Важно держать рулевое колесо двумя руками и рулить плавно. Быстро, но плавно. Никаких резких движений. Если даже незначительно дернуть руль на скользкой дороге, то «улететь» с нее можно и на прямом участке. Или же внезапно оказаться на соседней полосе, что гораздо хуже, тем более, если эта полоса — встречная.

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

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

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

Резкое увеличение «газа» разгружает переднюю ось (вес перемещается назад), в этот момент сцепление передних колес с дорогой несколько ослабевает. Сброс «газа» или торможение нагружают переднюю ось автомобиля (вес перемещается вперед), соответственно, сцепление передних колес с дорогой усиливается.

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

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

Продолжайте учиться | Lane Online

Все идет удаленно / онлайн - сейчас

Последние обновления информации о том, где и как проходят занятия, можно найти на странице сообщений о COVID-19.

Обеспокоены онлайн-курсами? У нас есть помощь! Получите помощь и приготовьтесь прямо сейчас, используя ресурсы, указанные ниже. Независимо от того, никогда ли вы пользовались (и никогда не слышали) о Moodle или являетесь полноценным онлайн-экспертом, есть поддержка, которая поможет вам ориентироваться в следующие несколько месяцев.

Заходите в центр поддержки Lane в Moodle, чтобы получить академическую или техническую помощь, поделиться советами и виртуально потусоваться, пока мы путешествуем по этому странному времени.

Щелкните значок + ниже, чтобы получить дополнительную информацию.

Я никогда не использовал Moodle. Помогите!

Не паникуйте! Мы здесь, чтобы помочь.

Что такое Moodle?
  • Moodle - это сайт, на котором размещаются удаленные / онлайн-курсы Лейна. Ваш инструктор, вероятно, предоставит некоторые ресурсы класса через Moodle в течение первых трех недель.
Как мне попасть в Moodle?
  • В любом интернет-браузере перейдите на https://classes.lanecc.edu
  • Нажмите кнопку входа в систему.
  • Введите свой L # и длинную кодовую фразу MyLane.
  • Вы в Moodle!
Можно попробовать?
  • Да! У нас сейчас проходит дружественный, открытый для всех «курс» поддержки и ресурсов, который называется Lane Support Hub.
  • Чтобы присоединиться, перейдите по ссылке выше.
  • Войдите в систему, используя свой L # и кодовую фразу
  • Вот и все! Все ученики уже автоматически входят в состав Hub.Щелкните раздел «Новое в онлайн-обучении» для получения дополнительных ресурсов.

Для начала просмотрите следующее видео:

А как насчет занятий искусством / лабораториями / физкультурой?

Хотите знать, как класс, который обычно требует практической или физической работы, будет соответствовать новым требованиям к физической / социальной дистанции?

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

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

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

Как мне обучиться / продолжить обучение в дистанционных / онлайн-классах?

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

  • Следите за тем, чтобы ваши инструкторы четко сообщили, как будут проходить занятия. .Многие курсы будут переведены в Moodle в течение удаленного периода, но некоторые могут быть продолжены по электронной почте или другим способом.
  • Как только вы узнаете как , сосредоточьтесь на , когда . Можете ли вы по-прежнему проводить запланированное время «в классе»? Если нет, как можно скорее сообщите об этом своим инструкторам и разработайте план, чтобы убедиться, что вас считают «присутствующим» на любых занятиях в классе.
  • Завершите работу в первую неделю. Это критично! Все занятия потребуют некоторой формы взаимодействия в течение недели 1; Студенты, не выполнившие задания первой недели, могут быть исключены из своих курсов.
  • Сформируйте привычку учиться: Обучение онлайн потребует новых привычек! Многие из нас полагаются на очные занятия, чтобы сформировать свои учебные привычки. Теперь вам нужно выбрать, что будет работать лучше всего. Сформируйте хорошие привычки дистанционного обучения с помощью этих советов:
    • Пересмотрите расписание и учебные планы курсов; планируйте посвящать этим занятиям как минимум столько же времени, сколько вы могли бы выделить при личной встрече.Для групповых занятий с тремя кредитами три раза в неделю минимум домашнего времени будет составлять три часа, но шесть часов могут быть более вероятными (три часа занятий + три часа выполнения домашнего задания).
    • Выделите в течение недели промежутки времени, когда вы можете заниматься классной работой.
    • По возможности выбирайте время дня, когда вы обычно чувствуете себя наиболее продуктивным.
    • Не загоняйте все учебное время в один день (или в длинные блоки последней минуты).Хотя иногда это необходимо, это непродуктивно: вы будете меньше запоминать и будете более склонны разочаровываться в сложной домашней работе.
  • Оставайтесь на вершине работы: Легко упустить сроки, когда нет места для личного обсуждения. Если вы отстаете, общайтесь заранее и часто со своими инструкторами.
  • Учитесь у других : Есть подсказка? Хотите услышать от кого-то, кто действительно переживает это? Присоединяйтесь к нашему постоянному пространству поддержки / курсу, чтобы узнать, с чем сталкиваются другие студенты, и получить больше советов по удаленному обучению!

Как мне общаться со своим инструктором?

Ваш адрес электронной почты Titan (@my.lanecc.edu) - это адрес, по которому будут отправляться официальные сообщения колледжа, и это лучший адрес для связи с преподавателем. Найдите их электронную почту в MyLane. Нужна помощь в первом доступе к электронной почте? Ознакомьтесь с этим руководством по эксплуатации.

Инструкторы

могут также предоставить другие методы онлайн-контакта, включая сообщения Moodle, собрания и чаты Zoom. Хотите попрактиковаться? Зайдите в раздел «Новички в Интернете» Центра поддержки студентов, чтобы получить возможность все вместе протестировать!

Как получить доступ к Zoom?

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

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

Где я могу получить помощь во всем остальном (советом, жильем, питанием и т. Д.)?

Мы знаем, что это трудное время. Ресурсы, на которые мы все рассчитывали, могут быть недоступны или иметь совершенно разные графики.Вот несколько ресурсов, которые могут помочь вам сделать Spring term как можно более успешным. Более подробный список можно найти на странице доступности сервиса COVID-19.

Ресурсы кампуса:
Библиотека
Продовольственные ресурсы

Еда (включая кладовую LCC Rainy Day Food Pantry) в настоящее время недоступна на территории кампуса во время физического закрытия кампуса. Подробности см. На сайте доступности службы.

  • Школы 4J предоставляют летние обеды ЛЮБОМУ ребенку в возрасте 18 лет и младше, независимо от того, зачислены они в школы 4J или нет, в шести местах:
    • Академия искусств и технологий, 1650 West 22nd Ave.(за дверью)
    • Начальная школа Awbrey Park, 158 Spring Creek Dr. (TBD)
    • ECCO, 200 N. Monroe St. (вестибюль)
    • Начальная школа Holt, 770 Calvin St. (задняя дверь кафетерия)
    • Начальная школа Ховарда, 700 Ховард-авеню (вестибюль)
    • Средняя школа Южного Юджина, 400 Восточная 19-я авеню (задняя дверь кафетерия)
  • Food for Lane County предоставила список всех кладовых с едой, включая мобильные кладовые, и их наличие.
  • Продлены льготы по программе SNAP (талоны на питание). Если вы недавно потеряли работу или потеряли льготы по программе SNAP, вы можете иметь право подать заявление повторно.
Жилье:
  • Город Юджин создал веб-сайт с ресурсами, относящимися к жилью для района Юджин / Спрингфилд
  • #RealCollege Guide для получения дополнительной помощи (общенациональное питание, уход за детьми, работа / занятость и т. Д.)

Нужен Интернет?

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

EveryoneOn

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

Бесплатный Wi-Fi
  • Город Юджин предлагает бесплатный Wi-Fi в некоторых частях города.
  • Comcast также предлагает бесплатный доступ к Wi-Fi - при использовании карты помните, что некоторые из перечисленных местоположений являются частными домами, а не предприятиями. Парковка возле предприятий с открытым Wi-Fi Comcast - лучший вариант.
  • Супермаркет Ray's в Окридже также предоставляет студентам бесплатный Wi-Fi на парковке.
    • Обратитесь в службу поддержки студентов, чтобы получить информацию о пароле / подключении для Ray's.
Comcast Internet Essentials (бесплатно в течение 60 дней):

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

  • Живут в районе, где доступен Интернет-сервис Comcast. Проверьте свой адрес на сайте Xfinity.
  • Иметь право на участие в программах государственной помощи, таких как Национальная программа школьных обедов, жилищная помощь, Medicaid, SNAP, SSI и другие.
  • Не были подписаны на Comcast Internet в течение последних 90 дней.
  • Нет непогашенной задолженности перед Comcast, возраст которой составляет менее одного года.

Чтобы зарегистрироваться, студенты переходят на сайт Comcast Internet Essentials или звонят по телефону 1-855-8-INTERNET (1-855-846-8376) с 5 утра до 9 вечера.

Примечание: после 60 дней бесплатного Интернета, если вы решите остаться с Comcast Internet Essentials, обычный Интернет будет стоить 9,95 долларов в месяц.

Spectrum Internet Assist (бесплатно в течение 60 дней):

Чтобы пройти квалификацию, студенты должны:

  • Живите по исправному адресу.Проверьте свой адрес, позвонив по телефону 844-488-8395 или посетив веб-сайт Spectrum. (К вашему сведению, похоже, что ни один адрес в почтовых индексах 97477, 97405, 97404 или 97448 не является пригодным для обслуживания, но определенно дважды проверьте себя, живете ли вы в пределах одного из этих почтовых индексов. 97424, похоже, имеет несколько пригодных адресов.)
  • Быть студентом K-12 или колледжем (вы должны устно заявить, что вы студент колледжа).
  • Нет просроченного баланса через Спектрум.Если вы это сделаете, вы должны заплатить свой баланс
  • Не подписывались на интернет-услуги со Spectrum за последние 30 дней.

Для регистрации звоните по телефону 844-488-8395 (время ожидания в настоящее время 30-60 минут). Если вы соответствуете требованиям, Spectrum отправит вам модем и маршрутизатор и предоставит техническую помощь в настройке Интернета.

Примечание: после 60 дней бесплатного интернета, если вы решите остаться со Spectrum, обычный интернет будет стоить 54,99 доллара в месяц.

Линия жизни Комиссии по коммунальным предприятиям штата Орегон (скидка 12,75 долларов в месяц на текущие интернет-услуги)
Для участия в программе студенты должны:
  • Уже иметь доступ в Интернет через участвующую компанию (см. Список в онлайн-заявке)
  • Получать SNAP, дополнительный доход от безопасности (SSI) или Medicaid Отсутствие кого-либо в семье, получающих льготы Oregon Lifeline, включая бесплатное предложение по телефону (вы можете иметь право на бесплатный мобильный телефон, включая неограниченное количество минут и 3G данных в течение ограниченного времени из-за COVID-19 - см. страницу «Поставщики бесплатных услуг» и «Как подать заявку» на веб-сайте Комиссии по коммунальным предприятиям штата Орегон - но вы можете выбрать только бесплатный телефон или со скидкой в ​​Интернет, а не оба сразу).

Чтобы зарегистрироваться, студенты должны заполнить онлайн-заявку.

Операторы мобильной связи:

Четыре основных оператора мобильной связи согласились предоставить дополнительный широкополосный доступ для смартфонов во время пандемии COVID19. См. Объявление FCC, чтобы узнать больше и узнать, какие операторы могут предлагать больше / неограниченное количество данных.

.

Учебное пособие: Создайте детектор полос движения. Детектор дорожек с преобразованием Хафа и… | by Chuan-en Lin 林傳恩

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

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

Содержание:

Подход 1: Преобразование Хафа
Подход 2: Пространственная CNN

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

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

1. Настройка вашей среды

Если у вас еще не установлен OpenCV, откройте Терминал и запустите:

 pip install opencv-python 

Now , клонируйте репозиторий учебников, запустив:

 git clone https://github.com/chuanenlin/lane-detector.git 

Затем откройте Detector.py в текстовом редакторе. Мы будем писать весь код этого раздела в этом файле Python.

2. Обработка видео

Мы будем загружать наш образец видео для обнаружения полосы движения в виде серии непрерывных кадров (изображений) с интервалом в 10 миллисекунд. Мы также можем выйти из программы в любое время, нажав клавишу «q».

3. Применение детектора Canny

Детектор Canny - это многоступенчатый алгоритм, оптимизированный для быстрого обнаружения границ в реальном времени.Основная цель алгоритма - обнаруживать резкие изменения яркости (большие градиенты), такие как переход от белого к черному, и определять их как края с учетом набора пороговых значений. Алгоритм Кэнни состоит из четырех основных этапов:

A. Подавление шума

Как и все алгоритмы обнаружения границ, шум является важной проблемой, которая часто приводит к ложному обнаружению. Гауссов фильтр 5x5 применяется для свертывания (сглаживания) изображения с целью снижения чувствительности детектора к шуму.Для этого используется ядро ​​(в данном случае ядро ​​5x5) нормально распределенных чисел, которое проходит по всему изображению, устанавливая значение каждого пикселя равным средневзвешенному значению соседних пикселей.

Ядро Гаусса 5x5. Звездочка обозначает операцию свертки.

B. Градиент интенсивности

Затем сглаженное изображение применяется с ядром Sobel, Roberts или Prewitt (Sobel используется в OpenCV) вдоль оси x и оси y, чтобы определить, являются ли края горизонтальными, вертикальными, или по диагонали.

Ядро Собеля для вычисления первой производной по горизонтальному и вертикальному направлениям

C. Подавление без максимума

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

Не максимальное подавление в трех точках

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

D. Пороговое значение гистерезиса

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

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

Edge A выше maxVal, поэтому считается фронтом. Ребро B находится между maxVal и minVal, но не связано ни с одним ребром выше maxVal, поэтому отбрасывается. Ребро C находится между maxVal и minVal и связано с ребром A, ребром выше maxVal, поэтому считается ребром.

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

4. Сегментирование области полосы движения

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

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

5. Преобразование Хафа

В декартовой системе координат мы можем представить прямую линию как y = mx + b , построив график y относительно x. Однако мы также можем представить эту линию как одну точку в пространстве Хафа, построив график b против m.Например, линия с уравнением y = 2x + 1 может быть представлена ​​как (2, 1) в пространстве Хафа.

А что, если бы вместо линии нам пришлось построить точку в декартовой системе координат. Есть много возможных линий, которые могут проходить через эту точку, каждая из которых имеет разные значения параметров m и b. Например, точку в (2, 12) можно пройти с помощью y = 2x + 8 , y = 3x + 6 , y = 4x + 4 , y = 5x + 2 , y = 6x и так далее.Эти возможные линии могут быть построены в пространстве Хафа как (2, 8) , (3, 6) , (4, 4) , (5, 2) , (6, 0) . Обратите внимание, что в результате получается линия из m относительно координат b в пространстве Хафа.

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

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

Для простоты объяснения мы использовали декартовы координаты, соответствующие пространству Хафа.Однако у этого подхода есть один математический недостаток: когда линия вертикальна, градиент бесконечен и не может быть представлен в пространстве Хафа. Чтобы решить эту проблему, мы будем использовать полярные координаты. Процесс остается тем же самым, только если не строить m против b в пространстве Хафа, мы будем строить r против θ.

Например, для точек в полярной системе координат с x = 8 и y = 6 , x = 4 и y = 9 , x = 12 и y = 3 , мы можем построить соответствующее пространство Хафа.

Мы видим, что линии в пространстве Хафа пересекаются при θ = 0,925 и r = 9,6 . Поскольку линия в полярной системе координат задается как r = xcosθ + ysinθ , мы можем предположить, что единственная линия, пересекающая все эти точки, определяется как 9,6 = xcos0.925 + ysin0.925 .

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

Мы применяем преобразование Хафа для определения двух прямых линий, которые будут нашими границами левой и правой полосы

6. Визуализация

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

Теперь откройте Терминал и запустите python Detector.py , чтобы проверить свой простой детектор полос! На случай, если вы пропустили какой-либо код, вот полное решение с комментариями:

Этот традиционный ручной метод из Подхода 1, кажется, работает прилично… по крайней мере, для чистых прямых дорог. Однако совершенно очевидно, что этот метод мгновенно сломается на кривых полосах движения или крутых поворотах. Кроме того, мы заметили, что наличие разметки, состоящей из прямых линий на полосах движения, таких как нарисованные стрелки, время от времени может сбивать с толку детектор полос, о чем свидетельствуют глюки в демонстрационном рендере.Одним из способов преодоления этого может быть дальнейшее уточнение треугольной маски до двух отдельных более точных масок. Тем не менее, эти довольно произвольные параметры маски просто не могут адаптироваться к различным меняющимся дорожным условиям. Еще один недостаток состоит в том, что полосы с пунктирной маркировкой или вообще без четкой маркировки также игнорируются детектором полос, поскольку отсутствуют непрерывные прямые линии, удовлетворяющие порогу преобразования Хафа. Наконец, погодные условия и условия освещения, влияющие на видимость линий, также могут быть проблемой.

1. Архитектура

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

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

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

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

Для решения этой проблемы Spatial CNN (SCNN) предлагает архитектуру, которая «обобщает традиционные глубокие послойные свертки на послойные свертки в картах признаков». Что это значит? В традиционной многослойной CNN каждый слой свертки принимает входные данные от своего предыдущего слоя, применяет свертки и нелинейную активацию и отправляет выходные данные на следующий уровень. SCNN делает еще один шаг вперед, рассматривая отдельные строки и столбцы карты признаков как «слои», применяя один и тот же процесс последовательно (где последовательно означает, что срез передает информацию в следующий срез только после того, как он получил информацию от предыдущих срезов), позволяет передавать сообщения о пиксельной информации между нейронами в пределах одного слоя, эффективно увеличивая акцент на пространственной информации.

SCNN является относительно новым, опубликованным только ранее в этом году (2018), но уже превзошел такие, как ReNet (RNN), MRFNet (MRF + CNN), гораздо более глубокие архитектуры ResNet и занял первое место в тесте TuSimple Benchmark Lane Detection Challenge. с точностью 96,53%.

В дополнение к публикации SCNN, авторы также выпустили CULane Dataset, крупномасштабный набор данных с аннотациями полос движения с кубическими шипами. CULane Dataset также содержит множество сложных сценариев, включая окклюзию и различные условия освещения.

2. Модель

Обнаружение полосы движения требует точной пиксельной идентификации и прогнозирования кривых полосы движения. Вместо непосредственного обучения присутствию на полосе движения и последующего выполнения кластеризации авторы SCNN рассматривали синюю, зеленую, красную и желтую маркировку полос как четыре отдельных класса. Модель выводит карты вероятностей (карты вероятности) для каждой кривой, аналогичные задачам семантической сегментации, затем передает карты вероятности через небольшую сеть для прогнозирования конечных кубических шипов.Модель основана на варианте модели DeepLab-LargeFOV.

Для каждой разметки полосы, имеющей значение существования более 0,5, соответствующая карта вероятностей просматривается с интервалом 20 строк для позиции с наибольшим откликом. Чтобы определить, обнаружена ли разметка полосы движения, вычисляется Intersection-over-Union (IoU) между наземной истинностью (правильные метки) и прогнозом, где IoU, превышающие установленный порог, оцениваются как истинно положительные (TP) для расчета точности и отзыв.

3.Тестирование и обучение

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

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

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

.

Ассистент удержания полосы движения с обнаружением полосы движения - MATLAB & Simulink

Этот пример показывает, как моделировать и генерировать код для контроллера автомобильной системы помощи при удержании полосы движения (LKA).

Введение

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

Для правильной работы LKA эго-транспортное средство должно определять границы полосы движения и поворот полосы перед ним. Идеализированные конструкции LKA в основном полагаются на предварительную кривизну, боковое отклонение и относительный угол рыскания между осевой линией полосы движения и эго-транспортным средством.Пример такой системы приведен в книге «Система помощи при удержании полосы движения с использованием модели управления с прогнозированием» (Model Predictive Control Toolbox). При переходе от усовершенствованных систем помощи при вождении (ADAS) к ​​более автономным системам LKA должен быть устойчивым к отсутствующим, неполным или неточным показаниям измерений с реальных детекторов полосы движения.

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

Открытая модель испытательного стенда

Чтобы открыть модель испытательного стенда Simulink, используйте следующую команду.

 open_system ('LKATestBenchExample') 

Модель содержит две основные подсистемы:

  1. Lane Keeping Assist, которая контролирует передний угол поворота транспортного средства

  2. Подсистема транспортного средства и окружающей среды, которая моделирует движение эго-транспортного средства и моделирует окружающую среду

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

 plotLKAInputs (сценарий, driverPath) 

Симуляция помощи отвлеченному водителю

Вы можете изучить поведение алгоритма, включив помощь при удержании полосы движения и установив безопасное поперечное расстояние. В модели Simulink в разделе User Controls переключите переключатель на On и установите Safe Lateral Distance на 1 метр.В качестве альтернативы можно включить ассистент удержания полосы движения и установить безопасное поперечное расстояние.

 set_param ('LKATestBenchExample / Enable', 'Значение', '1') set_param ('LKATestBenchExample / Безопасное боковое смещение', 'Значение', '1') 

Для построения результатов моделирования используйте осциллограф с высоты птичьего полета. The Bird's-Eye Scope - это инструмент визуализации на уровне модели, который можно открыть из панели инструментов Simulink. На вкладке Simulation в разделе Review Results щелкните Bird's-Eye Scope .После открытия осциллографа щелкните Find Signals , чтобы настроить сигналы. Затем запустите моделирование на 15 секунд и исследуйте содержимое прицела с высоты птичьего полета.

 sim ('LKATestBenchExample', 'StopTime', '15')% Имитация 15 секунд 
 ans = Simulink.SimulationOutput: выход из системы: [1x1 Simulink.SimulationData.Dataset] tout: [4685x1 двойной] SimulationMetadata: [1x1 Simulink.SimulationMetadata] Сообщение об ошибке: [0x0 символов] 

Прицел с высоты птичьего полета показывает символическое изображение дороги с точки зрения транспортного средства эго.В этом примере "Bird's-Eye Scope" визуализирует зону покрытия детектора синтетического зрения как затененную область. Дополнительно показаны идеальная разметка полосы движения, а также синтетически обнаруженные левая и правая границы полосы движения (показаны здесь красным).

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

 sim ('LKATestBenchExample')% Симуляция до конца сценария plotLKAResults (сценарий, выход из системы, driverPath) 

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

Чтобы построить график производительности контроллера, используйте следующую команду.

 plotLKAPerformance (выход из системы) 
  • Верхний график показывает боковое отклонение относительно собственного автомобиля. Боковое отклонение с LKA находится в пределах [-0,5,0,5] м.

  • Средний график показывает относительный угол рыскания. Относительный угол рыскания с LKA находится в пределах [-0.15,0.15] рад.

  • Нижний график показывает угол поворота эго-транспортного средства. Угол поворота с LKA находится в пределах [-0,5,0,5] рад.

Чтобы просмотреть состояние контроллера, используйте следующую команду.

  • Верхний график показывает смещение левой и правой полосы движения. Примерно 5,5 с, 19 с, 31 с и 33 с боковое смещение находится в пределах расстояния, установленного ассистентом удержания полосы движения. Когда это происходит, обнаруживается съезд с полосы движения.

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

  • Нижний график показывает угол поворота рулевого колеса от водителя и LKA. Когда разница между углом поворота рулевого колеса от водителя и LKA мала, LKA передает управление водителю (например, от 9 до 17 с).

Имитация следования за полосой

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

 set_param ('LKATestBenchExample / Safe Lateral Offset', 'Value', '2') sim ('LKATestBenchExample')% Моделировать до конца сценария 

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

 plotLKAResults (сценарий, выход из системы) 

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

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

 plotLKAPerformance (выход из системы) 
  • Верхний график показывает боковое отклонение относительно собственного автомобиля. Боковое отклонение с LKA находится в пределах [-0,1,0,1] м.

  • Средний график показывает относительный угол рыскания. Относительный угол рыскания с LKA находится в пределах [-0.02,0.02] рад.

  • Нижний график показывает угол поворота эго-транспортного средства. Угол поворота с LKA находится в пределах [-0.04,0.04] рад.

Чтобы просмотреть состояние контроллера, используйте следующую команду.

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

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

  • Нижний график показывает угол поворота рулевого колеса от водителя и LKA.Угол поворота рулевого колеса из-за движения водителя по извилистой дороге слишком агрессивен. Небольшого угла поворота от LKA в этом примере достаточно для извилистой дороги.

Изучите алгоритм помощи при удержании полосы движения

Модель помощи при удержании полосы движения состоит из четырех основных частей: 1) оценка центра полосы движения 2) контроллер удержания полосы движения 3) обнаружение съезда с полосы движения и 4) применение помощи.

 open_system ('LKATestBenchExample / Система удержания полосы движения') 

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

Подсистема Estimate Lane Center передает данные от датчиков полосы движения на контроллер удержания полосы движения. Детектор в этом примере настроен так, чтобы сообщать о границах левой и правой полосы текущей полосы в текущем поле обзора камеры. Каждая граница моделируется как длина кривой, кривизна которой линейно изменяется с расстоянием (кривая клотоиды).Чтобы передать эти данные в контроллер, сместите обе обнаруженные кривые в сторону центра полосы на ширину автомобиля и небольшой запас (всего 1,8 м). Взвесьте каждую из полученных центрированных кривых по силе обнаружения и передайте усредненный результат контроллеру. Кроме того, подсистема Estimate Lane Center предоставляет конечные значения для входов в подсистему Lane Keeping Controller. Предварительный просмотр кривизны представляет собой осевую линию кривизны полосы движения впереди эго-транспортного средства. В этом примере эго-транспортное средство может смотреть вперед на три секунды, которые являются произведением горизонта прогнозирования и времени выборки.Это время упреждения позволяет контроллеру использовать предварительно полученную информацию для расчета угла поворота рулевого колеса эго-транспортного средства, что улучшает производительность контроллера MPC.

Цель блока Lane Keeping Controller - удерживать транспортное средство на своей полосе движения и следовать по извилистой дороге, контролируя угол поворота переднего колеса. Эта цель достигается за счет уменьшения бокового отклонения и относительного угла рыскания (см. Следующий рисунок).

Контроллер LKA вычисляет угол поворота для эго-транспортного средства на основе следующих входных данных:

  • Предварительно оцененная кривизна (полученная из определения полосы движения)

  • Продольная скорость эго-транспортного средства

  • Боковое отклонение (полученное на основе обнаружения полосы движения)

  • Относительный угол рыскания (полученный из определения полосы движения)

С учетом физических ограничений эго-транспортного средства угол поворота ограничен в пределах [-0.5,0,5] рад. Вы можете изменить горизонт прогнозирования или переместить ползунок Controller Behavior , чтобы настроить производительность контроллера.

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

Изучение транспортного средства и окружающей среды

Подсистема «Транспортное средство и окружающая среда» позволяет моделировать замкнутый контур контроллера ассистента удержания полосы движения.

 open_system ('LKATestBenchExample / Транспортное средство и среда') 

Подсистема динамики автомобиля моделирует динамику автомобиля с помощью блока Vehicle Body 3DOF Single Track из набора Vehicle Dynamics Blockset ™.

Блок Scenario Reader генерирует идеальные границы левой и правой полосы движения на основе положения транспортного средства по отношению к сценарию, считанному из файла сценария LKATestBenchScenario.мат .

Блок Vision Detection Generator берет идеальные границы полосы движения из блока Scenario Reader. Генератор обнаружения моделирует поле зрения монокулярной камеры и определяет угол курса, кривизну, производную кривизны и действительную длину каждой границы дороги с учетом любых других препятствий.

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

Создание кода для алгоритма управления

Модель LKARefMdl сконфигурирована для поддержки генерации кода C с использованием программного обеспечения Embedded Coder.Чтобы проверить, есть ли у вас доступ к Embedded Coder, запустите:

 hasEmbeddedCoderLicense = license ('checkout', 'RTW_Embedded_Coder') 

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

 if hasEmbeddedCoderLicense rtwbuild ('LKARefMdl') конец 

Вы можете убедиться, что скомпилированный код C ведет себя должным образом, с помощью программного моделирования в цикле (SIL). Чтобы смоделировать модель, на которую ссылается LKARefMdl в режиме SIL, используйте:

, если hasEmbeddedCoderLicense set_param ('LKATestBenchExample / Lane Keeping Assist' ,... 'SimulationMode', 'Программное обеспечение в цикле (SIL)') конец 

Когда вы запускаете модель LKATestBenchExample , код генерируется, компилируется и выполняется для модели LKARefMdl . Это позволяет вам проверить поведение скомпилированного кода посредством моделирования.

Выводы

В этом примере показано, как реализовать интегрированный контроллер помощи при удержании полосы движения (LKA) на извилистой дороге с обнаружением полосы движения. Он также показывает, как протестировать контроллер в Simulink с использованием синтетических данных, сгенерированных Automated Driving Toolbox, разбить их на компоненты и автоматически сгенерировать для них код.

.

paulyehtw / Lane-Keeping-Assist-on-CARLA: Внедрение Lane-Keeping Assist (LKA) на симуляторе CARLA

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • Команда
  • Предприятие
  • Проводить исследования
    • Изучить GitHub →
    Учитесь и вносите свой вклад
    • Темы
.

Смотрите также