Алгоритм управления полетом БПЛА вдоль железной дороги с помощью технического зрения

Автор: Лебедев А.О., Васильев В.В., Паулиш А.Г.

Журнал: Компьютерная оптика @computer-optics

Рубрика: Численные методы и анализ данных

Статья в выпуске: 2 т.49, 2025 года.

Бесплатный доступ

В работе предложен алгоритм управления автономным полётом беспилотного летательного аппарата (БПЛА) вдоль железной дороги без участия оператора и без использования спутниковых навигационных систем, таких как GPS и ГЛОНАСС. Алгоритм создавался с целью дистанционной инспекции технического состояния железнодорожного полотна без вмешательства в движение поездов. Отсутствие оператора и спутниковых навигационных систем позволяет проводить инспекцию путей на больших расстояниях, не ограниченных дальностью действия связи с БПЛА, и в условиях внешних электромагнитных помех. Алгоритм основывается на использовании компьютерного зрения: определении местоположения рельсов на видеоизображении и выработке управляющих сигналов для управления тангажём, рысканием и креном БПЛА таким образом, чтобы удерживать изображение рельсов в середине видеокадра. Экспериментальные полёты БПЛА показали, что алгоритм надёжно определяет положение рельсов и удерживает полёт БПЛА вдоль железной дороги.

Еще

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

Короткий адрес: https://sciup.org/140310472

IDR: 140310472   |   DOI: 10.18287/2412-6179-CO-1532

Текст научной статьи Алгоритм управления полетом БПЛА вдоль железной дороги с помощью технического зрения

Область применения и объём использования беспилотных летательных аппаратов (БПЛА) стремительно растёт в последнее время. Согласно отчету [1, 2] БПЛА используются более чем в 70 областях жизнедеятельности человека. БПЛА используются для ускоренной доставки посылок [3], в археологии, в архитектуре и градостроительстве, геодезии, аэрофотосъёмке и во многих других областях, где нужна быстрая и недорогая дистанционная инспекция объектов [3–21], особенно в труднодоступных местах, например, газопроводов и линий электропередач [6]. К одному из важнейших объектов инспекции относятся железные дороги [4, 5, 8, 10– 18, 25–26]. На первом месте в мире по общей протяжённости железных дорог находятся США – более 293 тысячи километров, на втором месте Китай – 124 тысячи километров, на третьем месте Россия – 85,5 тысяч километров. При этом в России, благодаря её размерам, самые длинные отдельные дороги. Для контроля технического состояния железнодорожных путей до сих пор в основном используются специальные вагоны или те- лежки, на которых размещено специальное оборудование. Данный способ при таких больших протяженностях железных дорог весьма дорог и связан с вмешательством в движение поездов. Использование обычного БПЛА для дистанционного контроля протяжённых объектов контроля затруднено тем, что дальность полёта БПЛА ограничена дальностью действия связи оператор – БПЛА, увеличение дальности связи приводит к увеличению массогабаритных параметров БПЛА и его стоимости. Кроме того, вблизи электрифицированных железных дорог присутствуют сильные электромагнитные помехи, затрудняющие полёт в обычных условиях, то есть с помощью пульта дистанционного управления и использования спутниковых навигационных систем, таких как GPS и ГЛОНАСС. Альтернативным путём управления БПЛА является использование компьютерного зрения, при котором управляющие сигналы вырабатываются внутри БПЛА без участия оператора и спутниковых навигационных систем. Это позволяет существенно увеличить дальность полёта БПЛА, так как нет ограничений по дальности действия радиосвязи с оператором. Данный метод устойчив к воздействию средств радиоэлектронной борьбы, т. е. является помехозащищённым, что важно, так как железные дороги являются стратегически важными объектами.

