Маркеры визуальной системы автоматической посадки БЛА

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

Visual Based Automatic Landing System, VBLS, Marker, Marker, UAV, Drone, Автоматическая посадка БПЛА, runway, DinaPrim 2700

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

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

Регулярные маркеры

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

Visual Based Automatic Landing System, VBLS, Marker, Chessboard, UAV, Drone, Автоматическая посадка БПЛА, DinaPrim 2700

Регулярный маркер: шахматная доска

Visual Based Automatic Landing System, VBLS, Marker, Pseudorandom Marker, UAV, Drone, Автоматическая посадка БПЛА, Маркер

Псевдошумовой маркер

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

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

Visual Based Automatic Landing System, VBLS, Marker, Maximum length sequence, M-sequence, UAV, Drone, Автоматическая посадка БПЛА, DinaPrim 2700

Псевдошумовой маркер: М-последовательность

Регулярная структура этих маркеров имеет один недостаток: при крене БЛА корреляционные характеристики существенно ухудшаются. Этот минус компенсируется размещением камеры на стабилизированном подвесе. Более существенный недостаток — изменение размера изображения в зависимости от дальности.

Фрактальные маркеры

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

Visual Based Automatic Landing System, VBLS, Marker, Pythagoras tree, UAV, Drone, Автоматическая посадка БПЛА, DinaPrim 2700

Фрактальный маркер: дерево Пифагора

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

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

Visual Based Automatic Landing System, VBLS, Marker, Pythagoras tree, UAV, Drone, Автоматическая посадка БПЛА, DinaPrim 2700

Фрактальный маркер: обдуваемое дерево Пифагора

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

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

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

Кольцевой маркер

Visual Based Automatic Landing System, VBLS, Marker, Marker, UAV, Drone, Автоматическая посадка БПЛА, DinaPrim 2700

Маркер: концентрические окружности

Поскольку объем ограничен, я не стал приводить данные по моделированию для всех описанных маркеров. Мне по ряду причин нравится кольцевой маркер, состоящий из концентрических окружностей. Его полезные свойства – инвариантность к крену и частичная инвариантность к изменению дальности. Частичная – потому что переход окружности одного радиуса в другую окружность будет происходить только в определенном, периодическом диапазоне дальностей.

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

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

Для кольцевого маркера моделирование выполнялось в реальном времени: это как раз тот случай, когда я изменил Питону и написал приложения на C++. Кстати, раз мы коснулись быстродействия, следует отметить один существенный момент: каким бы хорошим не был алгоритм распознавания изображений, он ничего не стоит если он не будет работать на реальном железе в реальном масштабе времени. Еще один аспект, связанный с аппаратной платформой которая будет использоваться: скорее всего, без аппаратного препроцессора на ПЛИС вам не обойтись. А это значит, что алгоритм распознавания должен хорошо распараллеливаться.

Моделирование VBLS для кольцевого маркера

Как работает система. Маркер напечатан на обычном листе формата А4. Разрешение камеры всего 640х480, что даже лучше, поскольку с HD алгоритм будет работать гораздо эффективнее. Вывод приложения идет в три окна.

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

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

Клип демонстрирует, что центр маркера определяется с достаточно большой погрешностью. Но от этой части алгоритма высокая точность не требуется – требуется быстродействие. Зная небольшой фрагмент, в котором находится центр маркера – ROI, Region of Interest, будет работать точный алгоритм, основанный на анализе точек окружности. Поскольку размер поля изображения существенно снижается, производительность такой обработки не будет ухудшена.

Соображения производительности были на первом месте, по этому был сделан выбор в пользу C++. Кроме этого, в критичных местах я не использовал библиотеки OpenCV, поскольку опять таки следующий этап – параллелить операции и переносить их на FPGA. Вместо стандартных библиотек писал свои, в частности процедуру FHT, Fast Hough Transform, результат работы которой видно на аккумуляторе.

