Тема: Измерение перегрузок действующих на вертолет. Фильтрация сигналов и прочее  (Прочитано 23121 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн kasmirov

  • Сообщений: 1501
    • Карим
    • Смирнов
  • Город: СПб
« : 26 Май, 2016, 12:40:46 pm »
Ватсон:  – Таак... Какие-то иероглифы. 
Холмс:  – Прекрасно, Ватсон! Впереди расшифровка. И пусть мне позавидуют все британские египтологи! 

Итак! Задал я себе задачку построить инерциальную навигационную систему на базе общедоступных комплектующих.
Т.е. снабдить разрабатываемую фбл-ку функциями определения своего положения в пространстве относительно точки взлета. Вопрос совсем непростой, но состоит из кучи интереснейших подзадач.
В итоге фбл-ка должна без помощи gps/glonass записывать свой полет от старта до посадки. Потом можно будет в симе посмотреть риплэй.
Ну и просто получить данные объективного контроля о величине перегрузок, уровне вибраций, скорости вращений по осям и т.д.
Это базовая задача, за ней следуют другие.

Для тестов взял плату stm32f3discovery дополненную sd картой и обвязкой для серв, блютуза и т.д. Ее можно видеть в соседней теме про сервотестер.
Перегрузки я уже мерял в прошлом году с помощью флажков и видеокамеры. Где-то есть соответствующая тема. Измерения акселерометрами должны дать более точный результат.
Измерения производятся с частотой 100Гц, предел измерений по акселерометрам выставлен 8g.
Также пишутся угловые скорости, но об этом потом.
Впрочем первое опробование системы показало, что частоту надо увеличивать раза в 4 минимум и предел измерений тоже маловат.

Первый взгляд на данные несколько удивил. Я конечно понимал, что сигнал будет сильно зашумлен вибрациями, но итоговая картина оказалась для меня полным сюрпризом.
Уровень вибраций превышает полезный сигнал и он просто теряется в таком потоке шума.
Выглядит необработанный сигнал примерно так:

И это в покое!  :D
Для выделения полезной составляющей я решил попробовать несколько методов фильтрации сигнала:
1. скользящее среднее
2. альфа-бета фильтр
3. быстрое преобразование Фурье
4. фильтр Калмана
5. фильтр Маджвика

Данные анализирую в маткаде, методы 1-3 опробовал, есть результаты. Чуть позже выложу сравнение и анализ этих методик.
Для удобства анализа наложил логи на видео полета. Пришлось написать простенькую прогу для этого, но так гораздо проще оценивать результаты.

Итак полет Ярослава и необработанные данные с акселерометров, синхронизированные с видео (графики лучше видно в hd):


Далее будет сравнение разных фильтров, первые приближенные к реальности данные и т.д.


Оффлайн almus

  • Сообщений: 552
« Ответ #1 : 26 Май, 2016, 15:05:33 pm »
Задача, конечно, интересная, но на графиках даже после фильтрации полезного сигнала практически не видно. Пока они подтверждают лишь и так очевидные вещи: в пиках перегрузки не превышают нескольких g, при относительно спокойном полете - практически приближаются к 0. Отшелушить "мусор" с акселерометров в условиях вибраций в широком спектре - очень непростая задача! Слежу с интересом и желаю успеха!

Оффлайн kasmirov

  • Сообщений: 1501
    • Карим
    • Смирнов
  • Город: СПб
« Ответ #2 : 26 Май, 2016, 15:07:56 pm »
Нет тут никакой фильтрации :)
На этом видео только исходные данные для понимания с чем приходится иметь дело. Выше написано.

Оффлайн almus

  • Сообщений: 552
« Ответ #3 : 26 Май, 2016, 16:29:45 pm »
Нет тут никакой фильтрации
Точно! Прошляпил. Тогда шансы есть! :)

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #4 : 26 Май, 2016, 21:23:00 pm »
Ты в основном слушаешь мотор а не борт. Глянь сюда - я тут как раз балансировал винтомоторные группы - там это очевидно вылезло.

http://rcheliclub.ru/index.php?topic=10906.msg202849#msg202849


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

По уму -надо ставить датчик фазы на мотор и потом резать гармоники мотора, шестерни, основного ротора, хвостового ротора. ТОгда останутся только полетные ускорения.

https://www.dropbox.com/s/psj0290xz7m2tg9/%D0%BE%D1%82%D1%87%D0%B5%D1%82%20%D1%83%D0%BB%D0%B5%D0%B9%20717%201%20%D0%B3%D0%BE%D0%B4%202%20%D1%8D%D1%82%D0%B0%D0%BF_%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0.doc?dl=0
« Последнее редактирование: 26 Май, 2016, 21:52:11 pm от AndRay »

Оффлайн kasmirov

  • Сообщений: 1501
    • Карим
    • Смирнов
  • Город: СПб
