Кому лимон?

digitall
Алфизик:

PS: А может, люди и на таких регуляторах летают, а я и не знаю?

Ага, летают, вполне нормально летают:

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

slvn
digitall:

Накопленная энергия во вращающемся двигателе с винтом, не успеет так же быстро рассеяться

Там будет очень маленькая энергия. У Вас маленькие винты, легковесные, а магниты двигателя находятся на малом радиусе. Это не вертолет с огромным радиусом лопастей. В принципе, момент инерции мат. точки mr^2. Да, энергия еще будет пропорциональна квадрату угловой, но и это ничего не даст особо. Энергия при раскрутке винта расходуется в основном на лобовое сопротивление набегающего потока на винт, а не раскрутку системы винт-двигатель, преодолевая ее общий м.и. Так что не стоит, на мой взгляд, это учитывать в Вашем случае.
Задача регулятора поддерживать заданные обороты. И не важно растут они, или нет. Для этого анализируется ЭДС на пассивной обмотке, т.к. мы используем двигатели без датчиков. Как раскручивать двигатель, так и тормозить его можно только, воздействуя на обмотки. Худо-бедно с этим обычные регуляторы справляются. Только задача у них иная, еще и максимально сохранять энергию, да и сделать так, чтобы они сами не погорели, да и двигатель тоже. Еще и по этой причине стоят фильтры на резкое изменение оборотов. Сами понимаете, что вся такая резвость еще и приводит к большим рывкам тока, а при торможении - к выбросам обратной ЭДС. Не факт, что батарея на это способна, а также и сам регулятор по своей силовой части. Есть еще куча нюансов. Хотя бы те же длинные и накрученные абы как на самодельных коптерах провода с соответствующей индуктивностью. Какой там резкий рывок по току?.. Ну и еще много можно чего напридумывать, что влияет;)

digitall
slvn:

Ну и еще много можно чего напридумывать, что влияет

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

slvn
digitall:

и до сих пор нет полной уверенности стоит ли вообще об этом заботиться

Заботиться о том участке, где обороты не дают почти никакой подъемной силы нет никакого смысла, имхо. Я нашел Ваши графики, еще раз посмотрел. Посмотрел “на глаз”, т.к. шкала временная там у Вас не нарисована. На графике торможения почти половина указанного Вами времени (1.4 сек) приходится на обороты ниже 2000. Ничего почти такие обороты не дают. Так же “на глаз” показалось, что при изменении оборотов с 4000 до 6000, и разгон и торможение одинаковы по времени - 0,2 сек. И если Вы хотите увидеть более быстрое торможение, то на этом HK SS есть функция тормоза, которую можно запрограммировать. Но это не нужно. На мой взгляд, гораздо более принципиален тот параметр, что Вы указали: "Запаздывание примерно одинаковое: разгон 0,04 сек, торможение 0,03 сек. ". Вообще-то это очень много. А также стоит построить графики для меньшей дельты в оборотах, и разбираться уже в них.

digitall:

вполне нормально летают

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

digitall
slvn:

при изменении оборотов с 4000 до 6000, и разгон и торможение одинаковы

Верно подмечено, спасибо за уточнения! Только что проверил по графикам.
Касаемо запаздывания - таки да, но оно в большей степени обусловлено низкой частотой ШИМ (50Гц), что уже дает задержку до 0.02 сек только на смену параметра ШИМ в МК, а пока его еще регулятор измерит, пока отреагирует, вот и набежало 0.04 сек. ИМХО.
По конструктиву - специально разрабатывался под конкретную задачу (сразу понимал, что буду много его бить) и эксперимент оказался более чем удачным. Пробовал летать на улице - сдувает как перышко. Влияние отраженных потоков от стены немного снизилось за счет закрытой конструкции винтов, как и взаимное влияние друг на друга. А вот грузоподъемности оказалось - впритык. Возможно даже придется идти на компромисс, чтобы уложиться в 2 - 2,1 кг.
Очень хочется опробовать нормальную прошивку для регуляторов, но как известно лучшее - враг хорошего. Я этого никогда не делал, боюсь навредить и остаться без регулей в самый ответственный момент, но обязательно попробую позднее.

slvn
digitall:

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

Верно, не делайте ни в коем случае сейчас. Времени впритык. Его нужно максимально тратить на другое. У меня вот лично как раз горький опыт последствий экспериментов, чтобы было еще лучше - это не прохождение КТ3.

Алфизик
digitall:

и до сих пор нет полной уверенности стоит ли вообще об этом заботиться.