6 comments to Маркеры визуальной системы автоматической посадки БЛА

  • Евгений

    Хм, у самого была задача пробовать постоянно контролировать разные звуковые каналы по их шуму (т.е. ЦАП/АЦП у всех разные, их число тоже, аналоговых кабелей/соединений тоже, т.е. если какой-то участок отвалился, то и “шуметь” будет по другому). Но как-то не “асилил” сей матан – только если визуально спектры смотреть, может как-то попробовать оценить сходство. У меня даже критерий Пирсона на разных участках звуковой записи одного и того же канала давал сильно большой разброс значений.

    • Lao

      Идея интересная, как то заприметил что при отключенной и подключенной антенной системе радиоприемный тракт шумит по разному.

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

  • Евгений

    Вот же ведь, в институте не рассказывали про обнаружение сигнала ниже уровня шумов, но были разные КПК, где про это рассказывали, ну в массе книг встречал про это. Не догадался. Сейчас в ГА в оборудовании используют сигнал проверки линии (нечто частотно-модулированное, местный терминал “крякает” запросом, удаленный терминал “крякает” в ответ). Через “крякание” идет и запуск передатчика. Если пропадает сигнал отключения передатчика – то на минуту можно заблокировать эфир(терминал снимет “землю” по таймеру, есть проблема по работе через разные сжатые ТЧ-каналы). Вроде да, постоянный контроль линии, но если используются другие методы сигнализации, то канал уже и не проверить без подачи генератора (т.е. надо забирать канал полностью). Подача генератора(точнее, чего-то большого по уровню) вообще несколько опасна, то включишь случайно(просто не туда, пока по кроссу ползаешь), или вдаришь диспетчеру по ушам(или всему залу, причем как местному, так и удаленному). Или забудешь выключить потом. Проблемно согласовывать с диспетчером. Вроде плохо, но терпимо – “Только не в мою смену отключения всякие! Знаю я вас!”. Ну и методики как таковой нет общей по замерам, кто-то померит параллельно, кто-то в разрыв. Прибалты в конце 90-х вообще взяли моду говорить “А у меня все в цифре! Идите лесом со своими генераторами!”
    Очень интересная идея работать ниже уровня шумов – прям очень неплохой дипломный проект для студентов, просто для изучения матчасти и статистики.

    P.S. У Танненбаума была идея, как “крот” в спецслужбе может передавать данные через “сфероконно-идеальный” сетевой экран, с внешней стороны долбят компьютер пингами, “крот” загружает комп по производительности, больше загрузка, пинги подвисают – это “0”, пинги идут, это “1”. Ну и всякие избыточности по коду и т.д. На практике такого нет, но идея то красивая. Один раз использовал для определения, что удаленный комп зависает – косяк ПО.(хотя было и подозрение и сетевые дела, но по приезду была и задача посмотреть уровень загрузки)

    • Lao

      На самом деле, пусть даже сигнал выглядит слабее шума, если их спектральные характеристики различаются то сигнал можно обнаружить. Например, пассивный радар: сигнал слабее помехи на 80 – 100 дБ, но поддается обнаружению.

      Сделать такую систему контроля будет не так сложно. Замодулировать слабый передатчик тоном или еще лучше – известной псевдослучайной последовательностью. Пусть интервал обнаружения будет достаточно большим – например, 30 секунд. Достаточно высока вероятность того, что такие интервалы будут в перерыве между сеансами радиосвязи. На выходе приемника (выход с отключенным ШП конечно) поставить простейшую плату, контроллер типа Ардуино или STM32F103 со встроенным АЦП подойдут. С этой же платы сделать управление модулятором передатчика. Во время включения последнего в течение 30 секунд накапливать значение корреляционной функции.

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

      • Евгений

        Тут если брать какой-то HackRF, где можно попробовать выставить мощность на передачу и перебирать весь диапазон частот. Можно запускать передачу тестового сигнала через HackRF только в тот момент, когда нет управления передатчиком, хоть со стороны диспетчера, хоть по отсутствию пеленга на данной частоте. Ну и проблемно взять выход сигнала без ПШ – это да. Хотя такая проверка приемника лучше, чем через стандартную методику по генератору, тут прям вместе с АФУ проверяем. Хотя бы просто проверить одноразово, по наличию жалобы со стороны диспетчеров(обычно смотришь на магнитофоне работу пилотов). Если подключиться минуя ПШ не удастся, то только как-то смотреть по общему уровню приема, как-то выставить пороги уровня сигнала, но здесь может упереться в зависимость от оборудования на ВС(хоть и давно дело было, но голос пилота на Air Force #1(Обаму вез) – слышали хоть и отчетливо и разборчиво, но с каким-то “тёплым, ламповым” треском.)

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

      • Lao

        Точно, для дипломного проекта было бы самое оно. Причем это будет реальный проект. Одно время в подобные многоканальные изделия (АППЦ, пеленгатор) закладывали концепцию скользящего резерва, когда РПУ рабочего канала подменяли резервным РПУ, а сам рабочий канал проверяли на фиксированных частотах после перестройки. Но видать экономия сделала свое дело

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">