вторник, 16 января 2018 г.

Автопилот на AT91SAM7: 7. Летные испытания



7.  Летные испытания


7.1        22.08.2009


        Итак, первый полет самолетика (рис.18 слева) без GPS состоялся 22 августа 2009 года.

 Рис. 18

 К сожалению, лог получен не был. Управление было ручное. Скорее всего, в процессе длительного полета с большим положительным тангажом, автопилот старался препятствовать слишком большому тангажу и накопил для этого данные, и когда на короткое время пропал сигнал от передатчика, немедленно вывел рули высоты на снижение, но поскольку некоторое время у него это не получалось, применил слишком большое усилие на рули высоты.  Это видно на видео. После этого полета контроллер был экранирован и при переключении режимов автопилота выполняется обнуление накопленных данных по триммированию. Поскольку самолет я не восстанавливал, следующим полетел Senior Super Frontier (Рис.18 справа), с размахом крыльев 2.08 М и мотором 5 см^3. 

7.2        27.09.2009


       Разбив один самолет, немедленно захотелось разбить еще один.  Самолет совершил 3 полета на заброшенной полосе в поселке Помялово и был там изрядно помят. Два первых полета автопилот не активировался, было ручное управление и шел сбор данных. При втором полете в момент посадки так вышло, самолет ударился передней стойкой об забытую ровно посередине на полосе канистру с топливом.  Этот удар на 229 секунде четко видно на данных черного ящика, изображенных на рис. 19.

 Рис.19

Еще один полет и также запись третьего полета когда испытывался уже автопилот можно найти в этой папке. Тут также находятся исходные логи для всех трех полетов. По графикам рис. 19 можно сказать, что лучше всего удается измерять здесь высоту полета и скорость. Видно, что скорость достигала 100 км/ч, а высота доходила до 150м. При измерениях случались "промахи".  Конечно измерениями HDG можно пользоваться, но о точности тут говорить нельзя. Кажется, корректно измеряется только курс перед взлетом и после посадки.  Параметр pitch кажется похож на правду, а вот Roll – как-то не очень, что и привело в следующем полете к аварии.  Как описано в главе 3.2, параметры гироскопа для расчета крена никуда не годятся.  На графике третьего полета видно, что как только был включен автопилот на 97 секунде самолет стал падать и вошел в штопор. Если посмотреть на показания Gyr (гироскоп) видно, что он имеет большое положительное значение, хотя должен при нормальном полете быть около 0. И конечно, немедленно, когда включился автопилот, элероны ушли сразу в крайнее положение на - 25 примерно и так и остались в этом положении. Это соответствует поведению самолета, который ушел в штопор.   Вот так самолет восстанавливался, по отпечаткам фюзеляжа на лавсане. (Рис.20)
 

Рис.20

7.3        11.06.2012


                После восстановления самолета (Рис.20) было принято решение не ломать самолет, и после замены гироскопа сделать попытку взлететь в режиме удержания только крена и тангажа (Автопилот 0).  При этом был куплен самолет с электрическим двигателем Wing Dragon Sportster (Рис. 21)

 Рис.21

В автопилоте был заменен гироскоп. Эксперимент ставился так: если все рассчитано верно, то самолет взлетит. Если все неправильно, то он хотя бы не сильно попортится.  Сначала с аккумулятором 7.4V ничего не получалось, но потом был установлен 11.1V и самолет поднялся в воздух. С пульта можно было управлять только мотором, все остальное работало автоматически. На картинке я изобразил примерную траекторию полета. Это заброшенная ВПП рядом с селом Вохоново. Из-за ветра и отсутствия контроля высоты и курса самолет начал разворачиваться и описав дугу сел в лес. В точке А, как показал черный ящик, видимо из-за большого расстояния, мотор выключился. После этого началось планирование. При этом, как видно в логе, предположительно из-за потери устойчивости самолет раскачивался. Кроме того, в последствие будет обнаружено недостаточно прочное крепление крыла к фюзеляжу.  Для поиска самолета мне с моим ассистентом потребовалось 2 часа. Нашли самолет используя компас, без него как только мы входили в лес, начинали идти куда удобнее, а не куда надо. Нам повезло.  Он только потерял шасси. Больше повреждений не было. Аппаратура еще работала.  Эксперимент можно считать успешным.  Таким образом, была подтверждена возможность контролировать крен самолета по продольному гироскопу.

 7.4       15.07.2017


                К работе над автопилотом я вернулся только к 2016 году. Я решил довести дело до конца и установить GPS.  Итак, когда обработка GPS была написана, нужно было все проверить. Теперь я хочу представить моего Dusty. (Рис.22) Макет выполнен на базе игрушки Dusty. Элероны и руль 

  Рис.22

