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

AlexSneg

с отключенными фильтрами MPU отдает на 2кГц

SergDoc:
  1. все датчики которые пользуются и не пользуются максимум механически способны выдать аналоговый сигнал на 29кГц!

А вот это про что речь? Я отстал от жизни?

SergDoc

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

Gyroscope Mechanical Frequencies 25 27 29 KHz

AlexSneg:

с отключенными фильтрами MPU отдает на 2кГц

на своих (старый датчик, возможно устаревшая ревизия f4by ещё лохматой 2.0.0 версии с MPU6000 - дай бог памяти купленной года 3-4 назад) получаю полную хрень, т.е. выше килогерца уже бред с датчика сыплется с переполнением, при чём пока в покое всё нормально, как только повернёщь - всё переполнение и не останавливается - за что купил, за то продал )))
да кстати почитал про эту картинку - бред какой-то, ну понятно что очень похоже на kiss, хотя автор якобы roberto navoni (virtual robotix), так же в описании встречается подпись к процу stm32f7 dual core - такого в природе нет…

AlexSneg
SergDoc:

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

это если просто трясти его что-ли?

SergDoc:

выше килогерца уже бред с датчика сыплется с переполнением

у меня MPU5060 отдавало нормально. Только мне не нужно столько было, лишний гемор.

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 кусочков герцового сигнала…