[Из песочницы] Как мы приготовились к UAV Challenge 2016

538493fac3124b7091a4756ab43eb9c9.jpg

Квадро-самолет Мурена во время тестовых полетов

UAV Challenge — это ежегодное мероприятие, направленное на расширение возможностей БЛА и, по совместительству, одно из самых масштабных роботехнических соревнований в мире. Влияние события на отрасль довольно велико: в 2014 году, например, в UAV Challenge участвовали постоянные контрибьюторы таких популярных проектов, как Ardupilot, PX4 и Paparazzi, так что многие из существующих сегодня фич этих контроллеров полета были сформированы именно под влиянием требований этих соревнований. Каждые два года соревнование открыто для команд со всего мира, и при этом тематикой становится миссия по спасению человека. В этом году нам тоже удалось попасть в список из десяти команд, прошедших три предварительных этапа UAV Challenge, и поехать на мероприятия финальной части, которые проходили с 27 по 29 сентября в Далби, Австралия. Чэллендж закончилось два месяца назад — с тех пор наши впечатления успокоились, мы проанализировали опыт и теперь готовы описать те два летательных аппарата, с которыми мы приехали на меропритие.
Мы — MelAvio Avionics Club, объединение студентов из Варшавского Политехнического Университета (Warsaw University of Technology). Мы занимаемся вопросами программирования, электроники и механики в рамках их применения к беспилотникам, и почти вся наша работа проходит в приготовлениях к различным соревнованиям, главным из которых в последнее время являлся UAV Challenge. На самом деле, в этом году MelAvio принимало участие в чэллендже уже во второй раз: до этого наша команда ездила на финал в Австралию два года назад. Тогда удалось хорошо показать себя с оригинальной механической конструкцией и самодельным контроллером полета, заняв десятое место в общем зачете и получив награду за лётное мастерство, хотя и не выполнив полностью миссии соревнований.

0df8497a49704dc397fbdc63a2dcc0fe.jpg

Барракуда, беспилотный самолет MelAvio, на UAV Challenge Outback Rescue 2014

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


Чтобы дать понять масштаб задачи, имеет смысл коротко описать миссию, представленную для соревнований. Задачей команд ставилось доставить образец крови от Джо — жителя сельской местности, который, по легенде, внезапно почувствовал себя плохо, находять в своем доме за городом. Дом Джо отрезан от города паводками, поэтому, чтобы достичь его и прилететь обратно, летательному аппарату нужно вцелом преодолеть до пятидесяти одного километра воздушного пространства по непрямолинейной траектории. Кроме того, положение Джо известно только с точностью до ста метров, и с целью близкого призмеления и избежания нанесения вреда человеку летательный аппарат должен локализовать его более точно уже будучи на месте. Также усложняет ситуацию тот факт, что нет почти никаких гарантий по поводу ландшафта как в месте начала миссии, так и в окресностях Джо, так что беспилотник должен обладать возможностью вертикальных или условно-вертикальных взлета и посадки, а также системой, позволяющей с достаточной степенью надежности выбрать подходящее место для приземления. Организаторы чэлленжа поощрают как можно более автономное поведения беспилотника, так что лучший возможный подход заключается в полном исключении действий пилота из миссий, начиная от вылета с места старта и заканчивая приземлением с пробой крови на том же месте. Помимо главного, «доставочного», беспилотника в миссии может принимать участие вспомогательный летательный аппарат. К обоим аппаратам предъявляется довольно широкий ряд требований с целью обеспечить их как можно более безопасный полет и корректное поведение в непредвиденных ситуациях.

527fd45cc2a246f3955aac4a16a4e77b.jpg

Карта с обозначенными местом отправления, местом назначения и позволенной областью полета


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

Конструкция


Перед проектированием «серьезной» модели квадро-самолета мы собрали пробную модель — аппарат, который мы назвали «Уродец». Этот гибрид был сделан на основе готового купленного модельного самолета и был предназначен для проверки работоспособности самой идеи квадро-самолета, а также всех адаптируемых нами нововведений в контроллере полета. После того, как мы убедились, что действительно сможем летать на такой конфигурации беспилотника, мы приступили к разработке большей модели.

0be031c8948f443d9d8831b5ab607f1e.jpg

Тестовый летательный аппарат

