Инженеры из Швейцарии разработали автопилот для дронов, который способен управлять ими на высокой скорости при полетах в незнакомом окружении, выбирая безопасный маршрут для маневрирования между множеством препятствий. Для этого они использовали методы машинного обучения, натренировав нейросетевой агент находить оптимальные траектории для движения, используя только информацию о скорости, положении в пространстве и изображения от бортовых 3D-камер дрона. Для демонстрации возможностей алгоритма в реальных условиях, дрон испытали в различных окружениях. Например, автопилот продемонстрировал способность управлять квадрокоптером со скоростью от 3 до 7 метров в секунду в лесу, избегая столкновений с деревьями и их ветвями, а также пролетать через узкие проемы на высокой скорости. При этом алгоритм не требует больших вычислительных ресурсов и ему достаточно возможностей бортового компьютера дрона. Статья опубликована в журнале Science Robotics.
Современные квадрокоптеры обладают чрезвычайно высокой маневренностью и подвижностью. Они способны быстро менять направление движения, резко ускоряться и замедляться, совершать перевороты в воздухе и двигаться на высокой скорости. Это делает их пилотирование, особенно в окружении большого числа препятствий, непростой задачей и требует длительной подготовки пилотов.
Инженеры давно работают над созданием автопилота, способного управлять мультикоптерами на уровне профессиональных пилотов в условиях неизвестного окружения с большим числом препятствий. Это позволило бы снизить степень человеческого участия в управлении дронами и расширить спектр задач, выполняемых ими в полностью автономном режиме.
Основными сдерживающими факторами при создании автопилота для управления дроном на высоких скоростях выступают неполнота знаний об окружении, которая следует из несовершенства сенсоров, и ограниченные вычислительные способности бортового оборудования. Алгоритм должен уметь с минимально возможной задержкой планировать траекторию, полет по которой возможен физически для дрона и которая свободна от препятствий, опираясь при этом только на быстро меняющиеся данные бортовых сенсоров, которые содержат шумы и искажения, вызванные быстрым движением и постоянно изменяющимся уровнем освещения.
Инженеры из Цюрихского университета под руководством Давиде Скарамузза (Davide Scaramuzza) разработали алгоритм автопилота, который соответствует перечисленным требованиям и способен управлять дроном на высокой скорости в незнакомом окружении, содержащем большое количество препятствий сложной формы.
Для экспериментов инженеры построили квадрокоптер весом 890 граммов с коэффициентом тяговооруженности 4,4. По характеристикам получившаяся платформа сопоставима с гоночными дронами, которые используются профессиональными пилотами в соревнованиях. В качестве главного бортового компьютера используется NVIDIA Jetson TX2, графический модуль которого используется для нейросетевых расчетов, а центральный процессор осуществляет управление дроном, посылая команды на полетный контроллер. Для получения информации об окружающем мире используются две камеры глубины Intel RealSense, которые позволяют получать информацию о глубине изображения, а следовательно оценивать расстояния до объектов в поле зрения.
Вместо того чтобы разделять задачу поиска оптимальной траектории полета на отдельные подзадачи распознавания и планирования маршрута, разработчики применили сквозной подход. Нейросетевой сенсомоторный агент напрямую переводит изображения со стереокамер размерностью 640 на 480 точек, а также информацию о скорости и положении дрона в пространстве в оптимальные траектории движения в выбранном направлении, которые затем преобразуются в команды для полетного компьютера и сигналы для роторов дрона. Такой подход позволяет значительно снизить временные задержки при вычислении маршрута.
Для обучения сенсомоторного агента разработчики применили имитационное обучение, которое осуществляется с помощью эксперта — алгоритма, обладающего полной информацией об окружении и состоянии дрона и генерирующего наборы оптимальных траекторий, огибающих препятствия на выбранном направлении движения с помощью алгоритма семплирования Метрополиса-Гастингса. Так как в реальном мире невозможно получить весь объем информации о состоянии окружения, тренировки и последующее тестирование производилось в симуляторе для квадрокоптеров Flightmare, а модели окружения создавались из ассетов игрового движка Unity.
Сцены для тренировок состояли из случайно расставленных на пути модели дрона препятствий в виде деревьев и геометрических тел разной формы и размеров. Сцены для тестирования возможностей алгоритма имитировали лес с плотной случайной расстановкой деревьев, а также городскую среду с домами, дорожными знаками, автомобилями и столбами, а также индустриальные пейзажи с множеством препятствий разной формы и размеров.
В дальнейшем, обученный алгоритм перенесли без каких-либо изменений и испытали на настоящем дроне в условиях реального леса и индустриальных пейзажей. Дрон с новым автопилотом подтвердил возможность перемещаться на высокой скорости от 3 до 10 метров в секунду через пространство с множеством внезапно возникающих препятствий. Так, например, дрон под управлением автопилота продемонстрировал способность уворачиваться в полете от внезапно появляющихся на его пути ветвей деревьев. На скоростях до 5 метров в секунду дрон прошел все испытания без единого столкновения, а с увеличением скорости до 10 метров в секунду возрастало число ошибок, но количество успешных испытаний, когда дрон без столкновений достигал заданной точки, превосходило случаи, в которых происходили столкновения.
В одном из экспериментов тестовый дрон должен был вылететь из ангара на максимальной скорости через узкую щель в дверях. Коммерческий квадрокоптер, перемещающийся с максимальной скоростью 2,7 метров в секунду в двух испытаниях останавливался перед дверьми, считая, что окно выхода слишком мало, а в третьем испытании столкнулся со стеной, тогда как дрон с тестируемым автопилотом успешно пролетел через узкий выход во всех шести испытаниях со скоростью от 3 до 5 метров в секунду.
В будущем разработчики планируют продолжить работу над улучшением алгоритма автопилота для управления полетом на скоростях свыше 10 метров в секунду.
Стереоизображения для автономного распознавания препятствий на пути беспилотника в полете ранее также использовали американские инженеры из Массачусетского технологического института. Они разработали алгоритм, который по изображению с двух камер, установленных на крыльях дрона, позволяет вовремя распознавать опасность столкновения с препятствием и уходить от него на скорости до 50 километров в час.
Для того чтобы дроны могли действовать в группах важно, чтобы они не только умели эффективно маневрировать между препятствиями, которые они встречают на пути, но и не допускать столкновений с другими дронами. Американские инженеры использовали методы глубокого обучения для того, чтобы научить дронов прокладывать путь через пространство с препятствиями, при этом избегая столкновений между собой. Разработанный ими алгоритм также учитывает аэродинамические возмущения, создаваемые винтами дронов во время полета, позволяя уменьшить влияние воздушных потоков на траекторию движения дронов в рое при близких пролетах.
Андрей Фокин