Могу ли я отменить гравитацию только с помощью гироскопа и магнитометра?

На устройстве я хочу обнаружить диапазон сил: небольшие силы (минимум около 0,01 г), но также и более сильные силы, такие как 0,1–0,15 г.

Это устройство будет иметь разные положения в трехмерном пространстве, поэтому для обнаружения небольших сил мне нужно знать его угол, чтобы иметь возможность вычесть 1 г. Потому что устройство может иметь произвольное положение (угловое положение).

Что я сделал до сих пор: я использовал MPU6050 и использовал дополнительный фильтр с ускорением. и гироскоп. Это что-то вроде:

agnleX_k+1 = 0.98*(angle_k + deltaT * gyro_k+1) + 0.02*angle_acc_k+1;

angle_acc — угол, рассчитанный по ускорению. датчик. Что-то вроде:

arctan(accelX / sqrt(accelX^2 + accelY^2 + accelZ^2 + ))

Итак, меня интересует:

forceX_k+1 = accelX_k+1 - 1g*sin(agnleX_k+1)

Проблема в следующем:

Если я хочу обнаружить небольшую силу, поступающую очень быстро, скажем, accelX_k+1, я бы хотел обнаружить Изменение от 0 г до 0,01 г или более, но в очень небольшом временном диапазоне. Проблема в том, что на мой рассчитанный угол также повлияет это небольшое и быстрое изменение ускорения. датчик, хотя угол на самом деле не изменился.

Я думаю, что мне придется делать расчет угла независимо от ускорения. датчик. Могу ли я сделать что-то вроде дополнительного фильтра с гироскопом и магнитометром? Будет ли это работать так же, как мой фильтр, описанный выше, но только с магнитом? вместо датчика? Или как бы вы это сделали? Я думал об использовании MPU9250.


person user3554669    schedule 27.11.2016    source источник


Ответы (2)


Вы заявили, что используете MPU6050, который содержит как акселерометр, так и гироскоп. Вы можете использовать их независимо друг от друга - получить ускорение от акселерометра и получить углы от гироскопа, а затем использовать углы для компенсации вращения. Нет необходимости, чтобы угол зависел от вашего акселерометра.

person tomtzook    schedule 12.07.2017

Использование библиотеки DMP от Джеффа Роуберга сделает всю работу за вас. он может внутренне компенсировать гравитационное ускорение намного быстрее, чем код Arduino.

Ссылка на github

person M lab    schedule 02.05.2020