Интересно Как программируют беспилотники

Takeshi

Перо Дьявола
Команда форума
PR-group
CPA & Трафик
Регистрация
23 Янв 2019
Сообщения
1,351
Баллы
0
Общие продажи
0$
Общие покупки
0$
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нашими основными инструментами будут среда разработки приложений для робототехники

Please Login or Register to view hidden text.

и программный симулятор

Please Login or Register to view hidden text.

. Их используют, чтобы тестировать алгоритмы в симуляционной среде и разбивать при этом как можно меньше техники. И ROS, и Gazebo работают в Linux — мы будем работать в Ubuntu 16.04.

Дроны бывают разные. По конструкции различают несколько типов дронов:

  • мультироторный — коптеры;
  • самолетный — fixed wing;
  • гибридный — он взлетает вертикально, потом использует крылья.
Также дроны делятся на потребительские (consumer) и коммерческие (commercial).

Потребительские, как ты понимаешь, — это те, которые можно купить в магазине и использовать как летающую камеру. DJI Phantom и Mavic — хорошие модели. Есть и менее дорогие, но они определенно уступают по качеству. Такие квадрокоптеры используют для съемки разных мероприятий, зданий, исторических объектов. Например, с беспилотника можно сделать серию фотографий здания или памятника, а затем создать из них 3D-модель объекта методом фотограмметрии.

Как правило, такие дроны летают на ручном управлении, реже по миссии в автономном режиме по GPS-координатам. Рынок потребительских квадрокоптеров больше чем наполовину принадлежит одной компании —

Please Login or Register to view hidden text.

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

Please Login or Register to view hidden text.

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

Коммерческие дроны используются в компаниях для решения определенной задачи. Дроны следят за состоянием сельхозполей, летая над ними регулярно и делая фотографии, другие дроны умеют распылять удобрения точечно. Их используют на стройках, в карьерах. Каждый день они облетают строительный объект, делают фотографии, по которым создается 3D-модель в облаке, и уже она помогает отслеживать ежедневные изменения.

Пример российской компании, которая активно работает с этой технологией на рынке США, —

Please Login or Register to view hidden text.

.

Другой способ применения — осмотр трубопроводов дронами. Это особенно актуально для России: у нас газовые трубопроводы тянутся на тысячи километров, и надо контролировать утечки и врезки.

Ну и конечно, у всех на слуху доставка товаров дронами. Не знаю, заработает ли когда-нибудь сервис

Please Login or Register to view hidden text.

, но уже сейчас компания

Please Login or Register to view hidden text.

доставляет товары в Цюрихе и некоторых городах США, а компания

Please Login or Register to view hidden text.

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

Please Login or Register to view hidden text.

, а Сбербанк тестирует

Please Login or Register to view hidden text.

.

Компании

Please Login or Register to view hidden text.

и

Please Login or Register to view hidden text.

уже имеют летающие прототипы такси, а компания с российскими корнями

Please Login or Register to view hidden text.

разрабатывает летающий байк.

В помещениях тоже есть задачи для коммерческих дронов, но пока они не сильно распространены, в этой области идут интенсивные R&D-исследования. Возможные применения для такого вида дронов:

Поживем — увидим, какие проекты будут реализованы и задисраптят нашу жизнь. Глобальная цель — сделать систему управления дроном, которой герой фильма «Бегущий по лезвию 2049» мог бы сказать: «Сфотографируй тут все!»


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

Для автономного управления дрону надо как минимум знать с высокой точностью свои координаты в пространстве. На открытом пространстве можно использовать GPS — точность достигается в несколько метров. Дополнительная наземная станция и технология

Please Login or Register to view hidden text.

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

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

Есть еще одна важная проблема: если мы летаем в замкнутом пространстве или между высокими зданиями, то сигнал GPS будет недоступен и необходимо иметь другой источник координат дрона в пространстве. Можно определять свои координаты на борту, обрабатывая видеопоток с бортовых камер — лучше использовать стереокамеры или камеры глубины. Такой алгоритм называется SLAM (Simultaneous Localization and Mapping).

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

Алгоритм не знает 3D-координаты особых точек и координаты камеры в моменты съемок кадров — эти параметры ему как раз и надо вычислить. Он отслеживает изменения пиксельных координат особых точек между кадрами и пытается подобрать такие параметры, чтобы, если спроецировать особые точки в плоскость кадра, получались наблюдаемые или измеренные пиксельные координаты.

