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

smalltim

Коллеги, работаю над улучшением логики АП в части навигации - реализую helmsman алгоритм для полета по прямым и кругам вокруг точек.
Помимо этого добавляю жестко задавленные I-ветви в PD-контроллеры по крену и тангажу. Будет выглядеть как самоподстраивающиеся P - чувствительность.
Помимо этого D-демпфирование собираюсь задавливать , глядя на перегрузки и колебания по крену и тангажу.
Плюс, небольшой фикс, улучшающий качество поворотов: цель - делать скоординированные повороты, а не абы как.

Dareck
DmitryK:

А мне гораздо важнее второй управляющий канал. экраны в полете вообще не переключаю. Или может кто подскажет, как из двух тумблеров собрать5 положений и не запутаться:). Аппа старенькая JR 388. Тумблеры жестко привязаны к функциям. Переназначений нет, логических свичей тоже нет. Есть два или три свободных микса…
Хотелось бы на одном мануал, стаб, АП, а на втором КК и ПКТ.

Здаётся мне батенька, на такой аппе много не слепиш, если свичи не на два положения

smalltim

В общем, идея такова: повысить качество управления, избавить вас от необходимости заботиться о перегрузках, переруливании на больших скоростях, недостаточной управляемости на маленьких,
в общем, долго подбирать чувствительность и демпфирование.

  1. Добавляю интегральные ветви в PD контроллеры по крену и тангажу. Интегральный член ведет себя как обычно, медленно растет, когда ему надо расти, и не растет, когда не надо. Нанайская хитрость в том, что он всегда ограничен величиной 2*P. То есть, теоретически, нет никакого overshoot из-за интегрального члена: он моментально нулится как только пропорциональный член нулится. Но и абсолютно точного приведения в целевой угол тоже, всё-таки, не будет - такова цена за устойчивость и безопасность. Пока меня такой вариант устраивает, может быть, придумаю еще что-нибудь похитрее.

В полете это должно выглядеть так: сильный ветер либо кривая модель либо мало чувствительности задали - модель не хочет входить в требуемый крен, скажем, 45 градусов. Входит в 20 и всё. За 2-3 секунды вырастает интегральный компонент и додавливает крен в нужную сторону. При приближении к 45 градусам, скажем, на 40 градусах, разница между текущим и требуемым креном падает до 5 градусов, уменьшается пропорциональный компонент, уменьшается и интегральный компонент - он ограничен: I всегда меньше или равно 2*P. В итоге к 45 градусам мы так и не пришли, но и не остались на 20 градусах.
По сути выглядит как адаптивный контроль чувствительности в диапазоне от стартовой, заданной в Контрольной панели, до 3*стартовая.
Пока не вижу причин, по которым введение такого интегрального должно снизить устойчивость управления и вызвать, напрмер, колебания, но прошивку АП с этой штукой обозначу как экспериментальную.

  1. По перегрузкам (по тангажу - с акселерометра, по крену - с датчика угловой скорости по крену) мониторю вибрации и раскачку. Цель - снизить коэффициенты усиления всех ветвей, P,I,D, по крену и тангажу, при возникновении перегрузок и раскачки.
    Механизм следующий. Заводится переменная, скажем, Множитель, которая по умолчанию = 1. При наличии перегрузок, раскачек и колебаний каждый цикл автопилота (~100 раз в секунду) я этот множитель уменьшаю на 0.01. При этом, чтобы сохранить управляемость, Множитель не должен опускаться ниже, скажем, 0.25.
    Помимо этого, в каждом цикле автопилота этот Множитель увеличивается обратно на 0.005 вне зависимости от всяких условий.
    В итоге Множитель в обычном полете равен 1, а на больших скоростях автоматом находится равновесие между уменьшением и увеличением Множителя и обеспечивается его величина, сохраняющая управляемость на грани раскачки - перегрузок.
    Критерием снижения Множителя является наличие мгновенных перегрузок выше 1G по вертикальной оси и интегральный уровень шума по крену, рапортуемый ИМУ, выше определенной величины.
    Если б все имели телеметрию и бародатчик скорости, то можно было бы не заморачиваться, а пересчитать коэффициенты управления, глядя на скорость модели в воздухе - есть четкая зависимость между скоростью и эффективностью рулевых плоскостей, но, к сожалалению, бародатчики скорости есть не у всех 😦

  2. На моделях типа Ская есть четкая тенденция к слишком медленным поворотам в стабилизации и автономном полете, что вызывает желание повышать допустимые углы крена, чувствительность по крену, миксовать руддер и т.д. На моделях типа летающее крыло с задней центровкой есть тенденция к потере высоты на поворотах. Проблема вылезает из 2 вещей:
    а: При наклоне стика крена АП просто выставляет требуемый угол крена, выставляет нулевой тангаж и следит за креном и тангажом. Расчет идет на то, что в крене модель начнет естественным образом поворачивать из-за аэродинамических свойств и на то, что в крене модель начнет опускать нос, что вызовет реакцию АП по тангажу в виде поднятия РВ.
    Так вот, нос опускается не всегда настолько, что реакция АП по РВ оказывает серьезную помощь в повороте. Крыло, например, может просто соскальзывать внутрь круга, не меняя тангажа но теряя высоту.
    б: Реакция АП по тангажу на данным момент задавлена с оглядкой на текущий крен: чем больше крен, тем меньше реакция по тангажу. Сделано из-за опасности войти в плотную спираль и не выйти из нее при возврате на базу с низкой высоты: РВ полнимается вверх, и не дает модели выйти из спирали. Так вот, душить надо было не реакцию АП по тангажу, а требуемый угол тангажа. Исправлено.
    Решение проблемы: добиться выполнения скоординированного поворота. Поскольку ИМУ есть не у всех, и четко вымерять угловые скорости смогут не все АП, делаю так: при требуемом крене Х я во всё, посчитанное АП для РВ, добавляю положительное отклонение вида X% * sin(текущий крен). Х задается из Контрольной Панели, он разный для разных моделей, и ожидается в районе 20-40%. В итоге РВ автоматически будет помогать делать красивые плотные повороты без потери высоты.

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

