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.
fonte
Respostas:
Primeiro, certifique-se de entender dois pontos principais aqui:
A determinação da atitude somente dos dados do IMU é inerentemente ambígua na presença de aceleração linear . Sem conhecimento adicional sobre a natureza das acelerações, sempre haverá um limite superior à precisão que você pode obter.
A precisão é limitada pelo desvio nas medições do giroscópio integrado . Com dados e integração de giroscópio perfeitos, os dados do acelerômetro não seriam necessários. Quanto mais perto você estiver da perfeição, mais poderá ignorar as acelerações.
A seleção do algoritmo de orientação é amplamente irrelevante aqui. Todos eles trabalham com o mesmo princípio: usar a direção da aceleração gravitacional para desviar a correção dos dados do giroscópio integrado, com uma quantidade variável de ponderação entre os dois. Se você tentou ajustar os parâmetros e não obteve os resultados desejados, é improvável que faça melhor com um algoritmo diferente.
Portanto, existem essencialmente duas coisas que você pode fazer.
A segunda opção é difícil de discutir, pois depende dos detalhes da moção que você está estudando. Existem alguns truques simples, como descartar ou remover pesos de aceleração fora de um determinado intervalo. Essencialmente, isso se resume a modelar as acelerações lineares como sendo apenas ocorrências breves. Se o seu sistema estiver em movimento contínuo, não será de grande ajuda.
Existem várias coisas que você pode fazer para melhorar sua integração com o giroscópio:
Você está certo de que os sensores que você está usando não são da mais alta qualidade disponível. No entanto, é possível obter resultados muito bons dos sensores do consumidor se forem suficientemente bem caracterizados e calibrados.
fonte