Smalltim OSD and autopilot (часть 2)

baychi
AlexSneg:

строим цифровой фильтр и вырезаем гармонику раскачки,

Что такой гамоника раскачки? И зачем ее выделять через ДПФ, если алгоритм сам раскачивает модель?

AlexSneg:

за одно и вибрации, на ходу прямо из сигнала горизонта.

Вибрации выделить можно, но ИМХО проще их сразу давить ФНЧ.

AlexSneg
baychi:

И зачем ее выделять через ДПФ

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

baychi:

сразу давить ФНЧ

ФНЧ на сигналы датчиков или ФНЧ на результирующий сигнал горизонта?

baychi
AlexSneg:

чтобы сразу понять куда подкручивать коэффициенты усиления воздействия на серву.

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

AlexSneg:

ФНЧ на сигналы датчиков

Да, ФНЧ над исходными измерения гироскопов.

AlexSneg
baychi:

И разве сам по себе ПИД алгоритм при правильной настройке не должнен гасить раскачку?

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

baychi:

ФНЧ над исходными измерения гироскопов.

Какую частоту дискретизации мы имеем на гироскопе в данном случае? 400 герц? А предполагаемая частота вибрации двигателя, диапазон? Вы ж понимаете Александр, что частоты более, чем половина частоты дискретизации уже и так задавлены в сигнале гироскопа? А те, что выше дискретизации вообще уже на уровне белого шума.

baychi
AlexSneg:

400 герц? А предполагаемая частота вибрации двигателя, диапазон?

От 50 до 200 Гц на движках с КV порядка 1000 об./мин. До 400-500 Гц на высокооборотистых. Но могут быть еще гармоники, как вверх так и вниз по спектру.

AlexSneg:

что частоты более, чем половина частоты дискретизации уже и так задавлены в сигнале гироскопа?

Там слабый аппаратный ФНЧ, 1-го порядка, ИМХО.

AlexSneg:

А те, что выше дискретизации вообще уже на уровне белого шума.

Это почему? Все что попадает в окно 0-200 Гц и не сильно задавлено аппаратно, будет видно в результате ДПФ. Например вибрация в 250 Гц будет видна, как ослабленная 150 Гц, 900 Гц, как 100 и т. д. Потому и предлагаю - сразу давить цифровым ФНЧ, все что можем себе позволить, не теряя в скорости отклика.

Creator991

ДЯдьки! вы или слишком умные или воду сквозь пальцы льете! Тимофей читает все ваши домыслы и наверно катается от смеха!!!

serj

Александр, алгоритм вычисления углов по гироскопу- это же ИНТЕГРАТОР… ничего там фильтровать не надо, оно и так все отфильтровано. 😃
Причина не в гироскопах, а “уплывании нуля” акселерометров при превышении уровня вибраций диапазона измерения - акселерометр превращается в нелинейный детектор. Гироскопы тоже начинают врать, но позже. и фильтрами это не исправить.

smalltim

Коллеги, FFT - это, конечно, хорошо, но в данном случае это, по-моему, чуть в сторону от того, что надо. Если есть колебания с частотой, выше или равной и, главное, кратной частоте сэмплирования, то хоть убейся, ничего не нафильтруешь.
Мне кажется, мы на ИМУ ловим на деталях конструкции модели baychi гармоники по крутильным колебаниям (а не по акселерометрам, иначе с чего вдруг ему удалось горизонт скривить больше чем на 90 градусов). И ловим их как раз на биениях. Обороты выше/ниже - привет, всё хорошо.
От такого можно спастись сэмплированием на реально дикой частоте, но на такой частоте на моем Cortex M3 не вертится математика 😃
Можно сэмплировать часто, делать даже простейшую фильтрацию на лету и скармливать (сравнительно) медленно вертящейся математике. Но всегда найдется модель, на которой что-нибудь вылезет на какой-нибудь жуткой гармонике, и опять всё снова.
Не проще ли потратить силы на что-то более полезное, а тем, у кого реально вдруг появились проблемы с вибрацией, постоветовать меры для снижения вибропомех, применяемые вертолетчиками уже сто лет: “подвесить” ИМУшку и увеличить “подвешенную” массу. Т .е. закрепить на масиивную (массивную! 10-15 грамм - для ИМУшки уже массивная!) медную/латунную/алюминиевую пластину, а ту, в свою очередь, приклеить на толствй виброгасящий скотч.

На меньших частотах всё хорошо, математика самого комплементарного фильтра прекрасно давит взбрыкивания.