« Ответ #5 : 27 Май, 2016, 00:28:49 am »
Андрей. Судя по измеряемым частотам не мотор мы слушаем. Слушаем пульсацию потока от ротора, пульсации ветра (была фиговая погода), всякие явления типа флаттера, возможно резонанс элементов конструкции типа кабины и т.д.
Более того, по спектру видно, что частота соответствующая вращению ОР никак не выделяется из фона, значит лопасти у Ярослава отбалансированы хорошо.

Итак, возвращаемся к нашим баранам.

Попробовал три типа фильтрации.
1 - скользящее среднее
2 - комплементарный, он же алфа-бета, фильтр
3 - обратное преобразование Фурье

Кратко по фильтрам:
Первый усредняет данные за предшествующий период измерений. Я использовал 25 и 50 значений, что соответствует 0,25с и 0,5с измерений. На графиках обозначены midx_25 и midx_50.
Не подходит для данного случая.
Второй - тоже усреднение, но с весовыми коэф. альфа и бета, которые определяют насколько влияет история на выдаваемый результат. Работает несколько лучше. Применимо, но для поставленной задачи тоже не айс. Хотя в фбл-ках и коптерных контроллерах его используют. На графиках выбран с оптимальными параметрами и обозначен alfa_beta
Третий. Идея такова: измеряемый сигнал состоит из полезного сигнала об ускорениях вертолета (слабый) и сигнала от вибраций конструкций (сильный). Вибрации имеют синусоидальную (в целом) форму, соответственно если распознать в исходном сигнале синусоиду и вычесть ее, то в остатке получим полезную составляющую. В упрощенном варианте я сделал это путем обратного преобразования Фурье получаем спектр амплитуды ускорений в частотном диапазоне 0-50 Гц. Интересующая нас область 0-2,15Гц, все остальное выкидываем и далаем еще одно преобразование Фурье. Получаем только ту составляющую сигнала, которая имела изначально частоты до 2,15Гц. Сюда попадают управляемые эволюции вертолета, а также вызванные порывами ветра. На графиках h_f_10 фильтр 0-1Гц и h_f_20 фильтр 0-2,15Гц.

Графики (произвольный кусок 512 измерений = 5,12 с полета)
1. Исходные данные

2. Спектр сигнала

3. Сравнение фильтров


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

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #6 : 27 Май, 2016, 01:22:56 am »
Фильтрация Фурье - штука хорошая и правильная, но

Слушаем пульсацию потока от ротора, пульсации ветра

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

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

Есть масса интересных подходов к измерениям, кстати. Ставим на борт полсотни дешевых акселерометров - в 7 раз уменьшаем шум измерений, оставляя только реальное ускорение.

Калман - штука предельно простая. Просто его объясняют плохо, особенно программисты и математики. Лучшая объяснялка - вот тут.

http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

 Огромный плюс - идеально настроенный он не запаздывает. Огромный минус - при неидеальной физмодели превращается в обычный альфа - бета и запаздывает.

Основная идеологическая проблема всех автопилотов - раздельное решение задач измерения и задач управления. Т.е. сначала меряют а потом пытаются рулить...и пытаются зарулить до совершенно непонятного состояния, хотя очевидно что надо сначала решить чего мы хотим добиться,  а потом - как. Т.е. если нам надо зажать координату - нас будет жестко трясти чтобы её удержать. Если нам надо не трясти аппарат - мы будем изрядно плавать по координатам. Одновременно и то и другое недостижимо.

Маджевик - лёгкое шулерство но отлично работает, т.к. магнитное поле неплохо работает одноосевым гироскопом. У народа, правда, квадрик на маджевике переворачивался на 360 временами. Либо где-то знак забыли либо оси перепутали.

Оффлайн almus

  • Сообщений: 552
« Ответ #7 : 27 Май, 2016, 06:40:01 am »
Судя по измеряемым частотам не мотор мы слушаем. Слушаем пульсацию потока от ротора, пульсации ветра
Можно повторить измерения на столе со снятыми лопастями. Уверен, принципиально картина не изменится! Вибрации механики на вертолете являются наиболее сильной составляющей, как ее не балансируй, причем они вызывают вторичные вибрации рамы, балки и прочих элементов конструкции, что приводит к очень сложному спектру.

Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #8 : 27 Май, 2016, 09:53:30 am »
Побалансировать можно, просто это надо делать на динамическом стенде. Мотор, главная пара, хвостовой ротор. Ну кто у нас балансирует хвост? В несколько раз амплитуду вибрации вполне можно снизить. Но, похоже, в автопилотных схемах датчики угловых скоростей играют более важную роль, чем датчики линейных ускорений.

Оффлайн Vovets

  • Сообщений: 465
  • Владимир
    • Владимир
    • Красовский
  • Город: Москва
« Ответ #9 : 27 Май, 2016, 18:30:04 pm »
3 - обратное преобразование Фурье
Оно, вроде, много точек требует? Т.е. вносит большую задержку. А при этом всего лишь работает как ФНЧ. Я помню в конце института немного занимался цифровыми фильтрами. Помню можно было рассчитать неплохие (в смысле с достаточно крутой характеристикой) БИХ ФНЧ на 5 точек. Я пытался их сам рассчитывать, сейчас, наверное, готовые программы есть.
С уважением, Владимир.