Ну хорошо, давайте начнём с того, что же такое ПИД-регулятор и для чего он. Владислав, вы правильно заметили, регулятор меняет значение ШИМ, и далее обороты устремляются к новому значению по экспоненте. Так вот, задача правильного регулятора заключается в том, чтобы к новому значению приходить не по экспоненте, а как можно более “квадратно”. Вы можете возразить, что быстее, чем по экспоненте не получится, но вы выбрали самый крайний случай - изменение до максимальных оборотов. А вот предположим, что нам нужно изменить обороты с 2000 до 3000. Как будет действовать правильный регулятор? Он сначала выдаст максимальное значение, и когда обороты достигнут 3000, выдаст значение ШИМ, при котором обороты установились бы на этом уровне. Крутой кусок экспоненты послужит для перехода от одного значения к другому, так быстрее всего, “квадратнее”. Регулятор может быть как с обратной связью(измеряет обороты), так и без неё. Во втором случае в регуляторе должна быть реализована функция, которая компенсирует запаздывание раскрутки ротора. Поскольку ротор является интегратором, ему в пару нужен дифференциатор, реализованный программно. Теперь о том, “заботиться о разнице или нет”. Регуляторы оборотов двигателей входят в другую, более сложную систему регуляторов крена-тангажа. Эта система имеет совершенно другие временные параметры, обусловленные моментами инерции летательного аппарата по соответствующим осям, эти моменты гораздо больше, чем у пропеллеров. И ещё в регулирующие системы вносят задержку, подтормаживают их, чтобы не происходило перерегулирование, когда регулятор слишком сильно-быстро поменял параметр, и ему приходится тут же отрабатывать обратно, туда-сюда, неустойчиво, с колебаниями. Вот эта разница задержек при раскрутке пропеллеров и при остановке может оказаться каплей в море в задержках во всей этой регулирующей системе. А может и не оказаться. Если в системе регулирования есть запас устойчивости, можете не напрягаться. А если захотите отрегулировать систему на “самый оптимальный оптимум” между быстродействием и устойчивостью, придётся в ней “выбрать все зазоры”, тогда и до регуляторов двигателей придётся докопаться и домотаться.

digitall
Алфизик:

Регулятор может быть как с обратной связью(измеряет обороты), так и без неё

В отношении регуляторов бесколлекторных двигателей (синхронных), они вроде без обратной связи не бывают, если нет отдельных датчиков холла, то снимается ЭДС самоиндукции с обмотки, которая в текущий момент времени не используется (исключение составляет момент старта двигателя, там несколько вариантов).

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

Алфизик
digitall

Спасибо за науку!

Рад стараться.

ПНКист:

Жаль, что уже июль, а не январь.

Время, вперёд! Я знаю, у вас в Иркутске время на несколько часов от Москвы вперёд, но не на несколько суток же. Или вы вместе со своим крутолётом попутно сотворили машину времени? Ма-а-аленькую такую, ближнего радиуса действия…
Как там с неуправляемостью? Похоже, с ней у многих команд полный порядок. Я завтра хочу отписать про иерархию ПИД-регуляторов, надеюсь, поможет. Чтоб хоть к КТ4 у всех всё летало, может и не шустро, но устойчиво. А то мы с вами такой финал получим…
Большой АрДронный Коллайдер, вот что это будет. Там элементарными частицами всё будет усеяно. Я такой финал не хочу.

Алфизик

