Создание собственной системы стабилизации

SergejK
rual:

Там суть не в фильтрации как таковой

Да нет, на фильтрации там тоже многое завязано. Можно сколь угодно часто дискретизовать сильно фильтрованый сигнал - толку от этого будет ноль изза большой задержки. Фактически с задержками там и борются. А в случае MPU сенсоров есть определенный оптимум частоты фильтра (о чем и речь), выше которой сам сигнал будет шумнее и меньшие задержки не дадут результата. Так вот фильтровать на той частоте в любом случае выгоднее на аппаратном уровне сенсора, а не вносить дополнительные задержки в петлю софтовой фильтрацией на уровне контроллера.

rual:

сбор полного интеграла сигнала за период дискретизации АЦП.

Так именно это делает любой алгоритм вычисления положения. Или они там собирают интеграл чаще периода дискретизации АЦП? 😃

oleg70
alexmos:

Мы сравнивали опрос на высокой скорости (32кГц) и самостоятельную фильтрацию

Не могу понять - зачем 32 кГц ?? , если данные обновляются 2 кГц максимум…, одно о тоже чтоль считывать и потом усреднять ? , тогда конечно эффекта не будет никакого… или я че то не так понимаю ?

alexmos
oleg70:

Не могу понять - зачем 32 кГц ?? , если данные обновляются 2 кГц максимум…, одно о тоже чтоль считывать и потом усреднять ? , тогда конечно эффекта не будет никакого… или я че то не так понимаю ?

К примеру в ICM20608 есть возможность получать данные, минуя фильтры, в том виде как их получает внутренний АЦП. А 32гКц - это его частота сэмплирования по датащиту.

rual:

Для гонщиков, в данном случае, лучше аналоговые ДУСы с внешним устройством выборки-хранения.

Не вижу отличий аналогового от цифрового. В цифровом сенсоре есть внутренний фильтр на 250 Гц, и даже при низкой частоте опроса (допустим, 1 кГц) он эффективно усреднит любые выбросы, которые будут между опросами, и в итоге получаем полный интеграл. В чем могут быть преимущества аналогового датчика, ведь с ним по сути прдется делать то же самое?

Gapey
alexmos:

по сути придется делать то же самое

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

alexmos
Gapey:

или не делать вообще … без разницы усреднять показания гиры за большой промежуток времени и вычислять по результату изменение положения за этот большой промежуток или вычислять изменение положения по каждому отсчету АЦП за время одного отсчета

Усреднять одномерным фильтром в любом случае надо, но он есть и в цифровых датчиках и работает на достаточно приличной скорости. чтобы ничего не пропустить. А запускать обсчет AHRS для сведения трех осей можно гораздо реже, думаю даже 100 Гц будет вполне достаточно.

Gapey
alexmos:

думаю даже 100 Гц будет вполне достаточно

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

SergejK

Вот выдержка из описания по бетафлайту:

Boris said:
gyro_lpf = OFF basically still means there is a little bit of filtering on the gyro. When setting it to EXPERIMENTAL it will remove any possible filtering and give raw data, which is extremely noisy. I don’t recommend it. I just added it to be there in case someone wants to play with it.

Тоесть сам гуру бетафлайта не советует выключать в мпу фильтр. Тоесть фактически рекомендуется фильтровать выходной сигнал на 188Гц либо 250Гц. Откуда мне лично не совсем понятна гонка килогерцев.

SergDoc

Опять 25 выборка и фильтр самого MPU - это разные люди. Т.е. есть сигнал с частотой допустим в 1 герц и в нём ещё один с частотой 300гц - так вот тот сигнал в 1 герц мы порубали на 1000 кусочков и собрали в интеграл - и он там есть весть а 300гц сигнал - удушили фильтром и в интеграл не пустили - нам нужна вся 1000 кусочков герцового сигнала…

SergejK
SergDoc:

нам нужна вся 1000 кусочков герцового сигнала…

Вот ну никак не следует этот вывод из того что сказано.

Вспомним теорему найквиста - теоретически достаточно выборки с удвоеной максимальной частотой в спектре сигнала для его восстановления. Возможно какуюто минимальную разницу и можно будет ощутить при переходе от 500 к 1000-2000Гц частоте выборки при сборе интеграла при неизменной частоте фильтра сигнала. 8-32КГц - это уже скорее для собственного успокоения, мол сделали все что могли, плюс, как водится у спортсменов - “быстрее, выше, сильнее!”.

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

SergDoc

Ха - допустим датчик засёк ну ни максимум, а скажем 1000 гр/сек - за цикл при 500 это уже 4 градуса исправлять, а при цикле в 2000 - 0.5 градуса - где погрешность пида будет больше? где какая задержка? если цикл в одном случае 2000 микросекунд, а в другом 500?

SergejK

Так при любой частоте петли с датчика считаем те же самые 1000°/с, откуда тут возьмутся ошибки?
Но ок, тогда следуя этой логике какие же тогда ошибки будет давать тот самый рекомендованый мпушный фильтр в 250Гц или также используемые 188Гц? 😃

SergDoc

задержка по времени от считывания до подачи на регулятор 2000 микросекунд и приказ пиду исправление 4 - х градусов (зная что есть ошибка интегрирования) или 500 микросекунд и приказ на полградуса - что точнее?
а ведь рейсерам надо порхать как бабочка пчелой ужаленная)))
жена и вправду думала, что у нас во дворе осы завелись )))
да и вот - во время пересчёта муха в проп попала - мелочь но приятно - 4 предположительных! градуса превратились в 5 - а 0.5 пусть даже в 0.6 - при следующих итерациях, что быстрее исправится?

SergejK