Оффлайн kasmirov

  • Сообщений: 1501
    • Карим
    • Смирнов
  • Город: СПб
« Ответ #10 : 28 Май, 2016, 01:20:07 am »
3 - обратное преобразование Фурье
Оно, вроде, много точек требует? Т.е. вносит большую задержку. А при этом всего лишь работает как ФНЧ. Я помню в конце института немного занимался цифровыми фильтрами. Помню можно было рассчитать неплохие (в смысле с достаточно крутой характеристикой) БИХ ФНЧ на 5 точек. Я пытался их сам рассчитывать, сейчас, наверное, готовые программы есть.
Фурье требует 2 в степени N точек. Я брал 1024. Можно меньше. Это 10с, фактически инициализация контроллера.
На выходе получаем половину, т.е. 512. Задержку можно убрать или сильно уменьшить добивая недостающие данные нулями. Т.е. использовать 512 измеренных точек, дополненных 512 нулями.
Тогда фильтр выдаст значение совсем без задержки. Если допустить возможную скорость отклика фильтра 0,1с при существующей частоте 100Гц, то получится 522 измерения дополненных 502 нулями.
Можно увеличить частоту опроса, таким образом увеличим количество реальных измерений. Это я еще не проверял.
Я первый раз с цифровыми фильтрами работаю. Много нового еще предстоит узнать.




Оффлайн AndRay

  • Старейшина клуба
  • Сообщений: 3574
    • Андрей
  • Город: Свято-Питер
« Ответ #11 : 28 Май, 2016, 10:08:42 am »
Самое простое на первом этапе - к контроллеру приделать грузик их вместе в поролон завернуть  :)

Оффлайн Vovets

  • Сообщений: 465
  • Владимир
    • Владимир
    • Красовский
  • Город: Москва
« Ответ #12 : 30 Май, 2016, 17:27:38 pm »
к контроллеру приделать грузик

Кстати да, ещё же есть такой момент, что в аналоговом сигнале не должно быть частот выше половины частоты дискретизации, иначе оно же заворачивается. Т.е. аналоговый ФНЧ обязателен. Либо повышать частоту дискретизации, только опять же, до какого предела?
С уважением, Владимир.

Оффлайн kasmirov

  • Сообщений: 1501
    • Карим
    • Смирнов
  • Город: СПб
« Ответ #13 : 30 Май, 2016, 18:00:48 pm »
к контроллеру приделать грузик

Кстати да, ещё же есть такой момент, что в аналоговом сигнале не должно быть частот выше половины частоты дискретизации, иначе оно же заворачивается. Т.е. аналоговый ФНЧ обязателен. Либо повышать частоту дискретизации, только опять же, до какого предела?
По теореме Котельникова частота дискретизации должна быть как минимум в два раза выше от верхней частоты спектра полезного сигнала.
В моем случае полоса пропускания 50 Гц, т.к. опрос 100 Гц.
У CD audio 44,1 кГц и 22,050 кГц
Меня интересуют частоты 0-2 Гц. Все остальное может и должно быть отброшено.
Следующий эксперимент будет на 400Гц. Т.е. 200 Гц верхняя граница измерения.
Думаю это добавит точности или скорости при вычислении БПФ.

А так можно делать забавный вывод, что если мне нужен верхний предел измерения 2Гц, то сделать частоту дискретизации 4Гц и ничего не обрезать. :)
Но поскольку точность фильтра зависит от количества данных = 2^N, то просто уйдет больше времени на их получение, соответственно фильтр будет работать с сильным отставанием.
Дополнительно аналоговые фильтры не нужны.
Да и поставить некуда. :) Цепь такая: цифровой акселерометр - вход контроллера.

Кстати, Андрей прав, сигналы с гиры сильно лучше данных с акселей. И их намного проще обрабатывать. У них соотношение сигнал-шум 90/10, у акселерометров 20/80.
Но ни имеют дрейф во времени. Есть куча статей и патентов по поводу коррекции дрейфа за счет акселерометров. Но все это применимо, когда полет без перегрузок. Или глобальное позиционирование используется.


Оффлайн Vovets

  • Сообщений: 465
  • Владимир
    • Владимир
    • Красовский
  • Город: Москва
« Ответ #14 : 30 Май, 2016, 18:08:16 pm »
Карим, почитай подробнее про явление под названием "aliasing". Извини, не помню как по-русски. В любом серьёзном учебнике по цифровым фильтрам. Если кратко, то переход к дискретному времени приводит к тому, что спектр сигнала с частотами выше Котельникова отображается на твой спектр от нуля до Котельникова. Это на самом деле тесно связано с теоремой Котельникова. Свойство самого перехода к дискретному времени.
С уважением, Владимир.