Master писал(а):=DeaD=, это ты щас с кем разговаривал? Две строки текста - нифига не понял.
Попробую разжевать (типа капитан очевидность
)
Акселерометр меряет ускорение. Может вдоль нескольких осей. Но поскольку действие гравитации полностью аналогично ускорению, то он меряет еще и силу тяжести, и отличить одно от другого не может. Гироскоп (который MEMS, "твердотельный") на самом деле вообще не гироскоп
А датчик угловой скорости. Меряет, будете смеяться, угловую скорость. Называется гироскопом только потому, что гироскопами тоже можно мерять угловую скорость.
Вернемся к нашему перевернутому маятнику. Пусть для простоты он качается в одной плоскости, чаще всего так и есть. Как его балансировать? Нужно узнать угол отклонения от вертикали. Как узнать? Есть 2 метода.
По акселерометру - если маятник вертикален, ускорение вдоль горизонтальной оси нулевое. Если маятник отклонился, то в показаниях акселерометра появляется проекция силы тяжести, примерно пропорциональная отклонению. Но при этом при каждом качании маятника акселерометр к наклону добавляет сигнал, пропорциональный ускорению. Он регулировать очень мешает, но зато полезен тем, что интеграл от него после возврата маятника на исходную позицию равен нулю. Значит, если долго усреднять показания акселерометра, то получим наклон маятника без "примесей". Но за то время пока мы усредняем, маятник упадет
По датчику угловой скорости - угловая скорость есть производная угла наклона. Значит если показания датчика проинтегрировать, то получим угол. Причем любые быстрые изменения угла будут учтены. Но зато появляется накопление ошибки датчика. Если, предположим, в покое показания равны 1 градус в секунду, то через 90 секунд наш интеграл станет равен 90 градусам, хотя маятник по прежнему вертикален. Ну или если мы по этим показаниям регулируем, то наоборот, мы будем держать значение интеграла равное нулю, а маятник через 90 сек ляжет.
Поэтому долговременное значение угла нужно определять акселерометром, а кратковременно - ДУСом (гироскопом).
А теперь как объединить. ИМХО, можно и без кальмана. Взять показания акселерометра, пропустить через ФНЧ. А показания ДУС - через интегратор+ФВЧ (по сути это фильтр с характеристикой как у интегратора, но только до определенной частоты, потом спад). частоты среза фнч и фвч взять равными, выбрать исходя из характеристик ДУС и маятника. И вот эту сумму и считать углом наклона маятника. По ней ПИ/ПИД и на мотор.