С самого начала разработки было ясно, что коптерные винты и двигатели будут создавать дополнительные сопротивление и дисбаланс в самолетном режиме, поэтому мы решили постараться сделать конструкцию самого самолета как можно менее «тормозящей» и как можно более устойчивой. Кроме того, нашим исходным требованием было сохранить максимум пространства в корпусе самолета, так чтобы там поместилось оборудование системы компьютерного зрения и литий-полимерные батареи с емкостью достаточной для выполнения целой миссии (летательный аппарат — полностью электрический). Исходя из этих соображений в качестве схемы самолета мы выбрали высокоплан с трапециевидным крылом среднего удлинения и Т-образным оперением; угол поперечного V крыла был выбран равным полутора градусам.

С указанными исходными данными о конструкции и предположением о массе летательного аппарата, мы приступили к разработке. Сперва при помощи приложения Profili 2.0 был выбран подходящий вариант профиля главного крыла самолета, после чего в XFLR5 мы уточнили форму крыла и оперения в объеме. Кроме того, в ANSYS Fluent мы проверили, что расположенные в непосредственной близости от крыла коптерные двигатели и пропеллеры не вносят критического изменения в характер воздушного потока на крыле. По выполнению указанных процедур мы перешли к более детальной проработке всей конструкции в SOLIDWORKS.

c0a795fbb0254321a990eb8e41ce579a.jpg

Проверка потока на коптерных винтах в ANSYS Fluent

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

Крыло самолета было сделано из трех составных частей: центроплана и правой и левой полуплоскостей. Основой для констукции крыла являлся экструдированный пенополистирол. Части крыла были спроектированы таким образом, чтобы их поверхность была прямолинейной, и благодаря этому для точной резки полиэстирола можно было задействовать проволочный ЧПУ станок. После, заготовки из полиэстирола были подвергнуты дополнительной обработке для того, чтобы повысить их прочность и улучшить аэродинамические характеристики. Так, болванка центроплана была заламинирована при помощи углеволокна и полиэфирной смолы; для того, чтобы заготовка сохранила гладкую и ровную поверхность, на время ламинирования она была обернута плексигласом, помещена в вакуумный мешок и закреплена в пенополистироловом негативе. Для изготовления полуплоскостей крыла не представлялось возможным использовать углеволокно, в том числе по той причине, что в этих деталях необходимо было разместить радиопередающее оборудование (уголь создает интерференцию), поэтому полуплоскости были заламинированы слоем стеклоткани и слоем бальсы. На краях элементов были сделаны крепления для их сборки в цельную конструкцию крыла. Также в крыле было вырезано место для размещения радио-трансивера, приводов для эйлеронов, проводов и иного оборудования; в необходимых местах в вырезы были вклеены распечатанные на 3D принтере крепления для оборудования.

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

dbf38b265f1d430abfa40c1863195adf.jpg

Центроплан в процессе изготовления

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

542744d9c2d048c79937ebc5b8f0dbfa.jpg

Каркас корпуса беспилотника

Силовая часть


В качестве коптерных моторов для аппарата мы взяли самые большие, которые были для нас в зоне оперативного доступа — T-MOTOR U8 Pro 170KV с рекомендованными для этих моторов деревянными пропеллерами от T-MOTOR диаметром 20 дюймов. Для управления скоростью моторов были выбраны ESC«и T-MOTOR FLAME 80A. С питанием от двух соединенных последовательно шестиячеечных литий-полимерных батарей Tattu 22000mah такая силовая установка позволила нам получить максимальную вертикальную тягу в 20 килограмм.

Для пропульсивной установки мы выбрали мотор Scorpion HKIII 4035 500KV с ESC FOXY XR-120 OPTO питанием от того же аккумулятора, к которому подключены коптерные моторы.
Итоговая взлетная масса летательного аппарата со всем оборудованием на борту вышла равной 14 килограммам. Максимальная скорость аппарата — 40 м/с, крейсерская скорость — 25 м/с, скорость срыва потока — 18 м/с, длительность полета в режиме самолета — более одного часа, дальность полета — до 100 км, что должно было обеспечить нам возможность выполнения миссии даже при неблагоприятных погодных условиях.

Система компьютерного зрения


