чем отличается по ссылке выше моушин драйвер не очень понятно,
не спешите там всё написано.
Embedded MotionDriver 5.1.3 - это старый СДК на 6ти осевые датчики (DMP без компаса)
Embedded MotionDriver 6.12 - это новый на 9ти осевые (DMP учитывает компас), подходит и для 6ти осевых, но они советуют для 6ти использовать 5.1 , но на 5.1 нет предкомпилированных MLP либ для ARM.
8кгц*3оси*16бит + 1кгц*3оси*16бит
в mpu6050 так нельзя, выборка в fifo идёт на частоте гиро / делитель, и выбираются одновременно и гиро и аксель.
нужно понять, что от этих 6050, 9150 и кучи других ширпотребных вообще можно добиться, как что выгребать, как интегрировать, когда стоит избыточность датчиков делать, а когда лучше другие датчики брать и т.д.
это всё хлам с точки зрения инерциальной навигации.
лучшее чего можно добиться можно посмотреть вот по этому видео
post356651.html#p356651, там и нормальные исходники ,
DMP интересна с точки зрения экономми энергии, но она сама в себе, её никак не подкрутить.
потом на компе эксперементируя с обработкой и сравнивать режимы
в этом нет никакого практического смысла, лучшее соотношение сигнал/шум у mpu6050 при +-250dps + LPF 10Гц (выборка 1кГц) но о быстрых перемещениях можно забыть.
но и это не спасёт от дрейфа гиро.
выше Дмитрий предложил интересный вариант с двумя и более датчиками, только вот в mpu6050 режим Self test это просто приложение дополнительной силы к гиро, в результате он просто показывает других попугаев, но по прежнему реагирует на внешние воздействия. т.е. получается реальная действующая угловая скорость + тестовая скорость.
When self-test is activated, the on-board electronics will actuate the appropriate sensor. This
actuation will move the sensor’s proof masses over a distance equivalent to a pre-defined Coriolis
force. This proof mass displacement results in a change in the sensor output, which is reflected in
the output signal. The output signal is used to observe the self-test response.
Когда активирован режим самотестирования, встроенная электронная система будет воздействовать на сенсоры для которых включен режим самотестирования.
Это воздействие переместит физическое тело датчиков на расстояние эквивалентное заранее заданной Кориолисовой силе.
Это физеческое перемещение тела датчика приведёт к изменению в показаниях датчика.
По показаниям выходного сигнала можно оценить реакцию на self-test воздействие.
STR - self test responce
FT - предкалиброванные прказания STR на заводе.
STR = (показания гироскопа когда включен режим самотестирования) - (показания гироскопа когда самотестирование отключено)
(отличие от предкалиброванных показаний на заводе) = (STR-FT)/FT
т.е. главное назначение режима самотестирования это определение правильно ли припаяли датчик (без перегрева и без физических нагрузок приводящих к искажению показаний (остывшее олово воздействует на датчик, искривление платы воздействует на датчик))
предкалиброванные показания гироскопа FT хранятся в регистрах SELF_TEST_X, SELF_TEST_Y, SELF_TEST_Z первые 5ть бит, но они хранятся в закодированном виде.
их сначала нужно привести к показаниям гироскопа, формула есть в MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2
а реализация на СИ есть в функции gyro_self_test из MotionDriver
или тут
https://courses.cs.washington.edu/cours ... xample.ino
Может быть у MPU6500 по другому, судя по исходникам режим self test отличается.
думаю если бы так легко было они бы давно выпускали чипы с двумя датчиками и всё это делали внутри так чтобы пользователь ничего не замечал.
Добавлено спустя 1 час 21 минуту 24 секунды:Теория, ошибки гироскопа:
1) bias - смещение нуля, можно вычислить если усреднять показания покоящегося датчика
2) scale factor - масштабный коэффициент. Показания гироскопа приведённые к град/сек на самом деле будут отличаться от реальных град/сек, для того чтобы скомпенсировать это отличение требуется подобрать масштабный коэффициент.
3) обе ошибки зависят от температуры, так что ещё нужен коэффициент масштабирования в зависимости от температуры датчика.
4) дрейф гироскопа это на самом деле плавающий bias, со временем bias смещается от откалиброванных значений в результате возникает накапливающаяся ошибка интегрирования (датчика показывает что он вращается хотя на самом деле он стоит на месте), чем сильнее уплывает bias от откалиброванного значения тем быстрее будет "виртуальное" вращение.
спастись программно от этого нельзя (если датчик постоянно в подвижном положении), именно скоростью уплывания bias отличаются дорогие и дешёвые гироскопы.
Неплохая документация о том как это можно откалибровать в домашних условиях.