В итоге получается оценка перемещения камеры в пространстве. Обычно алгоритм SLAM очень требователен к вычислительным ресурсам, но есть камера Intel RealSense T265 с микросхемой, реализующей вычисления SLAM на аппаратном уровне.

Для организации автономного управления дроном необходимо решить три задачи.

  1. Определить координаты дрона в пространстве. Использовать для этого GPS-приемник или вычислять на борту координаты, обрабатывая видеопоток алгоритмом SLAM. А лучше использовать оба подхода, чтобы знать как глобальные, так и локальные координаты дрона
  2. Построить 3D-карту окружения дрона с помощью сенсоров типа стереокамер, камер глубины, лидаров.
  3. Добавить софт для планирования маршрута с учетом цели полета, текущих координат и карты окружения.




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





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

Please Login or Register to view hidden text.

с процессором ARM на борту и прошивкой под названием

Please Login or Register to view hidden text.

. Сам программный код PX4 можно скомпилировать в режиме software in the loop как раз для тестирования на персональном компьютере на Intel x84 CPU. Софт PX4 в этом режиме думает, что он работает на реальном железе полетного контроллера, хотя на самом деле он выполняется в симуляционной среде на ПК и получает подменные данные с сенсоров.



Robot Operating System
Нам потребуется много разных программных модулей. Одни будут работать с сенсорами, другие будут реализовывать SLAM, третьи — строить 3D-карту, четвертые — планировать в ней безопасный маршрут. Для создания этих модулей мы используем Robot Operating System (ROS) — распространенный фреймворк для разработки приложений робототехники. Приложение для ROS представляет собой набор взаимодействующих пакетов, каждый экземпляр которых называется узел, или node.

Один из узлов называется мастер (master node) и отвечает за регистрацию остальных узлов приложения. Каждый узел представляет собой отдельный процесс Linux. ROS предоставляет механизм передачи и синхронизации сообщений между узлами. Существуют как стандартные сообщения, так и определенные программистом. В качестве сообщений выступают данные с сенсоров, видеокадры, облака точек, команды управления и передачи параметров.

Узлы ROS могут быть запущены на разных машинах — в этом случае взаимодействуют они через сетевой интерфейс. В составе ROS есть специальный узел rviz, он служит для графической визуализации передаваемых в ROS сообщений. Например, можно посмотреть, как БПЛА видит мир вокруг себя, отобразить траекторию его движения и видеопоток с камеры.

Для создания пакетов ROS предоставляет возможность использовать языки C++ и Python.

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

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

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



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

Найти контейнер можно

Please Login or Register to view hidden text.

— заходи и скачивай.



Как работает софт управления
В нашем простейшем примере дрон будет летать очень примитивно.

  1. Источник координат дрона — не SLAM, а симулированный сигнал GPS.
  2. Дрон в симуляторе не строит карту окружающего пространства.
  3. Дрон летает по заранее заданной траектории.
Для первого теста вполне неплохо.



Запуск софта

Собираем образ.






Посмотрим на код

Мой репозиторий Fast Sense основан на материалах команды, которая разработала PX4 — самый популярный опенсорсный полетный контроллер в мире.

У этих ребят есть своя

Please Login or Register to view hidden text.

, а на их гитхабе ты найдешь

Please Login or Register to view hidden text.

, который я перенес в

Please Login or Register to view hidden text.

, чтобы все находилось в одном месте.

Код управления на Python совсем небольшой, я уверен, ты сможешь в нем разобраться самостоятельно. Я лишь скажу, что начинать надо с чтения функции test_posctl(self). В ней описана логика полета:

дрон переводится в режим OFFBOARD, затем армится, взлетает и начинает полет по точкам (0, 0, 0), (5, 5, 2), (5, -5, 2), (-5, -5, 2), (0, 0, 2)).

После чего садится и дисармится.
 

KOTAH

Новый пользователь
Друзья проекта
Пользователь
Регистрация
27 Дек 2019
Сообщения
9
Баллы
0
Общие продажи
0$
Общие покупки
0$

Самаэль

Новый пользователь
Пользователь
Регистрация
15 Дек 2019
Сообщения
7
Баллы
0
Общие продажи
0$
Общие покупки
0$
Это действительно интересно