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

aerocraft

не подскажите такой програматор не подойдет для прошивки ? banned link

Pavel_K
aerocraft:

не подскажите такой програматор не подойдет для прошивки ?

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

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

Llirik
Виктор:

Руководить это не означает знать

Виктор, Вы уже второй раз оскорбляете меня.
ДА! Для меня обвинение в незнании азов регулирования - оскорбление. Я не только руковожу (хотя это занимает процентов 90 всего времени), но и в случае неразрешимых проблем, лично вмешиваюсь в конфигурирование/наладку систем. И сам создавал регуляторы по сравнению с которыми ПИД - задачка для первоклассника…

Но я на Вас не обижаюсь. Единственно чего прошу - не переходить на личности, а если с чем то не согласны, просто задать вопрос - разъясню более расширенно…

Виктор:

а тем более уметь объяснять это тут

С этим согласен! Возможно говорю непонятно. Но как и просили, я постарался объяснить доходчиво, не ссылаясь на преобразование Лапласа, не углубляясь в критерии качества регулирования и т.п… Возможно не совсем доходчиво получилось…

Но, по моему то, что наше U=П=P*e при успокоившемся (сбалансированном) состоянии системы стоит на месте объяснил достаточно понятно…

Ну ладно… Перекур закончен… Помчусь дальше “руководить”…

Виктор:

ОШИБКА - (е) ВСЕГДА будет присутствовать.

конечно же будет… ни кто не спорит…

msv
Llirik:

конечно же будет…

А если Лапласом по ней?.. Да сверху Фурье с Калманом помазать?.. 😃
Хотя не первый раз, высказываю удивление: почему до сих пор в этом проекте не реализованы полноценные, настраиваемые ПИДы? Параметры только не в попугаях, а в вполне понятных физических величинах. Можно контекстную подсказку- “если Вы ламер- забейте 0, если хотите большего - посмотрите вики (в тч. узнать, что такое ламер)”…

Llirik
msv:

А если Лапласом по ней?.. Да сверху Фурье с Калманом помазать?..

😃 😃
Точно!.. Только не забыть нейтронные сети расставить и генетику применить… Еще разок пригладить Калманом и продать Smalltim в Роскосмос!..

На вырученные бабки купить всем форумчанам по вагону самолетов и построить в каждом городе по ВПП для комфортных полетов!..

А по второй части (уже без шуток) думаю проблем не возникнет…
Единственно я программированием чипов не занимался никогда. Каюсь - грешен…
Если будет время разобраться, то попробую на своем комплекте реализовать…

smalltim
baychi:

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

Уже писал: сделано, но будет выложено не прямо сейчас.

baychi:

По логам моих полетов (да и большниства здесь) видно, что целевой крен или тангаж всегад больше (по абсолютной величине) реального. То есть АП никогда не дотягивает до требуемого угла. Близко к нейтрали мне это понятно: АП учитывает нейтраль серв и считает, что положительный тангаж можно создать только при подъеме РВ, а отрицательный только при опускании. В итоге, если реальный тангаж, скажем +5 градусов, а целевой 0, АП никогда не приведет реальный тангаж в 0. Аналогично на больших значениях, когда самостабилизирующая модель пытается привестись в нейтраль, АП при данном алгоритме всегда будет оставать по тангажу и крену. ИМХО, стоит попытаться решить эту проблемму. Есть идеи?

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

Llirik:

Или в Smalltim-е реализована аддитивная компенсация? Сомневаюсь…

Аддитивной компенсации нет, мне не нравится эта идея. Но экспериментируем с комплексным двухкомпонентным интегральным, должно выстрелить очень хорошо.

Llirik:

Виктор, Вы уже второй раз оскорбляете меня.

Виктор, Кирилл, спорьте, но не ссорьтесь. В сообщениях Кирилла я не увидел ереси, а Ваши не полез смотреть в ветку по ссылке 😃
Но думаю, что и Вы и Кирилл, как человеки, едавшие ПИДов, не будете говорить ереси. Просто с терминоголией договоритесь 😃

msv:

Хотя не первый раз, высказываю удивление: почему до сих пор в этом проекте не реализованы полноценные, настраиваемые ПИДы?

Милейший, Вы в этом уверены или это Вам показалось? Пожалуйста, подскажите, что заставляет Вас считать, что в этом проекте ПИДы неполноценные и ненастраиваемые. Спасибо.

msv:

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

Милейший, пожалуйста, объясните, что скажут коэффициенты пропорциональности, описанные “в вполне понятных физических величинах” человеку, который термин “угловая скорость” видит в первый раз в жизни, а углы меряет градусами, а не радианами, как все нормальные люди? Таких нормальных людей - 95% пользователей smalltim.
Хотите грузить гиков делалями - грузите, а я как-нибудь детали лучше упрячу внутрь, а наружу выставлю человекопонятные коэффициенты “в попугаях”.