направления уже были двигающиеся, пришлось вырезать только руль высоты. В макет установлены 3 микро-сервоприводов и ESC. Для чего это нужно? Для отладки работы элементов управления я делал контрольные заезды на машине и прогулки с макетом, для проверки алгоритмов полета по GPS.  При этом очень трудно понять правильно ли все работает, а макет сразу показывает, как именно отрабатывают рулевые машинки и как при этом двигаются плоскости самолета.  Также записан короткий ролик демонстрирующий работу макета. После отладки на макете автопилот был установлен на самолет.  В директории даты испытаний можно также найти лог проезда по маршруту Двинская-Шотландская-Невельская, и проезд маршрута с дачи Мичуринское-Двинская. Последний содержит 25 маршрутных точек, и этот маршрут был пройден корректно, что показало вполне приемлемую систему принятия решения о достижении следующей маршрутной точки.  


7.5        09.08.2017


                Это был первый полет "Дракончика" с модулем GPS, причем спустя 5 лет после первого полета. Аккумулятор был тот же.  Фрагмент полета можно посмотреть на видеозаписи. В этот день был сильный около 20-30 км/ч южный ветер.  Примерная траектория полета представлена на рис. 23, которая была рассчитана по  данным черного ящика.  Старт самолета произошел на ЮГ( вниз на рисунке), затем, он пролетел курсом около 320 градусов, а вот потом(желтая линия) самолет начал длительный такой разворот. При входе в него скорость по GPS достигала 90 км/ч, воздушная около 60 км/ч. Часть дуги до пересечения с линией ожидаемой посадки он пролетел 280 М со средней скоростью 75.6 км/ч за 14 с, это можно рассчитать по логам. Остаток дуги 684М он пролетел за 36 секунд со средней скоростью 68 км/ч. Такая дуга вышла скорее всего из-за сильного ветра.  В данном эксперименте мотор управлялся от пульта, т.к. я оставлял себе возможность выключить мотор, если что-то пойдет не так. Как только я решил, что самолет потерян я выключил пульт, самолет сел на лес. Можно предположить, что он мог бы долететь до места посадки, видно, что он выполнял разворот, но со слишком большим радиусом.

Рис.23

На видео фрагмент полета показывает, что самолет машет крыльями. Позднее стало ясно, что причина в слабом креплении крыла к фюзеляжу. Еще, по графикам (рис. 24) можно оценить 

Рис.24

скорость ветра и его направление в данном случае около 180 градусов. При взлете скорость по GPS значительно меньше скорости воздушной. Так же видно, что скорость воздушная вычисляется достаточно близко к реальности.  Так же можно видеть, что скорость, измеренная GPS примерно на три секунды отстает от воздушной. Это связано с тем, что для вычисления скорость GPS модулю требуется 2 с, и еще секунду на передачу данных в контроллер. Махание крыльями тоже видно на графике Roll. На графике CurrentHDG видно, что с 71 секунды полета начинается линейное изменения курса с темпом 5 градусов в секунду, это соответствует дуге окружности. После построения графика стало понятно, где примерно следовало искать самолет, поскольку, как оказалось, с земли реально плохо видно траекторию полета. Реально искали не там, а шли примерно курсом 59 градусов (розовая линия от начала желтой) по линии продолжения торца предполагаемой траектории. После длительных совместных поисков он был совершенно случайно найден.  Кроме того, было внесено изменение в электрическую схему, которое не отображено в документации: в цепь питания автопилота был вставлен самовосстанавливающийся предохранитель на 2.5А MF-R250), поскольку, когда падает питание ниже 3.5В стабилизатор до последнего пытается поддерживать питание, и ток растет. Это может привести (и привело) к сгоранию проводки при глубоком разряде полимерного аккумулятора. Полностью всю информацию можно найти в папке испытания