В работе [4] нами был предложен алгоритм управления БПЛА с помощью видеокамеры и микрокомпьютера, установленных на борту БПЛА. Суть алгоритма заключается в распознавании рельсов на изображении с видеокамеры и выработке управляющих сигналов, подаваемых на винтомоторные группы для обеспечения устойчивого полёта над железной дорогой без участия оператора и использования спутниковых навигационных систем типа GPS и ГЛОНАСС. Для выделения рельсов на изображении проводилась конверсия цветового формата из RGB в HVS. При данном формате железная дорога при любом освещении имеет розовопурпурный оттенок, который, как правило, не содержится в объектах, не связанных с железной дорогой. Однако предложенный в [4] алгоритм имеет ряд недостатков. Во-первых, при определении рельсов с помощью нахождения линий Хафа давало довольно много линий, что затрудняло определение линии, связанной с рельсами. Во-вторых, алгоритм перескакивал с одного рельса на другой и вел себя непредсказуемо, когда несколько железнодорожных путей попадали в один кадр, например, на станциях. В-третьих, необходимо было достигнуть плавного управления БПЛА и увеличения скорости его полета.

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

1.    Беспилотный летательный аппарат

Для проведения данной работы был разработан и собран квадрокоптер, который удовлетворяет поставленным задачам. При его компоновке не использовались модули GPS / ГЛОНАСС, чтобы снизить массу, габариты, энергопотребление и стоимость устройства. Для создания квадрокоптера были использованы: рама 450 frame for RC MK MWC 4; контроллер полета Deluxe Version SP Pro Racing F3 Flight Controller; винтомоторные группы (ВМГ) Readytosky 2212 920KV brushless motor 30A Simonk; и другие элементы, необходимые для полёта. В качестве микрокомпьютера использовалась плата Raspberry Pi 4 с 4-ядерным процессором Cortex-A72 (ARM v8) 64-bit SoC/ 1.5 GHz/ RAM 4 GB. Данный процессор обладал достаточной производительностью, но при этом малым энергопотреблением. Видеокамера фирмы Basler позволяла получить большую скорость кадров в секунду по сравнению с камерой, использованной в [4]. Схема управления квадрокоптером показана на рис. 1. В автономном режиме полёта микрокомпьютер обрабатывает сигналы с видеокамеры и выдаёт сигналы на полётный контроллер. Сигналы от пульта дистанционного управления игнорируются.

Рис. 1. Схема квадрокоптера в автономном режиме полёта

2.    Алгоритм

В ручном режиме полёта команды с контроллера полёта передаются на винтомоторные группы через микрокомпьютер без изменения, как и в [4]. Пилот вначале поднимает квадрокоптер на высоту около 10 мет- ров и направляет его в сторону железнодорожного полотна так, чтобы на кадре видеокамеры были видны рельсы. Затем переключает полёт в автономный режим, в котором команды пилота игнорируются и управление полётом осуществляется микрокомпьютером.

В начале обработки изображения полагается, что оно уже содержит изображение рельсов, то есть эти линии достаточно длинные и близкие к вертикальным линиям. Исходное изображение (рис. 2 а ) обрабатывалось фильтром:

'- 1

01

-п

- 1

01

- 1

filter ( x ) =

- 1

01

- 1

- 1

01

- 1

ч- 1

01

- 1

включая преобразование изображения в оттенки серого.

Преимущество этого фильтра, по сравнению с фильтрами Собеля и Лапласа [22, 23], заключается в том, что он усиливает по интенсивности (выделяет) длинные прямые вертикальные линии, при этом ослабляет короткие прямые невертикальные линии. На рис. 2 б показано изображение после такой обработки.

Следующим шагом работы алгоритма было определение положения рельсов на кадре и их направление. Для этого обработанный с помощью фильтра (1) кадр разбивался по ширине на одинаковые сектора прямоугольной формы, назовём их Q ij , расположенные рядами вдоль нижней границы кадра, как кирпичи в стене, где i – номер сектора по горизонтали и j – номер сектора по вертикали. Пример такого разбиения показан на рис. 3, где секторы показаны синим цветом.