Важной частью главного летательного аппарата для нас была бортовая система компьютерного зрения, без которой найти Джо и выполнить миссию невозможно. Основными элементами системы были выбраны RGB камера JAI GO 2400 с полнокадровым переносом и разрешением Full HD, и мощный мини-компьютер GIGABYTE BXi7–5775. Камера была закреплена на стабилизирующем подвесе нашей оригинальной механической конструкции под управлением контроллера Alexmos — это позволило нам получать изображения с постоянным уровнем наклона относительно земли, так что силуэт человека на них был отчетливо различим. Компьютер был соединен с контроллером полета для обеспечения возможности получения телеметрийных данных и отправки команд. Кроме того, при помощи 4G модема компьютеру был предоставлен доступ к FTP-серверу, через который осуществлялось сообщение со станцией оператора системы компьютерного зрения. Алгоритм программы, запущенной нами на борту, коротко описан в следующем параграфе.

После получения изображения с камеры, к нему немедленно привязывается последний полученный от контроллера полета пакет телеметрийных данных, так что для каждого пикселя на изображении можно примерно вычислить его геокоординаты. После этого происходит поиск областей интереса: для этого строится гистограмма изображения, и в ней выбираются уровни, количество пикселей для которых больше некоторого порогового значения — это уровни «неинтересных» регионов, и соответствующие им пиксели далее не рассматриваются. На оставшихся «интересных» пикселях проводится операция морфологической эрозии, так что остаются только пиксели, объединенные в группы — эти группы сортируются по концентрированности, размеру и цвету, и в итоге мы получаем ранжированную группу областей на изображении, которые хоть как-то могут быть похожи на человека. После этого для каждой из таких областей мы вычисляем HOG-дескриптор и при помощи вектора опорных векторов классифицируем ее, как человека или не-человека. Если область классифицирована, как человек, это не значит, что мы сразу действительно считаем ее таковым — она просто получает значительный плюс в рейтинге. После, изображения всех найденных областей интереса высылаются на FTP-сервер в порядке, соответствующем их рейтингу. В файл каждого такого изображения включена информация о геоположении области и идентификатор полного изображения, с которого взята область.

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

d29c7c5b85d84116af6419cb42626931.jpg

Приложение на станции оператора

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

c732c5d222174ecabed713311b348f6a.jpg

Классификация регионов интереса на борту беспилотника: красный контур — регион классифицирован, как не-человек; зеленый контур — регион классифицирован, как человек

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

990977629ec84f3f8343bc9e20dc2384.jpg

Классификация регионов поверхности земли вдоль траектории летательного аппарата: светло-зеленый — трава, темно-зеленый — деревья и кусты, фиолетовый — асфальт


Помимо описанного главного беспилотника, мы решили использовать вспомогательный, который бы отвечал за ретрансляцию в канале связи между наземной станцией оператора и главным летательным аппаратом. Действительно, если наш основной беспилотник удаляется от наземной станции на несколько километров, то поддержание прямой радиосвязи для получения телеметрийных данных и передачи команд становится проблематичным, как в силу убывания мощности сигнала с увеличением расстояния, так и из-за появляения препятствий на линии прямой видимости между антеннами на земле и на борту аппарата. Справляться с трудностью установления прямой радиосвязи путем увеличения мощности сигнала не всегда представляется возможным, так как, во-первых, существуют государственные ограничения, определяющие максимальную позволенную мощность радиосигнала, и, во-вторых, увеличение мощности может не приносить позитивного результата, особенно когда летательный аппарат находится на малой высоте на большом удалении. Мы решаем эту проблему при помощи добавления ретранслятора, который находится на большой высоте, в зоне прямой видимости как со станции оператора, так и с «рабочего» летательного аппарата.

Силовая часть