Вот, собственно, про ПИДы. Сколько их должно быть всего? А сколько степеней свободы у летательного аппарата, плюс к тому, сколько у него органов управления. Для дрона три оси перемещательных, три вращательных и четыре пропеллерных. Для вертолёта тоже всё пересчитываем, оси рулевых машинок в автомате перекоса тоже не забываем. Про пропеллерные ПИДы чуть выше немного обсудили, поэтому начну с другого края. Например, ПИД канала высоты, для чего он нужен? Какой информацией он оперирует? Нужен для того, чтобы после получения команды, допустим, “набрать высоту 1 метр” спустя минимальное время аппарат оказался на 1 метр выше, чем был, при этом остальные параметры полёта оказались возможно более близкими к первоначальным. Это существенно, а то ведь можно так нарегулировать, что высоту наберёт, и скорость заодно, и ещё дальше полетит по инерции, беги-лови его. А дальше объясняю на простых примерах, от простого к сложному. Как выполнялся бы манёвр космическим кораблём в невесомости? Импульс двигателем в одну сторону, через некоторое время - в другую. А вертолёт что сделает? Прибавит обороты(либо шаг, у кого как), набирая вертикальную скорость, а после убавит, не до висения, а ещё меньше, и по инерции взойдёт на заданную высоту, и только на ней восстановит прежние параметры. Для всего этого ПИД оперирует несколькими данными, прежде всего массой и либо ускорением(с акселерометра), либо тягой(от оборотов). Есть другие параметры, о них попозже. Итак, акселерометр. Иногда кажется, что он вообще кажет что хочет, реагирует на любой стук, даже в покое ведёт себя беспокойно, а на вибрирующем вертолёте - и подавно. При этом проинтегрировать его показания один раз, чтобы получить скорость, и проинтегрировать скорость, чтобы получить перемещение, вот эта задача весьма нетривиальная. При интегрировании константа выплывает, при втором - вообще всё убегает со страшной силой. Поэтому акселерометр - только для того, чтобы констатировать, что переходный процесс успокоился, и ускорение равно земному. А весь остальной манёвр - за счёт физики процесса. Кстати, хороший фильтр для акселерометра сегодня выложу. Пойду материал по нему готовить, а вы пока осмысливайте.

digitall
Алфизик:

Пойду материал по нему готовить, а вы пока осмысливайте.

Дмитрий, хорошее дело затеяли, многим не хватает общей, так сказать концептуальной информации по этой науке. С нетерпением ждем продолжения!

Алфизик

Люди, я вам обещал интересный фильтр для акселерометра, но у меня тут ситуация дурацкая: видит око, да скриншот неймёт. Помогите себе сами, хорошо? Я вам сейчас распишу, что и как.
1.Берём поток данных от реального акселерометра в реальных условиях. Не в полёте, лучше в руках держать.
2. От этих значений находится экспоненциальная средняя Y1=X*K+Y0*(1-K);
Вот с этим К придётся немного поэкспериментировать.
3. Ещё две экспоненциальные средние находим, но с условиями: у одной значение обновляется только когда данные выше или равны вот той первой средней, а у другой - ниже или равны. У обеих коэффициент меньше чем у первой раз в 5 (т.е. медленнее). Должны получиться две более-менее стабильные границы, средняя постоянно мотается между ними. Не обращаем на неё внимания, пока она не попытается оттуда выйти.
4. А вот если попыталась, то тащим обе границы вслед за ней. То есть сдвигаем обе ровно настолько, насколько попыталась выйти.
5. Между этими двумя границами находим ( A+B )/2, это и считаем показаниями акселерометра.
Сделайте, пожалуйста кто-нибудь и выложите сюда, а то мне некогда разбираться почему не получается, на работе конец месяца, могут премировать, а могут кремировать.

digitall
Алфизик:

Сделайте, пожалуйста кто-нибудь и выложите сюда,

Попробую реализовать сегодня-завтра, как время позволит. Несколько небольших вопросов ,возможно не очень умных, показания берем откалиброванного акселерометра или “raw”? на какой диапазон настроить? и на какую частоту настраиваем выдачу показаний (от этого зависят параметры шума)? Нужно ли подстраивать внутренние цифровые фильтры акселерометра? На всякий случай уточню, использую комбинированный датчик LSM303DLH от ST c 12-разрядными сырыми данными. Обмен по I2C на 200кГц (магнитометр почему-то на 400кГц не откликается).
Да и, если можно, пару слов о физике/математике фильтра, чтоб лучше понимать что искать и куда смотреть.

Алфизик

Я мучил акселерометр ММА7455, он не интеллектуальный вовсе, 10 разрядов на 8g, данные абсолютно сырые, снимаются когда сам выставит готовность, частота шины - любая, успевает. Можно с любым проделать.
Стохастический подавитель какой-то. Физика фильтра мне самому не совсем понятна. Я не люблю такие вещи, которые раздирают данные напополам. Но он работает, и гладит хорошо, и реагирует быстро по сравнению со всем остальным. А глядеть графики хорошо, когда они ВСЕ на экране. Сразу видно, что было и что стало. Коэффициент подбирать, чтобы средняя моталась почти до самых границ, но не задевала их, а то потащит.

digitall
Алфизик:

Стохастический подавитель какой-то

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

Dav

Ролики от КРОК

www.youtube.com/user/crocrobots

Мы сняли ролик про полигон, рассказ о том что мы ждем от участников к КТ4, ну и полет нашего собственного коптера в автоматическом режиме.

И для развлечения участников два ролика про отладку,

в сильный ветер:

и тест горизонтальной стабилизации, в тот же день:

afad:

Мой прогноз таков: на полигоне КРОК КT4 пройдут 7 команд, из них будет 3 Ar.Dron-a, которые выполнят задание случайно.

Сегодня на нашем полигоне первая команда продемонстрировала выполнение КТ4. На Ардроне 😃

Frr:

Не могли бы Вы выложить несколько клипов с бортовой камеры - пролет коридора, подлет и посадка на крест, не пожатых ютубом, в низком разрешении ?
(для настройки софта)

Сегодня сняли несколько подлетов к площадке с борта, но забыл флешку в офисе 😦. Завтра постараюсь выцепить…

askoog

А что за ветер дует? Вроде стены по периметру? Сквозняк от пола?
Стремно как-то если порыв ветра швырнет аппарат на стену…

Dav
askoog:

А что за ветер дует? Вроде стены по периметру? Сквозняк от пола?
Стремно как-то если порыв ветра швырнет аппарат на стену…

Ничего критичного на самом деле. Стены очень хорошо защищают от ветра, но внутрь задувает, то есть такого что “швырнет на стену” не будет, всегда будет несколько секунд чтобы посадить 😃.

Но он ощущается, и PIDы, отрегулированные на полет “с достоинством” в комнате, просто не позволяли аппарату развивать скорость для полета против ветра.

Алфизик

Летать быстрее ветра… Опасно, но очень хочется. Только придётся очень внимательно контролировать кинетическую энергию, а то ведь она от скорости растёт в квадрате. Вот, например, как выполняется кинетический старт.
Представьте, вертолёт стартовал, на регуляторе максимальное значение, ротор интенсивно раскручивается, но тяги ещё недостаточно, чтобы взлететь. Фильтр акселерометра уже начал работу, он настраивается под вибрации, но среднее значение будет 1g, поскольку вертолёт ещё не взлетел. Вот это значение нам очень нужно. Ещё у нас есть два сумматора, в один мы будем складывать значения акселерометра за вычетом земного тяготения, то есть интегрировать будем, и период получения данных у нас dt. А в другой - значение из первого сумматора, тоесть двойное интегрирование делаем.
Вертолёт оторвался от поверхности и стремительно уходит вверх, первый интегратор тоже убегает вверх, он показывает вертикальную скорость. Из этой скорости мы можем вычислить кинетическую энергию вертолёта как масса умноженная на квадрат скорости и делённая пополам. Второй интегратор следует за ним, показывая высоту. Наш вертолёт не просто так взлетел, ему задана целевая высота h, в этой точке его потенциальная энергия будет mh. Из значений интеграторов находим мгновенные значения потенциальной и кинетической энергии. В момент, когда их сумма станет равна нужной нам целевой потенциальной энергии, мы выключаем двигатель. Нет, тормозить его не будем, просто прекращаем качать в него энергию. Пропеллер по инерции продолжает вращаться, ведь он только что давал максимальную тягу. Но показания акселерометра коренным образом поменялись, он показывает отрицательное ускорение. Поэтому интегратор скорости развернулся и бежит от плюса к нулю. И вот когда он прибежит к нулю, только тогда мы переводим двигатель на режим висения. Как вы думаете, где в результате окажется вертолёт? Где надо, там и окажется. Летать быстрее ветра можно. Только вот летать быстрее, чем думать, не надо. Мы уже знаем, чем это заканчивается. Летательным исходом.

Алфизик

Сам себя поправлю. Совсем отключать энергию от двигателя на летящем вертолёте нельзя. Представьте висящий на месте вертолёт. Его потенциальная энергия не меняется, кинетическая тоже. Однако он расходует энергию. Этот расход состоит из двух частей, я назову их “налог на висение” и “налог на устойчивость и управляемость”. Если первую часть энергопотока можно спокойно на некоторое время отключать, то вот вторую нельзя отключать ни в коем случае!!! Угроза аварии носителя!!! Проверено, мины есть. Я кстати, обнаружил, что такое “неуловимо погнулось” в наших вертолётах. Зубья в передаче от двигателя к ротору. Если навести механический лупоглаз(объектив от старого фотоувеличителя), то картина предстаёт во всей красе. Кинетическая энергия - она такая, она не могла бесследно исчезнуть.

ssilk

Лихо это Вы закрутили…) Надеюсь Вы имели ввиду модель вертолета? Да еще и соосник к тому же… ) Потому что в настоящих (да и не только) ротор раскручивается на земле, до рабочих оборотов, а тяга регулируется изменяемым шагом… Вплоть до отрицательной…