Ширина Wj (в пикселях) сектора Qij выбиралась таким образом, чтобы она была заведомо меньше, чем расстояние между рельсами (ширина колеи) Δj на кадре в j-й строке (см. рис. 3), но при этом ширина 2wj должна быть заведомо больше Δj, то есть wj ≈ 2/3Δj. Очевидно, что Δj, ширина wj и высота h сектора Qij зависят от высоты полёта и угла наклона оптической оси камеры БПЛА относительно горизонта. В нашем случае при высоте полёта 10 метров и угле оптической оси камеры к горизонту –30º ширина колеи (1520 мм) внизу кадра равна примерно Δ1 ≈ 225 пикселей. Эта величина является ориентировочной для выбора ширины сектора Qi, 1 так, чтобы она была заведомо меньше ширины колеи на изображении. При этом в сектор Qi, 1 заведомо попадает только один рельс. И это, в свою очередь, позволяет определять положение рельсов вне зависимости от их количества на изображении. В нашем алгоритме мы использовали ширину сектора в нижнем ряду (j = 1), равной w1 =225×2/3 ≈ 150 пикселей, а оптимальная высота h для всех секторов выбиралась одинаковой и равной 15 пикселям. Очевидно, что данные величины зависят от размерности матрицы, высоты полёта БПЛА, наклона оптической оси камеры и являются входными параметрами для работы алгоритма.

а)

Рис. 2. а) Исходное изображение, б) после обработки фильтром (1)

б)

Благодаря перспективе ширина колеи Δ j линейно уменьшается на кадре снизу вверх (см. рис. 2) и к середине кадра составляет ≈ 70 пикселей, что позволяет определить зависимость ширины колеи Δ j в пикселях от вертикальной координаты j как:

A j = 231,74 - 6,74 j .

Рис. 3. Схема построений секторов для определения положения рельсов и их наклона на кадре. W, H – ширина и высота кадра в пикселях; &j - сектор с порядковым номером i по горизонтали и с номером j по вертикали; Δx – отклонение средней точки между рельсами от середины кадра в первом ряду секторов; (xmiddle, ymiddle) – координаты «виртуальной точки направления»; d – расстояние между соседними точками в соседних рядах с номером j и j+1. Красными сплошными кружками показаны вычисленные положения точек с максимальным сигналом в каждом секторе. Вектор с углом наклона ^ относительно вертикали, показанный зелёным цветом, указывает направление рельсов относительно курса БПЛА

На следующем этапе проводилась обработка сигнала в каждом секторе Q i, 1 в отдельности. Суммировался сигнал в каждом столбце пикселей в пределах сектора Q i, 1 , и определялась координата точки X i, 1 по горизонтали с максимальным сигналом Imax i, 1 в пределах каждого сектора. На рис. 3 эти точки показаны красными сплошными кружками. Этим точкам присваивалась координата y i, 1 по вертикали в пикселях y i, 1 = L h /2 j , то есть на полувысоте сектора. При этом координаты x i, 1 и y i, 1 определялись в пикселях относительно левого края кадра (0,0). Такая обработка проводилась для каждого сектора Q i, 1 . В результате получался ряд точек (рис. 3 j = 1) с максимальным сигналом и координатами относительно левого нижнего угла кадра ( x i, 1 , y i ,1 ). Затем сверху первого ряда секторов строился второй ряд секторов Q i, 2 с шириной w j =2 , определяемой по формуле (2), и той же высотой h (см. рис. 3). В отличие от первого ряда центры секторов второго ряда выбирались так, чтобы они совпадали с рассчитанными координаторами ( x i, 1 ) для первого ряда. На рис. 3 на эти точки указывают штриховые стрелки. Из рисунка видно, что теперь секторы пересекаются, накладываются друг на друга. Пересекающиеся секторы показаны пунктирной линией. Процедура суммирования сигнала по столбцам пикселей повторялась в каждом секторе из второго ряда Q i, 2 , и определялись координаты точек ( x i, 2 , y i, 2 ) с максимальным сигналом Imax i, 2 . При этом координата по вертикали для каждого ряда секторов определялась выражением:

y ij = jx h L h /2 в пикселях.                     (3)

В результате получалось два ряда точек, соответствующих максимуму сигнала с координатами ( x i, 1 , y i, 1 ) и ( x i, 2 , y k, 2 ). Расстояние между парой таких точек, находящихся друг над другом, т. е. в одном столбце (см. рис. 3), вычислялось по формуле:

d ( j , j +1) =[( x i,j +1 x i,j )2+( y i,j +1 y i,j )2]1/2.               (4)

Если это расстояние удовлетворяет условию

d ( j , j +1) h ^^2,                                   (5)