Для переноса ретранслирующего оборудования мы использовали летающее крыло, сделанное на основе довольно популярной платформы Skywalker X8. Летающее крыло в данном случае вписывается в ограничения, обусловленные неизвестностью ландшафта стартовой площадки, так как может быть запущено с легкой катапульты или с банджи, и может приземляться автоматически, не требуя для этого значительного открытого пространства. Для того, чтобы самолет мог приземляться без шасси, не получая значительных повреждений, мы заламинировали нижнюю часть корпуса кевларом и стеклотканью. Кроме того, чтобы увеличить прочность конструкции и обеспечить возможность полета на повышенных скоростях, стеклотканью была также заламинирована передняя кромка крыла. X8 было оборудовано двигателем на 710 KV, номинально рассчитанным на работу с литийполимерной батареей из пяти ячеек, и батареей для этого двигателя на 16 амперо-часов из шести ячеек. Из-за того, что мы использовали батарею с напряжением выше номинального напряжения двигателя, пришлось обеспечить в конструкции дополнительный влет воздуха для охлаждения. Для двигателся использовался регулятор скорости на 70 А и складывающийся пропеллер 9.5×8. На элевонах мы поставили высококачественные серва HS-5625MG от Hitec; серва обладают значительным запасом по характеристикам, что должно минимизировать возможность потери управляющих поверхностей, каждая из которых в случае летающего крыла является критически важной. Кроме того, на борту были расположены дополнительные малые батареи для авионики и системы аварийного прекращения полета, а также контроллер полета (Pixhawk). В итоге характеристики аппарата оказались следующими: масса — 3,5 килограмма, максимальная скорость — 35 м/с, крейсерская скорость — 25 м/с, время полета — до 55 минут, покрываемое расстояние — более 80 км.

196d7e9cd82f41b5bdb7f80c864f775e.jpg

Вспомогательный летательный аппарат во время тестовых испытаний

Организация связи


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

e581aed2ce2a4f5db7951a0d36aa2ff3.jpg

Схема связи между летательными аппаратами и станцией оператора

Как было написано выше, в системе всего три радиомодема, которые ответственны за разрешение конфликтов передачи при доступе к единственному используемому ими радиоканалу. Две базовые станции, используемые для мониторинга и управления каждым из летательных аппаратов, осуществляют прием и передачу через один и тот же радиомодем, доступ к которому регулируется приложением-коммутатором, установленным на одной из станций (таким приложением в нашем случае было mavproxy). Обмен пакетами между приложениями мониторинга/управления и приложением-коммутатором осуществляется при помощи UDP.

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

Что касается проблемы определения маршрутизатором, предназначен ли полученный пакет данному устройству — решение не совсем тривиально. Дело в том, что для сообщения с летательными аппаратами мы используем протокол mavlink, который является де-факто стандартом для пользовательских беспилотников. В заголовках mavlink отсутствует информация о получателе пакета, хотя есть идентификатор системы и подситемы отправителя. В нашем случае интерпретацией команд от «Базовой Станции 1» должен заниматься только контроллер полета вспомогательного аппарата, а от «Базовой Станции 2» — только контоллер полета главного аппарата, поэтому мы могли сортировать пакеты имея только идентификатор отправителя. Такое решение работает довольно надежно, но, опять же, маломасштабируемо и нуждается в дальнейшей переработке.

a48c05426ff645d3800015cbdfaf1d58.jpg

Маршрутизатор, осуществляющий фильтрацию пакетов, приходящих от радио-модема

В качестве радиомодемов мы использовали RFD 868+. Маршрутизаторы были сделаны нами на основе STM32 Nucleo, к которому мы добавили шилд, чтобы упростить подключение питания к плате, расширить возможности коммуникации и индикации.


Согласно требованиям конкурса для прохождения в финальную часть каждый из описанных летательных аппаратов вылетал более пяти часов; в ходе этих испытательных полетов нами было выявлено и устранено много мелких и значительных неполадок и ошибок. Наш видео-отчет для этого этапа выглядел так:

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

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

В конце стоит сказать, что ни одной из команд в этом году не удалось целиком выполнить миссию соревнований, что было связано с потерей летательных аппаратов по разным причинам: крушение, возгорание, вылет за пределы отведенного летного пространства и, стандартно, зависание на дереве. Наиболее отметились во время чэлленджа команда из TU Delft (оригинальная механическая конструкция и испытательный образец системы компьютерного зрения от Parrot, видео о беспилотнике тут) и Canberra UAV (доставили пробу крови, но разбили вспомогательный вертолет, видео о беспилотнике тут).

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


» Правила UAV Challenge Medical Express 2016.
» Статья от организаторов чэлленджа о статистике и истории соревнований.
» Описание успеха Canberra UAV от Эндрю Триджелла — идейного лидера команды.

© Geektimes