serj

Тим, по крену так не надо. Нет такой устойчивости по крену ( V поперечное не 45 градусов), и демпфирование очень сильное аэродинамическое.
Если мы задали недостаточный момент элеронами, например не 30 гр/с а всего 10, то ничего страшного, через 4с у нас будет 40 градусов крена а через 18- полубочка )

Chicho

Тимофей ,ну у вас и голова,я понял из всего примерно чуть больше половины)))) Всех благ и успехов!!!

serj

Когда я “руками” пытался моделировать такой поворот на як-18Т как описываешь ты, мне инструктор сказал что “у тебя половина пассажиров к концу полета проблюется, особенно те что сзади сидят” 😃 Надо обязательно рулить и рулем направления тоже. Индикатор скольжения у нас есть, можно его просто вытащить в телеметрию, чтобы люди настраивались по нему, или сделать отдельный регулятор, как это сделано в микропилоте.

Зы : не стоит думать что у Тимофея одна голова 😃

smalltim
serj:

Тим, по крену так не надо. Нет такой устойчивости по крену ( V поперечное не 45 градусов), и демпфирование очень сильное аэродинамическое. Если мы задали недостаточный момент элеронами, например не 30 гр/с а всего 10, то ничего страшного, через 4с у нас будет 40 градусов крена а через 18- полубочка )

Сергей, тут как раз идет борьба с недостаточной величиной P, и сильной устойчивостью модели по крену. I в том виде, что я написал, это, в случае проблемы с недоворотом, по сути просто увеличенный в 3 раза P, что нам, в общем, и надо. Если позволить I расти медленно, 3-5 секунд или больше, то и колебаний не будет.

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

serj

Для летающих крыльев в развороте надо просто отклонять один элерон 😃

smalltim
serj:

Зы : не стоит думать что у Тимофея одна голова

У меня голова, но этого мало. Есть еще мои коллеги, форум, гугл и знание английского языка. А этого уже хватает 😃

serj:

“у тебя половина пассажиров к концу полета проблюется, особенно те что сзади сидят”

Ну, мы пассажиров не возим, нам пофигу.

serj:

Надо обязательно рулить и рулем направления тоже.

АП руддером пока ВООБЩЕ не рулит. То есть, у него есть просто понятие что делать, когда надо крен, и это задается на калибровке команд. Не такая уж серьезная проблема пока, но да, в идеале должен.

serj:

Индикатор скольжения у нас есть,

