linvinus писал(а):секрет смешивания кроется в том какие данные считать более верными и в какой момент времени.
как я понял под тряской вы подразумеваете девиацию значений оси Z в статическом положении?
Этот эффект связан с тем что гироскоп сильно врёт, и чтобы компенсировать ось Z используют компас, который тоже врёт.
Если уберёте тряску в статическом положении, будет заторможенная реакция в движении.
Можете попробовать пропустить выходные данные через небольшой медианный фильтр.
расскажите по подробнее как меняли код DMP MotionApps v4.1? правильно ли я понял, речь о коде который загружается в MPU-9250?
проблема компаса в том что в разных местах пространства у него будут разные критические значения магнитного поля, т.е. откалибровав в одном месте если перенести в другое получим неверное направление.
вот мои эксперименты
https://www.youtube.com/watch?v=SXrsKto ... 77ZN7tLhV1поэтому безоговорочно показаниям компаса верить нельзя.
Прошу прощения за несколько несвоевременный ответ, у меня чего-то не получается подписаться на тему, чтобы вовремя получать уведомления.
1. Да, под "тряской" подразумевалось именно вот то, что Вы написали (слово "девиация" пришлось загуглить - первый раз встречаю его)
2. Применил обычный низкочастотный фильтр - "тряска" ушла. Да, появилась задержка в корректировке.
3. Про DMP MPU-9250 отдельная интересная история. Перепробовав кучу всевозможных скетчей и фильтров, вдоволь набаловавшись с калибровками всего и вся на одном корейском сайте нашелся код, который (О чудо!) корректно залился в 9250 и начал выдавать кватернионы, но без учета компаса. Перелопатив очень много документации по датчику и просмотрев много кода для него, немного поправил найденный код и получаемый кватернион начал вести себя более стабильно. Код на
GitHub. Мои комментарии на русском, думаю там все понятно, но в исходном коде очень много "магии" и до конца разобраться что делать и как - непонятно.
4. Ваше видео очень познавательно. В принципе что-то такое я ожидал увидеть, особенно после этой картинки с хабра:
А я в настоящее время после того как применил фильтр к данным, понял что неправильно я мыслил - а подсказать некому. Так как при вращениях не только вокруг оси Z, у меня кубик ведет себя очень некорректно. Сейчас методом "научного тыка" пытаюсь понять необходимую математику правильности вычислений корректировки угла рысканья. Пока ничего лучше не придумал, чем корректировка когда кватернион горизонтален...
Добавлено спустя 1 час 45 минут 2 секунды:Специально сделал видео получения кватерниона в спокойном положении на протяжении 5 минут без корректировки компаса:
https://youtu.be/cLF15Tmqx68Видно как к 10 секундам кватернион стабилизируется и ведет себя достаточно стабильно. Начальные значения кватерниона по q.w/q.z составляют примерно 0,9165/0,3887, через 5 минут (300 секунд) эти же значения составляют 0,9103/0,4028, что равняется углу поворота вокруг Z примерно по q.w в начале 0,3043 и 0,3068 в конце и примерно по q.z 0.1895/0.196. Разумеется если датчик довольно сильно двигать - плаванье по оси Z будет гораздо сильнее.