Применять FFT для подавления колебаний из-за неправильно настроенного ПИД - тоже из пушки по воробьям. Есть миллион и одна методика настройки ПИД, и знание (вычисление в полете, задание заранее, приблизительная оценка) сил, моментов инерции и демпфирующих свойств модели даст гораздо больше для принятия правильного решения, чем спектр сигнала с гиро.
Понимаю, выстроить характеристики исполнительных механизмов и модели как системы в целом, подав воздействие и пронаблюдав реакцию - это самое то для правильной настройки. Но FFT? Не знаю. Оно, конечно, вычислительно недорого и много, наверное, даст, но что-то голова у меня не включается в ту сторону.
Я думаю о том, что, воздействуя и меряя, помимо этого, надо еще и модель не уронить, и пилота не напугать, и на разных скоростях-высотах и в разное время (полный бак-пустой бак) это даст разные результаты, поэтому оценку характеристик надо встраивать в саму математику управления. И автоподстройкой Ку и хитрым I я делаю первые приблизительные попытки, потом будем двигаться дальше.
И мне б вот классную навигацию скорее запилить, пока мысли не разбежались 😃

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

msv

Идентификация объекта управления на основе исследования его фазо-частотных характеристик- классика ТАУ, например www.bookasutp.ru/Chapter5_1_3.aspx#FrequencyIdenti…. Однако, уже намекал, применить это для авиамодели не так просто… Её передаточные функции зависят от многих режимов полета. Например ПХ крена может существенно меняться от воздушная скорости, газа (обдува рулевых поверхностей), тангажа, etc… Все это многообразие зависимостей все равно заставит искать некий компромисс, что, в моем представлении, для поиска идеального решения, безумно сложно. Недаром до сих пор не выработано четкого аналитического решения расчета даже банального ПИДа, а многообразие алгоритмов настройки только подчеркивают сложность проблемы. И пока для многих объектов управления подбор коэффициентов ПИДа ручками (естественно с пониманием чего от этого ждать) и визуального наблюдение за его поведением, дает лучшие результаты, чем трехэтажные мат. построения… ИМХО.

AlexSneg
serj:

алгоритм вычисления углов по гироскопу- это же ИНТЕГРАТОР… ничего там фильтровать

Согласен, на это и хотел намекнуть Александру. И с тем, что проблема как раз в акселерометром согласен, он как раз тупо врать начинает, показывать лажу всякую. Я это абсолютно четко отслеживал когда ставил эксперименты с отключением и включением магнетометра. Гира+Аксель получается лучше в статике, а гира + аксель+маг, существенно лучше в динамике и при наличии тряски.

smalltim:

Но FFT? Не знаю

Я эту тему поднял, потому как твоя мысль про интегратор с ограничением, это как раз и есть попытка сделать то же самое только во временной области. А зачем делать во временной, если в частотной все гораздо проще произойдет.

А вообще ты прав, делай лучше навигацию. Я тоже с ней колупаюсь сейчас. А с параметрами чего-нибудь потом придумаем.

msv:

классика ТАУ, например

Интересная статейка. Как раз те мысли, которые у меня в голове интуитивно крутились.

Oliver
smalltim:

Мне кажется, мы на ИМУ ловим на деталях конструкции модели baychi гармоники по крутильным колебаниям

smalltim:

И мне б вот классную навигацию скорее запилить

smalltim:

Эдуард, а что конкретно не понравилось? Как-то непонятно горизонт внаклонке остался? Да, это странно, от 0:57 до 1.10. Дальше выправилось. Похоже, коррекция центробежных ускорений по ГПС до ИМУ дошла с торможением.

Блин, а мне бы видео наших полетов 8-14 мая нарезать. Летали много и плодотворно. Крайние два полета в одном и том же месте поймали характерный уход горизонта почти под 60. Судя по всему тоже на конкретных оборотах. Также несколько раз словили небольшой, около 10 градусов временный уход и корректировку его через пару секунд. Поймали странное поведение при походе на точку (а в крайнем полете - и домой) - покачивание вправо-влево из-за постоянного “промахивания” мимо нужного направления, возможно надо добавить чувствительности по крену. Поймали невозврат домой после последней точки. Поймали странное неудержание скорости, вернее ниже не опускается, а вот выше - разгоняет чуть ли не до 100кмч. И поймали попытку все же полететь домой после того, как после аварийной посадки мотор выключился и все замерло.