Как я могу детектировать скольжение? Математикой, зная воздушную скорость и угловые скорости по осям в системе координат ИМУ? Да, я приблизительно представляю, как, но не втыкаю, как именно. Подскажешь, если не военная тайна? И бародатчик скорости есть не у всех 😦
Давно хотел спросить, мне моей головы почему-то не хватает для просветления: а что надо мониторить/управлять, чтобы поддерживать именно скоординированный поворот?

serj

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

Пассажиры блюют при некоординированном развороте. 😃 посему для его выполнения рулить руддером НАДО.

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

Индикатор скольжения - как в самолете - поперечный акселерометр.

www.aerochayka.ru/disc/teorija/…/AD11.htm

smalltim

Осмысливаю. Про руление руддером - да, пора, пожалуй, вводить управление руддером.

serj:

Даже отклонение на 1.5мм по задней кромке элеронов на несколько секунд приведет к желаемому крену.

Это я пытаюсь донести коллегам, что считают отклонения плоскостей в стабилизации маленькими.

serj:

ограничение I- компоненты в зависимости от P сделают квадратичной характеристику регулятора

Не уверен, что это так. Он, по-прежнему, линейный, с Ку от 1 до 3.

Edward_tlt

Полетал сегодня. Так как угол тангажа не удалось уменьшить до -10, то поставил резкость 10%. Вообщем всё гуд, даже маленький рекорд для себя установил, 3км отдаление и 1км высоты. Был один не понятный момент, пока всячески испытывал возврат. Вот он

Можно было конечно подождать как дальше себя ап поведёт, но что то я решил переключиться на ст.

smalltim

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

KBV

А если в стабилизации дать ток 40А (как сделал автопилот) или, как вариант, ограничить макс ток автономного полета скажем 20А ?

Edward_tlt
smalltim:

Кабель до ИМУ у Вас не удлинен? Свейте его слегка.

Тим, с интересом почитал полный текст сообщения ещё до редактирования:) Кабель не удлиннён, свить попробую но когда моя ИМУшка придёт. Летаю на чужой пока… Офф: у моей статус “сортировка в Москве” с 4го числа, емс блин:)
А по делу: В этом полёте “коррекция рассогласования датчиков” стояла 15, это я поставил начитавшись инструкции:) Потом поменял на 20 и далее так и летал. Записи последнего полёта нету, но меня всё устроило:) И если хочется проверить какие то идеи, может вам сделать раздел на своём сайте с бета-прошивками? Кому интересно могли бы поучаствовать в тестировании.

baychi
smalltim:

есть очень большой соблазн перейти на управление моделью не углами, а угловыми скоростями,

Имеется в виду так называемая - 3D стабилизация? Когда работает только дифф. составляющая гироскопов?
Это полезный режим - но только не вместо обычной стабилизации, а как дополнение.

Полетал вчерась вслаcть с альтернативной прошивкой. В основном тестировал режим управления газом в зависимости от тангажа. ИМХО - получилось неплохо, предлагаю добавить этот режим как еще одини вариант к варианту управления скоростью, можно даже вместо режима существующего управления газом. Преимущества данного способа - независимость от измерения скорости по GPS или баро. А по экономичности он лишь немного проигрывает режиму удержания скорости.

Вот видео:
Тест IMU от Smalltim альтернативная прошивка

На последнем RTH акк разряжен до неприличия (комментарий на клипе затерся).

По IMU замечу, что на первый план выходит борьба с вибрациями. Понятно, что лучше бороться с причниой, чем со следствиями - балансировать ВМГ, ставить IMU на специальные виброгасящие площадки и т.п. Но ИМХО, всего этого может оказаться недостаточно для массового изделия. Поэтому предлагаю вернуться к вопросу программной фильтрации вибрации в алгоритме IMU. Понятно, что любой фильтр даст дополнительную задержку (половина длины фильтра для КИХ), но так ли велика будет эта задержка? При 200 Гц опросе гироскопов (если не ошибаюсь), задержка в 50 мс - это КИХ фильтр на 20 шагов. Как режекторный или ФНЧ он способен срезать вибрации с частотами от 10 до 100 Гц с ослаблением на 20-30 дБ. Не берусь предсказать, насколько это ухудшит динамику, но чувствительность к вибрациям движка будет значительно ниже. Может стоит добавить такой фильтр, как опцию?
И еще по вибрациям очень не хватает обратной связи: вывода каких либо показателей на OSD. Трудно бороться с тем чего не видишь на земле. 😃

