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

oleg70
SergDoc:

аналоговая механическая часть максимум на что рассчитана - номинал 27кГц разброс от 26 до 29…

Не знаю на что она там рассчитана, но максимальная частота обновления данных (у цифровой гиры) в регистрах - 2 Кгц… ,
нет, считывать можно конечно и чаще, особенно по SPI, только смысла в этом нет никакого…
У акселя, кстати, всё ещё печальней - 1 Кгц…
Я ошибаюсь ? (про аналоговые датчики речь не идёт…)

SergDoc

у цифрового датчика есть аналоговая (механическая) часть, ацп и т.д… хотел вчера ещё поизголяться над 6000 -й но не судьба…

oleg70
SergDoc:

у цифрового датчика есть аналоговая (механическая)

Эт понятно…
Я думаю цель только одна - убрать из данных гиры ее собственный шум, чтоб углы не уплывали со временем…
Как вариант - взять “супер чувствительную гиру” с микрошумом (которых нет) и удушить этот шум до нуля выставив шкалу в районе привычных 1000 град.сек… Только к сожалению ключевая фраза - которых нет

Gapey
oleg70:

убрать из данных гиры ее собственный шум

а если читать из гиры максимально возможное количество показаний и усреднять их ? если удастся вытащить из какогото датчика хотябы реальных 8000 отсчетов то для расчетов вполне можно использовать среднее между последними несколькими отсчетами. для гонок ессно такое неприемлемо.

alexmos
Gapey:

а если читать из гиры максимально возможное количество показаний и усреднять их ? если удастся вытащить из какогото датчика хотябы реальных 8000 отсчетов то для расчетов вполне можно использовать среднее между последними несколькими отсчетами. для гонок ессно такое неприемлемо.

Мы сравнивали опрос на высокой скорости (32кГц) и самостоятельную фильтрацию в дальнейшем (усреднение, LPF-фильтры с разными настройками) - заметной выгоды по сравнению с внутренней фильтрацией нет. Видимо, там стоит достаточно адекватные филтры, максимальная частота среза по документации 250 Гц выбрана оптимально, и если ее повышать - то данные слишком шумные. Ну и решили, что опрашивать гирик чаще чем 8кГц смысла никакого нет. PID-цикл на 1250Гц.

SergejK
alexmos:

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

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

rual

Так уже всё это облизывали. Там суть не в фильтрации как таковой (усреднение, медиана и т.п. ), а сбор полного интеграла сигнала за период дискретизации АЦП. Для гонщиков, в данном случае, лучше аналоговые ДУСы с внешним устройством выборки-хранения.

oleg70
rual:

Для гонщиков, в данном случае, лучше аналоговые ДУСы

Да, и в идеале, сам ПИД регулятор тоже должен быть аналоговый, никакой цифры от датчика до ШИМ мотора…,
только наверно такой “концепт” никому не нужен…

rual
oleg70:

Да, и в идеале, сам ПИД регулятор тоже должен быть аналоговый, никакой цифры от датчика до ШИМ мотора

Тут как раз не обязательно, главное чтоб потерь инфы в цепочке физ.датчик-АЦП не было, а далее всё сквозное вычисление с максимальной частотой.

SergDoc

беру свои слова обратно - запустил я mpu6000 на 2-х килогерцах - был драйвер кривой…

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Гц? 😃