Eu tentei vários algoritmos para obter inclinação, rotação e guinada sob acelerações e vibrações lineares contínuas (menor que 0,4 g, frequência menor que 10 HZ). Nenhum deles apresenta bons resultados porque as leituras se desviam ou são afetadas demais pelas acelerações lineares. O que eu quero alcançar é que quando a aceleração externa é menor que + -0,4g, o erro no pitch and roll deve ser menor que + -1deg.
Eu tentei estes algoritmos:
Algoritmo de Madgwick . Quando o ganho Beta é definido muito alto, a convergência é rápida, mas os ângulos são mais suscetíveis a acelerações lineares. Afinei e reduzi o erro em acelerações lineares para + -0,5deg. No entanto, se a vibração for contínua, as leituras serão desviadas e levará uma eternidade para convergir para valores verdadeiros. Faz sentido porque, sob acelerações lineares, o giro é mais confiável e os ângulos calculados são desviados à medida que a integração do giro é desviada.
O algoritmo de Mahony . Ao contrário do de Madgwick, ele não muda de maneira alguma, independentemente dos valores que eu uso para Ki e Kp. No entanto, é sempre afetado por acelerações lineares. (Erros maiores que + -6 graus)
Filtro tradicional de Kalman . Muito tempo foi gasto no ajuste desses enormes vetores R e Q. Até agora, tem o mesmo desempenho do Mahony.
Eu estou usando IMU navalha . Eu sei que com sensores baratos é impossível obter o mesmo resultado que este .
Existem mais algumas opções, como o UKF, mas é difícil entender ou implementar.
Qualquer sugestão é bem-vinda.