Изменения

Перейти к: навигация, поиск

Задача планирования движения

441 байт убрано, 19:53, 21 января 2021
Решение проблемы для беспилотных автомобилей (self-driving cars)
== Решение проблемы для беспилотных автомобилей (self-driving cars) ==
Для организации управления беспилотным автомобилем можно воспользоваться классическим подходом из робототехники. Разобьем задачу Задача самостоятельного передвижения разбивается на четыре модуля. *Модуль локализации отвечает за то, чтобы машина понимала, где она находитсяопределение положения автомобиля в пространстве. *Модуль распознавания — за то, что находится вокруг машиныанализ окружающей обстановки. *Модуль планирования обладает информацией о том, что находится вокруг, — за планирование маршрута исходя из обстановки и зная, куда хочется приехать, строит маршрутцели. *Модуль управления говорит, как же ехать по маршруту, чтобы приехать, выполнить эту траекторию. Но все же случай беспилотных автомобилей не так прост, как это может показаться — за определение траектории движения в первом приближениивыбранном направлении.
Тем не менее такая модель все еще имеет множество проблем, которые необходимо решить. Автомобиль обладает рядом довольно существенных ограничений. Это не шар в пространстве, который может катиться в любую сторону и условно мгновенно останавливаться и замедляться. У автомобиля есть текущее направление, угол поворота колес, и он не может просто оказаться на два метра левее от текущего местоположения, это очень сложно. Он может ехать примерно вперед, поворачивая на какой-то угол, но тем не менее, перемещение очень сильно ограничено. И на траекторию движения влияют ограничениям, которые следуют из кинематики. Например, невозможно мгновенно разогнаться и мгновенно увеличить свое ускорение.
Для планирования дальнейшего движения автомобиля можно использовать нейросети, передавая информацию со всех датчиков и камер в нейросеть, предварительно ее обучив на каких-нибудь человеческих перемещениях. Обучить, в каких ситуациях куда нужно крутить руль, увеличивать или снижать скорость и т.д. В теории такой подход представляется хорошим решением проблемы, но на практике выяснилось, что нужно все-таки слишком много данных, нужна слишком большая нейросеть, чтобы за человеком все успешно повторять в различных ситуациях. В этом направлении ведется активная работа, и пока большинство успешных решений проблемы опирается на нейросети лишь частично, доверяя бо́льшую часть работы проверенным алгоритмам.
=== Алгоритмы на графах ===
=== Оптимизационные алгоритмы ===
Постановка задачи может быть такойИдея этого вида алгоритмов заключается в следующем: рассмотрим траекторию нашего положения во времени, <tex>x</tex> и <tex>y</tex>, зависящие от времени <tex>t</tex>, то есть поймем, в какой точке мы хотим оказаться в момент времени <tex>t</tex>. Мы можем Не составит труда определить угол касательной через арктангенс от производных, можем можно сказать, что оптимальной в этом случае будет траектория, которая минимизирует функционал, являющийся интегралом по времени вперед от какой-то функции от траектории. Функция от траектории здесь каким-либо образом нас штрафует за резкие повороты, резкие разгоны, нахождение близко к препятствиям и т. д. Тогда, если мы просуммируем просуммировать вдоль нашей траектории все необходимые штрафы и попытаемся попытаться это минимизировать стандартным математическим аппаратом, никак не связанным с автомобилями в целом и беспилотными автомобилями в частности, то мы решим это решит задачу в каком-то общем виде.
Что лучше рассмотреть в качестве штрафов? Например, можно сказать, что мы не хотим нужно подъезжать близко к препятствиям, учитывать это с каким-то весом, или что скорость не хотим, чтобы наша скорость была должна быть гораздо выше или ниже желаемой заранее определенной скорости, которую мы для себя определили. Мы можем Можно штрафовать себя за вторую производную, которая является ускорением, потому что мы машина не хотим, чтобы машина должна резко ускорялась ускоряться или замедляласьзамедляться.
Можем Можно рассмотреть третью производную, которая является рывком, то есть мы не хотимнужно, чтобы ускорение тоже менялось достаточно резко, поскольку это может сказаться на состоянии пассажиров. Если ускорение фиксированное и машина просто все время разгоняется, то, как показывают исследования, людей не укачивает. Также мы можем не хотеть делать крутые поворотыможно избегать крутых поворотов, ограничиваем наш ограничивая угол. И есть Есть дополнительные ограничения, которые говорят, что машина физически не может разгоняться быстрее какого-то ускорения. Если все мы это учтем каким-то образомучтется, то сможем можно решить задачу с помощью абстрактного алгоритма минимизации функции и получим получить некий результат.
Отдельно хочется поговорить про вычисления расстояний, потому что в большинстве Большинство методов оптимизации очень любят предпочитают работать с плавными хорошо дифференцируемыми функциями, которые хорошо дифференцируемые, гладкие. Тогда там все работает хорошо. А наша машина в то время как автомобиль {{---}} объект довольно сложной формы, и препятствия, которые мы объезжаемон объезжает, это тоже объекты хитрых непростых форм. Поэтому тут нужно производить какоекакие-то упрощениеупрощения. Например, мы можем можно сказать, что машина {{---}} не что-то сложное, а просто пять окружностей.
{|align="center" cellpadding="0" cellspacing="0" style="margin: 0 auto;"
[[Файл:LaneChangePaths.png|center|thumb|400px|''Рис. 6.'' Построение и выбор плавной траектории смещения<ref name="yandex-lecture"/>]]
Не всегда нужны эти хитрые деревья, чтобы парковаться или делать сложные маневры. Когда автомобиль едет на полосе, ему достаточно построить более-менее плавную траекторию, следующую к центру этой полосы или с каким-то смещением влево-вправо. Это сделать гораздо проще, чем искать абстрактный путь в графе. Поэтому простым решением будет взять текущее положение машины, посмотреть на путь, по которому мы хотели бы ехать, и плавно свернуть на этот путь.
== Области применения решений проблемы планирования движения ==
72
правки

Навигация