Creator991
baychi:

Полетал вчерась вслаcть с альтернативной прошивкой

очень хорошо! где скачать и как задаются данные коридора управления газом? (в КП?) меня очень напрягает когда АП (принудительный АВ)с высоты 200метров врубает газ на 100% и снижается на 100 метров!!😃 Ощющение, что щас крылья сложаться!

Edward_tlt

Я тож готов потестить альтернативные прошивки

baychi
FiLial:

металко валидол на посадке не повредилось?

Не. Она же раз в 10 крепче Изи, а он не пострадал. 😃

Creator991:

где скачать и как задаются данные коридора управления газом?

Пока это нигде скачать нельзя. Вот добавит Тимофей это в официальный релиз…

Creator991:

меня очень напрягает когда АП (принудительный АВ)с высоты 200метров врубает газ на 100% и снижается на 100 метров!!

АП стартует с газом равным параметру “Целевой газ”. Затем действует по обстоятельствам - в режиме “удержания скорости” будет снижать, а в существующем режиме “управление газом” остваит этот газ. Поставьте себе небольшое значени “целевого газа” и станет лучше.

smalltim
Edward_tlt:

Тим, с интересом почитал полный текст сообщения ещё до редактирования

Да я еще раз внимательно пересмотрел видео, пересмотрел код, все отображаемые на видео параметры, и понял, что мои теоретизирования оказались не в кассу. Стер 😃

Creator991:

меня очень напрягает когда АП (принудительный АВ)с высоты 200метров врубает газ на 100% и снижается на 100 метров!! Ощющение, что щас крылья сложаться!

Андрей, даже если АП сказано удерживать скорость, то начальный газ он выставляет в значение, заданное в поле величина газа для режима “удерживать газ” и держит его 2 секунды. После начинает играть газом. Поставьте эту величину поменьше и Вам будет спокойнее.

baychi:

Поэтому предлагаю вернуться к вопросу программной фильтрации вибрации в алгоритме IMU. Понятно, что любой фильтр даст дополнительную задержку (половина длины фильтра для КИХ), но так ли велика будет эта задержка? При 200 Гц опросе гироскопов (если не ошибаюсь), задержка в 50 мс - это КИХ фильтр на 20 шагов. Как режекторный или ФНЧ он способен срезать вибрации с частотами от 10 до 100 Гц с ослаблением на 20-30 дБ. Не берусь предсказать, насколько это ухудшит динамику, но чувствительность к вибрациям движка будет значительно ниже. Может стоит добавить такой фильтр, как опцию?

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

Вахтанг
serj:

Зы : не стоит думать что у Тимофея одна голова 😃

Ну да. Тимофей - ты у нас тепер будешь Змей Горинич 😃

serj:

Когда я “руками” пытался моделировать такой поворот на як-18Т как описываешь ты, мне инструктор сказал что “у тебя половина пассажиров к концу полета проблюется, особенно те что сзади сидят” Надо обязательно рулить и рулем направления тоже.

Инструктор он на то и инструктор.
Летал я на ЯК18, с бывшим военным пилотом, под Питером! Рассказать это словами нереально, надо самому посмотреть, а еще лучше попробовать! от перегрузок глаза чуть на лоб не вылезли. Ничего, не обблевалься. Поворота блинчиком он не делает, принципиально. А разворот на 180 градусов в конце полосы, с наклоном под 70 градусов, и посадка до середины полосы - это пожалуйста.
При управлении РУ моделью и я также управляю, наклон 40-60 градусов и РВ в место РН. Разворот с меньшим радиусом не сделать больше никак! Правда делать это надо на скорости, ибо можно свалится на крыло.
Тимофей- а выбор в контрольной панели типа авиагоризонта будет? я имею в виду разное понимание отображения у нас и за бугром.

AlexSneg
smalltim:

При наличии перегрузок, раскачек и колебаний каждый цикл автопилота (~100 раз в секунду) я этот множитель уменьшаю на 0.01.

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

baychi
AlexSneg:

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

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

AlexSneg:

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

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

AlexSneg
baychi:

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

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

baychi:

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

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