7.6        26.08.2017


                Это было первое испытание с полным автопилотом - на этот раз мотором управлял сам автопилот. И это был неудачный режим. (См. рис.25) Посмотрим на полную видеозапись испытания. Самолет начало опять сносить ветром, и я перехватил управление и стал сам им управлять. Как видно из графиков, автопилот справлялся лучше меня. Я слишком энергично управлял элеронами. (Вообще, я впервые(!) управлял этим самолетом вручную).  Однако проблема не только в ветре. Видно, что канал управления мотором работал неверно, и вошел в раскачку. Было решено значительно изменить алгоритм управления мотором, значительно
 Рис.25

увеличить постоянную времени и уменьшить усиление по этому каналу.  Это было сделано к следующему полету. 

7.7         02.09.2017


Это был один из самых красивых полетов.  Видеозапись сделана специально замедленной в 2 раза.  Поскольку был уменьшен коэффициент усиления по каналу throttle самолет очень медленно набирал скорость, но при этом очень красиво взлетел, но... полетел не туда. Надо отметить, что в этом испытании случился инцидент из-за которого была создана карта проверок. Как показывает  TRACK002.LOG  при включении на прогрев ручка Throttle передатчика осталась в среднем положении (значение 48, четвертый параметр в строке


Рис.26

после символа J). Самолет не взлетел, но при этом уехал в кусты. Потребовалось некоторое время для его починки. Траектория полета представлена на рис.26.  Самолет должен был взлететь и лететь сначала курсом 323 и дальше по коробочке. Однако он взлетел, развернулся

 
Рис. 27

и полетел курсом 150. Это хорошо видно, что он собирался лететь курсом 150.  (Если бы я не перехватил управление и не воткнул бы его в дерево) На рисунке 27 представлены данные черного ящика. Во-первых, мы видим, как хорошо отработал алгоритм управления мотором, хотя из-за низкого усиления ошибка была почти -10 км/ч. Так же хорошо видно, как менялся параметр KeepRoll, и как вслед за ним отрабатывали элероны и соответственно крен.  Плавно набиралась высота, правда, все равно ступеньками... Достигла 26 м. Потом я перехватил управление, высота упала на 8 м и застряла на уровне дерева 18м... А вот курс не тот. Видно, что вместо того, чтобы лететь курсом 323 самолет лег на курс 150.  Когда после выключения пульта и включения автопилота отобразились расчетные данные маршрута, дистанция до следующей точки оказалась не ожидаемые 100 м, а 1000м! Т.е. GPS решил, что самолет находится не там, где мы были, а в километре от нас. Причем он честно мигал зеленым глазом, и тем самым обманул нас.  Дело в том, что программа начинала расcчитывать данные местоположения только когда выключен пульт и включен автопилот. Это не позволяло перед стартом увидеть, правильно ли определил свои координаты самолет. Как видно из лога, это были данные расчета маршрута при инициализации SD карты и осталась там последняя точка WP7 и ее 134м. После этого в программу было внесено изменение, чтобы прямо перед стартом через BT было видно, соответствуют ли данные следующей маршрутной точки ожидаемому значению или нет. Т.е. какова дистанция до следующей точки и смещение относительно траектории полета. Если эти параметра разумны (а я должен был увидеть дистанцию около 100 м, запрошенный курс около 323 градусов и смещение близкое к 0), то можно выключать пульт и взлетать. Все это также записано теперь в карте проверок.

7.8        10.09.2017


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

