Algoritmo AHRS sob acelerações lineares contínuas


9

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:

  1. 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.

  2. 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)

  3. 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.


Como você está se integrando ao Kalman?
C. Towne Springer

Usando a integração do Euler, mas as rotações são estritamente de um eixo para evitar DCMs. @ C.TowneSpringer
Timtianyang

Isso deveria funcionar bem? A última vez que fiz isso (ALCM) Euler foi inadequado. Euler é um método de primeira ordem com erro local proporcional ao quadrado do tamanho do passo e erro grosseiro proporcional ao tamanho do passo. Usamos Runge-Kutta de 4ª ordem com um filtro de Kalman. Eu acho que Newton-Feynman ou Euler tiveram um palpite inicial para começar o Runge-Kutta. Você tem o processamento para lidar com isso com uma boa taxa de atualização?
C. Towne Springer

Obrigado pela sugestão. O erro local do método de integração de euler foi ignorado. Planejamos fazer a filtragem na publicação, para não ter grandes restrições à complexidade da computação. @ C.TowneSpringer
Timtianyang

Respostas:


3

Primeiro, certifique-se de entender dois pontos principais aqui:

  1. 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.

  2. 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.

  1. Melhore a precisão da sua integração com giroscópio.
  2. Modele a natureza das acelerações lineares de alguma forma.

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:

  1. Obtenha a melhor estimativa possível de viés de giroscópio . Faça leituras estáticas do giroscópio por alguns segundos imediatamente antes do uso e calcule a média para obter os valores de deslocamento. Não confie em uma calibração prévia única.
  2. Tente minimizar a deriva devido à temperatura. Deixe a IMU aquecer até a temperatura operacional em estado estacionário antes da calibração / uso. Tente mantê-lo a uma temperatura constante durante a operação.
  3. Melhore o seu modelo de calibração. Considere incluir efeitos de eixo cruzado e não linearidade, bem como apenas escala e deslocamento.
  4. Use um método de integração melhor. Já existem algumas idéias nos comentários da sua pergunta.
  5. Veja se você pode acompanhar a deriva do giroscópio. Se o algoritmo de orientação precisar corrigir consistentemente a deriva em uma direção específica, isso poderá ser detectado e usado para ajustar suavemente os valores de polarização.

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.


Algum sensor de consumidor recomendado?
Timtianyang
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.