Если честно вообще не понял вопроса… Речь о задержке или о точности? Мухи в пропеллере? Ужаленая жена? 😃 Сформулируйте пожалуйста яснее.
Во вторых это какаято странная математика 2000/4 ≠ 500/0.5. Правильнее тогда уже на 2000мкс будет 4° ошибки, а на 500мкс - 1°.
Но ок, возьмем что моторам нужно исправить 1° за 500мкс - а успеют ли они вообще это сделать за такое время? Или проще исправить 4° за 2000мкс?

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

SergDoc

А я и не лезу в выяснение отношений - просто вы сами себе перечите - ну как может быть одинаковой задержка между считыванием и подачей на регуль при времени цикла 2000 или 500 - не 4 ну да я чёт загнался - 2 градуса - но это не точно 2 градуса, и исправлять надо 2 градуса - а за это время при времени цикла в 500 - 4 по 0.5 успеть можно… но если же подойти с не рейсерской стороны - пропы маленькие обороты большие, а к нормальным аппаратам - чем ниже скорость вращения моторов, выше инерция самих ВМГ, а следовательно ниже скорость влияния изменения частоты вращения на положение аппарата - то и смысла особого нет в завышенной частоте цикла - короче какой бы не была частота, читаем - считаем - пид - регуль - ваншот получается…

alexeykozin
SergejK:

Так при любой частоте петли с датчика считаем те же самые 1000°/с, откуда тут возьмутся ошибки? Но ок, тогда следуя этой логике какие же тогда ошибки будет давать тот самый рекомендованый мпушный фильтр в 250Гц или также используемые 188Гц?

гы, а я миник на f4by запускаю с фильтром на 43 гц, эксперимента ради надо попробовать посмотреть как будет себя вести на 188-250

SergDoc
SergejK:

Но ок, возьмем что моторам нужно исправить 1° за 500мкс - а успеют ли они вообще это сделать за такое время?

вот - Кесарю кесарево - какой аппарат такой и цикл!

alexeykozin:

гы, а я миник на f4by запускаю с фильтром на 43 гц, эксперимента ради надо попробовать посмотреть как будет себя вести на 188-250

забей у тебя цикл - 400гц - там хоть 10гц ставь )))

alexeykozin

400гц это цикл стабилизации а 43 это фильтр мпу
кстати там инерциалка - екф прожорливая до ресурсов а цикл стабилизации - контроля моторов легковесный

SergDoc

ну дык а я тебе про что - залей прошиву - ощути разницу - сам скажешь, что арду фу - кстати на ф4бы все датчики пашут… и 2 килогерца - ваншот тоже 2 - так что сними пропы перед первым подключением и моторы проверь - заработают не, а то я пока регули не перешил - смотрел либо на молчащие либо жужащие на полной дури…
и ощущения - просто в восторг щенячий приводит и жужит натурально как оса)))

SergejK
alexeykozin:

гы, а я миник на f4by запускаю с фильтром на 43 гц, эксперимента ради надо попробовать посмотреть как будет себя вести на 188-250

Например на чистом от вибрации 700мм аппарате при 500Гц цикла отчетливо вижу разницу в поведении при изменении частоты фильтра с 98Гц до 188Гц, становится четче в полете, меньше вихляния. Правда для мпу очень важен низкий уровень вибрации, иначе эффект может быть противоположный.

SergDoc
alexeykozin:

кстати там инерциалка - екф прожорливая до ресурсов а цикл стабилизации - контроля моторов легковесный

я знаю место где взять екф на 16 осей который легко в 500гц выкрутится, и будет заменять и иму тоже, а не в арде 100 герцов… кстати я его летал на мелкой дус 188 аксель 41 - где-то даж кино было…

alexeykozin:

400гц это цикл стабилизации а 43 это фильтр мпу

а я и не знал) вот одно плохо в 6000 -й фильтр один и на дус и на аксель, вот 6500 - 9250 совсем другой разговор, мухи отдельно, котлеты отдельно…

alexmos:

В чем могут быть преимущества аналогового датчика, ведь с ним по сути прдется делать то же самое?

ну тут как бы посчитать и повесить на выход датчика rc или lc фильтр на определённые частоты и жестко убить всё ненужное, а нужное дать на ацп, но стоимость и громоздкость конструкции - датчики, фильтры, ацп (24 бит или больше - 12 битный проца как-то не в кайф) - не надо усреднять чего-то программно - 8000 раз прочитали - 8000 раз выдали на регули… вот как-то ж работают как их там - короче машины горизонтального бурения - как они своей инерциалкой под землёй до миллиметров путь прокладывают?

oleg70
alexmos:

К примеру в ICM20608 есть возможность получать данные, минуя фильтры, в том виде как их получает внутренний АЦП.

Дык, минуя фильтры, не означает минуя выходные регистры, в которые он пишет с частотой 2000 Кгц… не более.
(еслиб он писАл с частотой 32 Кгц то и чувствительнось у него была б не 2000 гр.сек , а 32000 гр.сек…, иначе никак по моему…)

alexmos:

Не вижу отличий аналогового от цифрового.

Тут то и разница - что у аналогового можно считывать показания “моментально” на частоте ограниченной только физическими свойствами микромеханики (возможно 32 Кгц), а уж как и чем оцифровывать/фильтровать уже другой вопрос.

alexmos:

думаю даже 100 Гц будет вполне достаточно

Может даже и меньше (зависит от “тушки” коптера)… Иными словами:
увеличивать частоту выборок = увеличивать чуйку сенсора=возможность отслеживания более мелких/плавных угловых скоростей скоростей=увеличивать точность ИМУ…
А уж насколько это реально оправдано в каждом конкретном случае - это дело вкуса.