О хорошем как правило не пишут. Я - напишу. 😃 Все началось с того, что ИМУ пришла, была воткнута в пилот, откалибрована в КП и… запущена в небо. Больше НИКАКИХ настроек не делалось. В стабилизации полетело сразу и больше с тех пор скай в ручном режиме не летал вообще. Раньше пилот стоял с пультом на старте, а помощник (я) запускал скай чуть ли не с разбегу, т.к. при неровном броске, да еще при провале на старте можно было завалиться в траву. Теперь мне счастье - в стабилизации пилот бросает ская сам и никакая просадка не страшна, т.к. крен держится ровно при любом броске. Просто счастье. 😃 В принципе на аппе команда “ручной режим” была заменена на полет по точкам. Домой полетело тоже сразу, но неуверенно. Добавили чувствительность по курсу до 120%, упреждение гпс - до 2-х секунд, заодно, раз уж подключили КП, уменьшили допустимый тангаж вниз, идти к целевой высоте по прямой (“сразу занимать целевую” на почти 3кг скае выглядит стремно), уменьшили целевой газ и поставили удержание скорости. ВСЕ! Ни настройки чувствительности, ни демпфирование, ни рассогласование, да вообще, больше НИЧЕГО не менялось. Теперь даже не могу заставить пилота поменять курс с ГПС на компас. Заявлено: “меня ВСЕ устраивает, зачем что-то менять???”.
Выполнены первые на этом скае полеты на дальность, на высоту, полеты по точкам, даже одна аварийная посадка из-за севшей батареи. Впечатления почти все положительные. За исключением остальных впечатлений самого пилота, которые можно описать только словом “восторг”. 😃
Нет, конечно надо допилить и устранить неясности. Но даже в текущем состоянии безбоязненно ушли на 4км из которых 1км - над заливом. При этом были уверены - щелчок на пульте - и он вернется. Впереди, думаю, полеты за облака, в облаках очень не хватало приборов и нормального горизонта. Теперь - есть.

river3
Oliver:

Заявлено: “меня ВСЕ устраивает, зачем что-то менять???”.

Папробуем, всё паробуем 😛

Алексей_Сергеевич
smalltim:

Не проще ли потратить силы на что-то более полезное, а тем, у кого реально вдруг появились проблемы с вибрацией, постоветовать меры для снижения вибропомех, применяемые вертолетчиками уже сто лет: “подвесить” ИМУшку и увеличить “подвешенную” массу. Т .е. закрепить на масиивную (массивную! 10-15 грамм - для ИМУшки уже массивная!) медную/латунную/алюминиевую пластину, а ту, в свою очередь, приклеить на толствй виброгасящий скотч.

Кстати это оказалось довольно проблематично… А виной всему много “лишних” жестких проводов. Я устанавливал имушку на 5мм поролон- вибраций на нём нет вообще, хватает её собственной массы для демпфирования, но бухта с проводами как штырь для нее… И ладно бы если только вибрации передавала бы, так она еще и перекашивает плату имушки относительно плоскости крыла (поролончик то мягкий). Вобщем если бы в комплекте с имушкой шёл второй запасной разъемчик, то я бы наверное припаял к нему тончайшие мягкие проводочки только для связи с автопилотом, а разъем с остальными проводами бы оставил бы дома для программирования и т.д.
Скорее всего так и сделаю- подпаяюсь прямо к плате тонкими проводочками типа МГТФ 0,07, а разъем с проводами отстегну.

Prodigy
Алексей_Сергеевич:

Вобщем если бы в комплекте с имушкой шёл второй запасной разъемчик, то я бы наверное припаял к нему тончайшие мягкие проводочки только для связи с автопилотом, а разъем с остальными проводами бы оставил бы дома для программирования и т.д.
Скорее всего так и сделаю- подпаяюсь прямо к плате тонкими проводочками типа МГТФ 0,07, а разъем с проводами отстегну.

Вот сегодня то же самое родилось в голове. Только я решил сделать виброгаситель, как на Вовиной телеметрии, и на неподвижной части сделать контактную площадку, от площадки идут провода стоковые на АП, и на IMU тонкие проводки.

Dareck

Дабы охладить пыл математиков 😁
дана пицца радиусом - Z, а толщиной - а
тогда объем V=PiZZa

serj

В этом смысле очень грамотно сделаны Наза и Вуконг.
Инерциальный модуль маленький, с грузиком в 8г , на мягкой пенке и подключен тонким плоским печатным кабелем.

Oliver
river3:

Первая часть полёта с ИМУ

Обогнал. Вимео кодирует медленнее. 😃

Тоже начну выкладывать нарезки технического видео из тех полетов.
В отличии от красоты Сергея я опишу, на что обратили внимание.
Сначала самое обсуждаемое - уход горизонта из-за вибрации.
Два полета, в оба полета при определенном уровне газа начинается раскачка горизонта и заваливание. Через пару секунд выравнивается, но если оставить газ в том же состоянии - раскачивается опять…

Еще сегодня покажу невозврат домой после последней точки.
В видеоотрывке - идем на последнюю точку, доходим, сбрасываем высоту до заданной высоты точки (350м) и после этого старательно удаляемся попой к базе с небольшим снижением. АП пишет, что АВ активен, стабилизация бдит, все хорошо, но попой к базе. 😃 Нервы не выдерживают, выключаем АП, поворачиваем носом к базе, включаем принудительный АВ, сообразил, полетел.