ingener

а наружу выставлю человекопонятные коэффициенты “в попугаях”.

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

Llirik
smalltim:

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

Хорошо, что переживаете о вероятности косяков пользователей. Но это можно делать не запретом, а предупреждением типа “Не трогай, если не уверен!”…
По поводу К*величину пропорциональных компонент - какая то нелогичная борьба с интегральным насыщением. Сделайте запрет на интегрирование (отключайте сумматор по условию) при насыщении воздействия (когда выход регулятора вышел на ±100%).

smalltim
Llirik:

Хорошо, что переживаете о вероятности косяков пользователей.

Некоторые из запиливших мегаохренительные автопилоты для себя и еще двух парней, этого, похоже, не понимают, и начинают ругаться нехорошими словами. А вот когда придумываешь что-то этакое, и представляешь вой от сотни человек на форуме - “что это за новая хреновня, я тут нажал и оно всё сломалось/упало/сгорело/еще чегонибудь” - тут же тормозишь идею и начинаешь придумывать, как бы сделать так, чтоб народ не взвыл 😃

Llirik:

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

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

Когда выход регулятора в ±100%, это означает, что отклонения рулевых плоскостей полные. Выхода управляющих плоскостей на ±100% почти никогда в стабилизированном полете не бывает, так что о насыщении речи не идет.

Условное интегрирование можно сделать, вот экспериментируем с двумя частями в интегральном компоненте.
Не хочу привлекать высшую математику, да и в терминах я не очень, поэтому рассказываю, как Чапаев, на картошках, и пляшу от задач:

  1. ПИ никогда не выходит на целевое значение, это понятно. Надо добавлять быстро растущий, но ограниченный интегральный, чтоб успел расти на интервалах 0.5…5 сек и помогал точнее перекладывать самолет по крену и тангажу при активном маневрировании. По сути, это получается адаптивный П.
  2. Есть кривые модели, у которых есть особенно сильные связи крен-тангаж, газ-крен, газ-тангаж и т.д. Быстрый интегральный, ограниченный по К*П - не лучший вариант для убиения таких вещей. Делаем медленно растущий интегральный, чтоб реально начинал давать вклад на интервалах от 10-20 сек. И ограничиваем его вклад до Х% от рабочего диапазона - останавливаем накопление, когда уперся в этот предел - чтоб не перестараться, и опять же, обезопаситься в плане стабильности.

Как-то так. Хочу выслушать советы, если Вам не жалко ими делиться.

Llirik
smalltim:
  1. ПИ никогда не выходит на целевое значение, это понятно

Очепятались! ПИ как раз и выходит, это ПД не выходит…

Перерегулирование (overshoot по Вашему) и раскачка - следствие неправильной настройки коэффициентов.

smalltim:

Выхода управляющих плоскостей на ±100% почти никогда в стабилизированном полете не бывает, так что о насыщении речи не идет.

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

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

  1. нет (это реализованный сейчас режим)
  2. по бароскорости
  3. по бароскорости и газу. (полезен для моделей, таких как скайвокер, у которых РВ находится в потоке от винта)

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

Вахтанг
Llirik:

Но это можно делать не запретом, а предупреждением типа “Не трогай, если не уверен!”…

Кирилл! ну, у вас вроде фамилия русская. Не догадываетесь к чему это приведет? Непременно будут трогать, если так написать! 😃

serj

Тим, предлагаю сделать следующее. Пользователей, считающих себя умнее разработчика, не так много. (человек 10-20, и Александр в их число не входит 😃) Предлагаю сделать весьма развитую структуру ( массив регуляторов), штук 32 например, с произвольно назначаемыми связями. Сделать под это отдельный пункт, как вариант, в ини - файле КП (запароленный , скажем под индивидуальный номер проца через некую функцию). Чтобы обычным пользователям этого вообще не было видно.
И высылать пароль жаждущим экспериментов людям баксов за 100. (как, например, делает Олег) .

Причем с предупреждением- все что вы напрограммировали- под вашу ответственность. Ибо за реализацией хотелок двух-трех десятков человек в понятном для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ, в том числе и не имеющих специального образования людях проект будет обречен на непрерывное устранение косяков от реализации хотелок.

А если страждущие будут спрашивать- почему так дорого- предлагать купить Риссу 😃.

Ясон

Интересует будет ли работать автопилот на летающем крыле без дополнительного V-tail микшера на борту?

Llirik
Вахтанг:

Кирилл! ну, у вас вроде фамилия русская. Не догадываетесь к чему это приведет? Непременно будут трогать, если так написать!