то эти точки являются связанными, то есть относятся к одному объекту на изображении, ориентированному близко к вертикали, как это должно быть для рельсов. Данный критерий хорошо работает для линий с углом отклонения от вертикали менее 45 градусов, что вытекает из начального ориентирования квадрокоптера относительно железной дороги перед переходом в режим автономного полёта. Следующие ряды секторов строились по описанному принципу, и определялись связанные точки между последующим и предыдущим рядами. Если последовательность связанных точек удовлетворяет условию (5), то эта последовательность принадлежит одному объекту. Для других объектов, не связанных с рельсами, последовательность рано или поздно обрывается, так как они имеют линейные размеры на изображении заведомо меньше, чем рельсы. Опыт показал, что более 7 связанных точек, определённых алгоритмом, достаточно для определения рельсов на изображении. Остальные последовательности с меньшим количеством связанных точек исключаются из обработки. В результате строится изображение, на котором присутствуют только линии, связанные с рельсами. Блок-схема алгоритма показана на рис. 4. На рис. 5 показан пример исходного изображения с наложенными на него секторами Q ij . Из рисунка видно, что секторы, выбранные алгоритмом для обработки, располагаются своими центрами (красные точки) вдоль рельсов. Таким образом, алгоритм определил положение рельсов на кадре. Очевидно, что при наличии на изображении нескольких железных дорог, положение каждого из рельсов будет определено независимо, что даёт возможность при дальнейшем развитии алгоритма управлять БПЛА в данных условиях.

Положение рельсов по горизонтали легко определяется по координатам каждого рельса ( xl i,j ), вычисленным из предыдущей обработки по секторам в первом ряду для j = 1, где l – номер рельса. Отклонение от центра в пикселях вычисляется по формуле (см. рис. 3):

Д х = W/2- | ( x 1i,i + x 2i,i )/2\,                       (6)

где W – количество пикселей матрицы по горизонтали, в нашем случае W= 1280 пикселей. Если Δ x >0, то рельсы находятся слева от центра изображения, если

Δ x <0, то справа от центра. Полученная величина использовалась в дальнейшем для вычисления величины сигналов, подаваемых на ВМГ, для изменения рыскания.

Рис. 4. Блок-схема алгоритма

Рис. 5. Кадр видеоизображения с камеры БПЛА с наложенными на него секторами ^ i./ . которые показаны синими прямоугольниками, положение точки с максимумом сигнала в каждом секторе обозначены красными кружками

Следующий этап – определение направления рельсов относительно курса БПЛА. Для этого определялась координата по горизонтали средней точки между рельсами x middle в середине кадра по высоте, т. е. с координатой по вертикали y middle =(H/2) / h , где

H – высота кадра в пикселях, в нашем случае H=720. Назовём её «виртуальной точкой направления» (ВТН). Координата ВТН по горизонтали вычислялась по формуле xmiddle =(x i,j +x i,j) /2, (7) где J = Lymiddled, т. е. номер ряда, соответствующий середине кадра по вертикали. На следующем этапе строилась линия, соединяющая точки с координатами (W/2,1), середина кадра внизу, и (x middle, Lymiddled). На рис. 3 эта линия показана зелёной стрелкой. Угол ф данной линии относительно вертикали определяет угол между курсом БПЛА и направлением железной дороги. Полученная величина ф использовалась для вычисления величины сигналов, подаваемых на ВМГ, для изменения рыскания. Анализ экспериментальных данных позволил определить погрешность определения положения рельсов в пикселях (внизу на изображении) и миллиметрах на местности. Погрешность составила 6 пикселей, что соответствует 1520(мм)х6(пикселей)/225(пикселей) ® 41 мм. Погрешность в определении угла ф составила Аф ® 0,6°. Полученная погрешность обеспечивает достаточную надёжность определения положения рельсов и их наклон на изображении с помощью предложенного алгоритма и тем самым обеспечивает надёжный полёт БПЛА вдоль железной дороги.