smalltim
Oliver:

Два полета, в оба полета при определенном уровне газа начинается раскачка горизонта и заваливание. Через пару секунд выравнивается, но если оставить газ в том же состоянии - раскачивается опять…

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

Oliver:

Еще сегодня покажу невозврат домой после последней точки. В видеоотрывке - идем на последнюю точку, доходим, сбрасываем высоту до заданной высоты точки (350м) и после этого старательно удаляемся попой к базе с небольшим снижением. АП пишет, что АВ активен, стабилизация бдит, все хорошо, но попой к базе.

Вот сколько людей пробовало, столько и мнений появилось о работе полета по точкам. У кого-то всё хорошо, у кого-то всё хорошо, но после крайней точки не идет домой, а у кого-то хаотически точки перебирает вместо полета по порядку.
Новая навигация. Это, в общем-то и есть следующая цель в прошивке АП.

Запилил интегральные компоненты, дополнительное управление РВ в поворотах, отдал прошивку и панельку Слону и baychi на растерзание.

Что сделано:

  1. Как и описал, введены интегральные компоненты в систему удержания требуемой ориентации модели. Никаких лишних настроек, ничего смущающего обычного пользователя.
    Интегральные - они вредные, поэтому обложил флажками со всех сторон, чтоб не выходили из-под контроля:
    – Нарастание до сделал медленным, около 5 секунд до ограничения.
    – Ограничение идет по фактической величине пропорциональной реакции (задается параметрами Чувствительность по крену/тангажу).

Математика - это сложно, проще объяснить, как это выглядит: держим модель в руках, или ставим на пол горизонтально. Хотим правого крена в стабилизации. Наклоняем стик. Элероны отклоняются. Но модель - не в воздухе, не наклоняется. АП плавно, в течение 5 секунд доводит элероны до двойной величины от первоначального отклонения.
Берем модель в руку и наклоняем в ту сторону, что задали с пульта. Элероны встают вровень: наклон-такой как надо, интегральный компонент тихо и моментально исчез.
Чем это полезно? На мягких настройках, при сильном ветре, кривой центровке, бывает, недостаточно резкости настроек по крену или по тангажу, чтобы держать требуемые углы. Теперь, если что, АП додавит модель по крену и по тангажу до нужных углов.

  1. Введено дополнительное управление РВ в поворотах вдобавок к штатной механике, удерживаающей тангаж на требуемом уровне. Теперь можно задавать из Контрольной Панели, чтоб АП добавлял немного ( доступен выбор от +0 до +200%, по умолчанию 30%) отклонения РВ вверх при поворотах, для скоординированных или более быстрых и плотных поворотов.
    АП, разумеется, не просто тупо поднимает РВ, когда надо делать поворот. Так делать не надо 😃
    Математически добавка выглядит как добавка_в_РВ=sin(min(abs(текущий крен),abs(требуемый крен)))*коэффициент_в_контрольной_панели.

По смыслу выглядит так: чем сильнее крен, тем больше добавляем РВ, с оглядкой, конечно, на установленный в Контрольной Панели процент.
Если Вы хотите повернуть, а модель еще не в крене - добавки к РВ не будет, зачем просто так, без крена поднимать РВ?
Если модель в крене, а Вы не хотите поворачивать - добавки к РВ не будет, зачем добавлять РВ, когда Вы не командуете поворот?

msv
smalltim:

интегральный компонент тихо и моментально исчез

Что значит моментально? Обнуляете интегратор? Сомнительная (имхо неверная) логика… Даже разные скорости для увеличения/уменьшения интегральной ошибки на моем примитивном симе показало значительное ухудшение неустойчивости для одних и тех же Кpid, по сравнению с обычной И-веткой с неизменяемой постоянной времени.
Ограничения интегратора безусловно полезны, мало-ли… задаю в явном виде в % от максимальных расходов (практически оказалось достаточно 20-30%, зависит от коэффициента избыточной устойчивости носителя ).
Еще рекомендую на OSD показывать не только текущий но и целевой горизонт. Очень наглядно становится видна работа стабилизации и понятно что, в какую сторону, крутить.

river3

Тим у меня такой вопрос, как то странно у меня на тумблере стоит так.

  1. Ручка
  2. Стаб.
  3. АП
  4. КК
  5. Точки

включаю самолет стоит ручной режим, самолет стоит в ручном режиме.
перехожу на стаб,… переходит
перехожу на АП ,… переходит
опять перехожу на стаб , а потом на ручку и самик остаётся в режиме стаба 😒

если сделать так

  1. Стаб.
  2. АП
  3. Ручка
  4. КК
  5. Точки

а если переходить с АП сразу на ручку, то всё нормально, режим срабатывает.
Это проблема или глюк у меня какой-то.???😃

продолжение