Еще как догадываюсь!.. 😁
И очень часто возникает желание поотрывать руки инициативным умникам… Правда ПБ это запрещают, поэтому обходимся депремиеями, выговорами и увольнениями… Но чаще девятиэтажным матом!.. 😃

А по поводу 100$ и экспериментируй - перебор!
Заплатить бабало производителю, за то что решил ему же помочь сделать его продукт более привлекательным?! Надеюсь Тимофей - не Том Сойер!..

Другой вариант, считаю вполне всех устаиваемый:

Просто выложить отдельно на сайте с большим красным предупреждением об опасности “Экспериментальные прошивки/контрольные панели”. В релизах которых вносить пожелания от нас “горе-умников”. И пусть мы - сами морковим свои носители на свой страх и риск!.. И в случае, если эксперименты таких дилетантов как я дадут положительный эффект - ретранслировать его в прошивки общего пользования!

Ясон:

Интересует будет ли работать автопилот на летающем крыле без дополнительного V-tail микшера на борту?

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

Kozhenkov
Ясон:

Интересует будет ли работать автопилот на летающем крыле без дополнительного V-tail микшера на борту?

Будет

baychi
smalltim:

Условное интегрирование можно сделать, вот экспериментируем с двумя частями в интегральном компоненте. Не хочу привлекать высшую математику, да и в терминах я не очень, поэтому рассказываю, как Чапаев, на картошках, и пляшу от задач:

У меня, как у неискушенного в ПИД-теории пользователя, возникает 3 вопроса:

  1. Очевидно, что ПИД регулятор неспособен привести реальный тангаж/крен к требуемому. Вопрос, а нужно ли это? Ведь летаем и так. Другое дело, что без строгого понимания теории, подбор коэффициентов превращается в “шаманство” даже там, гже аэродинимические свойства модели известны.
    И существует ли “человекоподбный” алгоритм регуливания attitude?
Llirik:

Допустим у нас прямое регулирование – это когда увеличение U приводит к увеличению угла тангажа.

  1. Насколько важно, что у нас НЕ ПРЯМОЕ регулирование. Что РВ/элероны задают лишь скорость вращения вокруг соотв. оси?

  2. Реальный люфт, гистерезис или нечувствительность упр. поверхностей. Как бы его обойти?

smalltim
baychi:
  1. Очевидно, что ПИД регулятор неспособен привести реальный тангаж/крен к требуемому.

Это ПД не может, а ПИД - более чем может. Мы просто (возможно, излишне) осторожничаем с И, вот и всё.

baychi:

И существует ли “человекоподбный” алгоритм регуливания attitude?

Человек, если сильно упрощать, идейно наверное, близко к ПИД работает, но тут очень много всяких деталей. Моя димпломная многолетназад была как раз на тему анализа поведения системы человек+машина в управлении истребителями. В общем, или ПИД, или уже тогда сразу во все тяжкие - нечеткая логика, прошивки по мегабайту и т.д. 😃

baychi:
  1. Насколько важно, что у нас НЕ ПРЯМОЕ регулирование. Что РВ/элероны задают лишь скорость вращения вокруг соотв. оси?

Очень важно. На самом деле, управлять надо угловыми скоростями, а не углами, и мы к этому скоро придем.

baychi:
  1. Реальный люфт, гистерезис или нечувствительность упр. поверхностей. Как бы его обойти?

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

Llirik

Ответы:

  1. ПИД - способен, это П и ПД не способны. Нужно ли это? Главный вопрос и то с чего надо вообще начинать - критерии качества регулирования!.. На счет борьбы с “шаманством” лучший выход - автонастройка. Прикидываю как лучше реализовать ее, поэтому и задал вопрос, в начале “перепалк” пост #6330…
  2. Для конечного пользователя совсем не важно!.. Smalltim при настройки входных каналов это понимает, для этого, к примеру, и просит показать в какую сторону вы отклоняете стик для того, чтобы дать правый крен.
  3. Добавим погрешность измерений, шумы, дискретность и точность серв и т.д… Проще говоря то, что называется реальной системой!.. “Обходится” все это опять осознанием и правильным формулированием критерий качества и, соответственно, затачиванием алгоритма под них. К примеру, введением зоны нечуствительности, которую, я считаю надо будет вводить (во всяком случае если решим всетаки развивать автопилот)…

УПС… Тимофей уже ответил…

smalltim
Llirik:

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

Да, надо, всё никак руки не дойдут. Еще я думал о мониторинге перегрузок и мгновенном занижении общего коэффициента усиления регуляторов в случае перегрузок.
Но это всё, по сути, решится автоматически при управлении угловыми скоростями.

Llirik

Только мы 2-й пункт по разному поняли… Я отвечал на приложенную цитату…

smalltim
Llirik:

во всяком случае если решим всетаки развивать автопилот

Вы, наверное, издеваетесь 😃