Одним из преимуществ данного алгоритма, в отличие от предложенного в [4], является возможность определения любого количества железнодорожных путей в одном кадре отдельно друг от друга. Другими словами, «считать» пути. Несколько путей, идущих параллельно, наблюдается в районе станций, а также пути могут сходиться или расходиться. При данном алгоритме БПЛА может двигаться по заданному пути, не перескакивая с одного пути на другой, либо переходить с одного пути на другой, согласно предустановкам в алгоритме.

3.    Управление полётом

Управление полётом происходило по следующему алгоритму. После того, как положение рельсов на изображении Δx было определено согласно (6), микрокомпьютер выдавал команду на изменение крена таким образом, чтобы изображение рельсов сдвинулось к центру кадра, т.е. Ах ^ 0. Одновременно подавалась команда на изменение рыскания и тангажа таким образом, чтобы линия, соединяющая нижнюю середину кадра с «виртуальной точкой направления» (ВТН), стремилась к вертикальной линии, т.е. ф^ 90°. В результате управление креном обеспечивало положение БПЛА прямо над железной дорогой, а управление рысканием и тангажём обеспечивало движение вдоль железной дороги. На рис. 6 показан кадр тренировочного полёта БПЛА вдоль линии, имитирующей железную дорогу. Линии выкладывались из листов бумаги в закрытом помещении, чтобы исключить влияние внешних факторов погоды, таких как ветер, дождь. На рисунке зелёной стрелкой показано направление рыскания, а красной стрелкой показано направление крена БПЛА.

Рис. 6. Тренировочный полёт БПЛА вдоль линии, имитирующей железную дорогу

Величины сигналов управления подбирались таким образом, чтобы изменение направления движения было плавным, предотвращало потерю изображения рельсов и не нарушало работу алгоритма. Для этого использовался стандартный ПИД-регулятор. Скорость прямолинейного движения БПЛА задавалась оператором до перехода на автономный режим полёта.

Следует отметить, что изначально БПЛА запускается вручную над заданным полотном дороги. Алгоритм «захватывает» этот путь и минимизирует ошибку положения рельсов относительно середины кадра (т.е. А х ^ 0) и вертикали ( ф^ 90°). Таким образом, при появлении в кадре ещё одного или нескольких путей ошибка их положения будет всегда больше, чем для первоначального пути, что обеспечивает устойчивость полёта вдоль изначально выбранного пути. Работа алгоритма в условиях нескольких путей в кадре требует дальнейшего совершенствования при получении достаточного объёма экспериментальных данных.

4.    Экспериментальные результаты

Пример экспериментального полёта квадрокоптера в автономном режиме показан на видео, размещённом на сайте Rutube [24]. На видео показана работа алгоритма: построение секторов, определение координат с максимальным сигналов в каждом секторе и выделение секторов, связанных с рельсами. Видно, что в начале полёта, ещё во время подъёма и до перехода в автономный режим, алгоритм определяет и строит точки, не связанные с рельсами. Но их последовательность быстро обрывается. Как только в поле зрения камеры попадают оба рельса, алгоритм «переключается» на них. После набора заданной высоты 10 метров дальнейший полёт происходит в автономном режиме и алгоритм надёжно удерживает квадрокоптер над железной дорогой, несмотря на то, что справа на изображении генерируются короткие последовательности точек, не связанных с рельсами. Также видно, что рельсы надёжно определяются в нижней части изображения, но при увеличении дистанции до рельсов (середина кадра и выше) точность определения рельсов снижается. Однако это не сказывается на полёте квадрокоптера, так как основной вклад в алгоритм вносят точки внизу кадра.

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

Выводы

В результате в данной работе предложен программно-аппаратный комплекс для управления автономным полётом БПЛА без участия оператора и использования спутниковых навигационных систем. Таким образом, реализуется помехозащищённый режим полёта и режим радиомолчания. Алгоритм обеспечивает управление двигателями БПЛА таким образом, чтобы изображение рельсов было максимально приближено к середине кадра с минимальным отклонением от вертикали. Это обеспечивает полет БПЛА вдоль железной дороги. Комплекс не требует значительных вычислительных ресурсов и поэтому имеет низкое энергопотребление, небольшие массогабаритные параметры, что положительно сказывается на продолжительности и дальности полёта. Экспериментальные испытания БПЛА показали надежность работы комплекса.

Статья научная