7.9        17.09.2017


                Испытание проходило в Вохоново. План полета на рис. 28., взлетный курс 300, посадка на полосу 30.  На видеозаписи полета видно, что при взлете я ожидал пропадание ветра. На видео в основном видно взлет и посадку. Посадку надо смотреть в самой левой части экрана. После взлета в какой-то момент мне показалось, что сейчас самолет улетит в лес, как обычно. Самолет находился недалеко от точки 3. Я попытался перехватить управление, но расстояние было слишком велико. Однако, самолет развернулся и стал возвращаться. Дальше самолет летел над лесом. Потом он начал снижаться, при этом летел, как казалось, над лесом. Я подумал, что снова придется его искать и собирать обломки. Однако он вдруг оказался перед лесом и красиво приземлился. Красноречиво о полете рассказывают графики на рис.29. Полностью их можно найти в папке испытания (Это ссылка в заголовке). Тут можно увидеть, как все три курса HDG (текущий курс), KpHDG (keep HDG) и TrHDG (правильный курс), описанные в разделе 4.4 действительно сходятся.   Точку 4 самолет пролетел на расстоянии 3 м! (Offs) К сожалению, на весь маршрут не хватило аккумулятора. Самолет штатно приземлился в траву не долетев 200 м до точки 5. Скорее всего еще и потому, что почему-то высота удерживалась плохо. Самолет летел не на 30м, а на 50м. Скорее всего нужно увеличить триммирование или снизить скорость. При большой скорости у самолета сильно растет подъемная сила. Также прежняя проблема со скоростью. Видно, нужно все-таки поработать над алгоритмом ее удержания. Кажется, тут все не так просто. Где-то возникает нежелательное перерегулирование, т.е. мотор слишком сильно снижает обороты при достижении требуемой скорости и слишком долго набирает необходимую скорость.  

 Рис.28

 Рис.29

В этом полете у самолета был новый винт с шагом 5.5(Рис.30 справа). Первый винт имел шаг около 2.5-3, что было измерено.  Не исключено, что свою негативную роль сыграла замена винта на нештатный.  На рис. 30 я привожу результаты измерения шага винта и установку для измерения тяги и параметров винта.  На рисунке ось Y это мощность потребления мотора за вычетом мощности потребления автопилота. По оси X отображается условная скорость.
 
 Рис.30

Она не соответствует реальной. Но относительно можно видеть. Самым экономным во всех режимах был как раз винт с шагом 3. Как измерить шаг винта? Помечаем лопать на расстоянии 5 см от центра, и этим местом прижимаем к столу. (Рис.31). Затем с помощью скрепки и транспортира измеряем наклон вала α.  Step = (2*π*5*tg α )/2.54= (31.4*tg α)/2.54   В дюймах. Для винта на картинке:

 Рис.31

(31.4*tg 21° )/2.54=4.75, на винте написано 5. Почти угадали.  Для измерений параметров винта использовалась установка, показанная на рис. 31 справа.  
 

7.10     21.10.2017


                Неудачное испытание. Уже было холодно. Видеозаписи нет. Взлет нормально, далее, как и в полете 26.08.2017 - раскачка и впервые самолет разбился, просто врезавшись в землю. Перехватить не получилось.  Был потерян мотор. Он сгорел. График показан на рисунке 32. просто кое-кто опять изменил алгоритм удержания скорости и увеличил усиление в канале тангажа (т.к. в предыдущем полете задание по высоте не было выполнено) за что и поплатился.   Если посчитать по графику высоты, вошли в землю со скоростью 10 м/с(36км/ч). А акселерометр издевательски отметил огромный отрицательный тангаж. Какие могут быть идеи, после замены мотора - вспомнить как летают на поршневых самолетах, и как управляют оборотами. 

 Рис.32

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

if(speed_error > 10)        throtthle-=10; 
else if (speed_error > 2)   throtthle-=1; 
else if (speed_error < -2)  throtthle+=1; 
else if (speed_error < -10) throtthle+=10;

Видно, что из-за выставления неправильного порядка строчек, последняя строчка вообще никогда выполнятся не будет. Ее нужно было поднять на строку выше. Но лучше, описывать диапазон, тогда при любом расположении ошибки не будет. К чему привела такая ошибка? При большом превышении скорости двигатель очень быстро выключался, но при большом снижении скорости очень медленно включался. Масла в огонь подлило то, что на 37 секунде уменьшилась KpSPD -  запрашиваемая скорость была резко уменьшена на 10 единиц как бы отключая взлетный режим. Увеличение усиления по тангажу (в 1.5 раза) и слишком передняя центровка привели к тому, что очень сильно на поведение самолета стала влиять тяга двигателя. Результат виден на графиках полета.




Комментариев нет:

Отправить комментарий