Anais do 15O Encontro de Iniciação Científica e Pós-Graduação do ITA – XV ENCITA / 2009 Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 19 a 21, 2009. IMPLEMENTAÇÃO DE SISTEMA DE ATITUDE EM DSP Jorge Augusto Melegati Gonçalves Instituto Tecnológico de Aeronáutica H8B, apto. 208, CTA 12228-461 – São José dos Campos/SP Bolsista PIBIC-CNPq [email protected] Elder Moreira Hemerly Instituto Tecnológico de Aeronáutica Departamento de Sistemas e Controle Praça Marechal Eduardo Gomes, 50 12228-900 – São José dos Campos/SP [email protected] Resumo: Este trabalho tem como objetivo simular e analisar um algoritmo de determinação de atitude baseado na utilização de um filtro de Kalman para combinar as inferências realizadas com tríades de acelerômetros, girômetros e magnetômetros. Por fim, o trabalho propõe uma implementação em uma linguagem que permita a sua implantação em um dispositivo processador digital de sinais. Palavras-chave: Sistemas de determinação de atitude, Navegação, Filtro de Kalman, Processador digital de sinais. 1. Introdução Os sistemas de determinação de atitude estão, na atualidade, em diversos dispositivos não mais se limitando a sua área de aplicação tradicional, a indústria aeronáutica, mas, sim, podendo se encontrar em produtos como dispositivos de interface homem-máquina em equipamentos de entretenimento eletrônico e até em dispositivos portáteis como detectores de queda com o intuito de prevenção de maiores danos. Essa nova demanda exige que os algoritmos de determinação de atitude sejam implementados em processadores menores, como é o caso dos processadores digitais de sinais. Esse trabalho se propõe, então, à implementação de um algoritmo de determinação de atitude em um ambiente que permita a sua instalação em processadores digitais de sinais. Num primeiro momento, dar-se-á um estudo de um algoritmo de determinação de atitude, simulando-o e verificando a sua robustez ao caso do bias dos girômetros e, então, a verificação da implementação em uma outra linguagem. 2. Estudo de um sistema de determinação de atitude O algoritmo proposto compreende basicamente duas etapas: obtenção da atitude através da integração da velocidade angular nos diferentes eixos através das leituras dos girômetros. Com isso, obtém-se a atitude propagada. Paralelamente, são calculados, através da comparação das leituras do acelerômetro e do magnetômetro com os vetores gravidade e campo magnético local, os ângulos de Euler do móvel. Obteve-se, então, de duas formas diferentes uma mesma informação as quais deverão ser levadas em conta na obtenção da atitude estimada. Isso é feito através de um filtro de Kalman. 2.1. Atitude propagada Essa etapa consiste na obtenção da atitude de um próximo instante através da integração da velocidade angular obtida pelos girômetros com a atitude anterior. Isso é realizado através da conversão dos ângulos de Euler iniciais em uma matriz de transformação do referencial de navegação para o referencial do corpo, denominada Cnb. A essa matriz é, então, adicionado um fator de correção da atitude obtido através do produto do período de tempo transcorrido por matriz anti-simétrica obtida das componentes da velocidade angular lido através do girômetro, é feita, então, a normalização da matriz Cnb, obtendo-se a matriz de atitude propagada que entrará novamente no passo seguinte da iteração. 2.2 Atitude obtida através do acelerômetro e do magnetômetro Anais do XV ENCITA 2009, ITA, Outubro, 19-21, 2009 , As leituras do acelerômetro e do magnetômetro fornecem os vetores, no referencial do corpo, força e campo magnético ao qual ele está submetido. Através da comparação com os valores conhecidos desses vetores no referencial de navegação, é possível obter a atitude do corpo. 2.3. Estimação da atitude Para o cálculo da atitude estimada, são utilizados os dados obtidos anteriormente, ou seja: a) propaga-se a atitude, isto é, os ângulos de Euler, usando as leituras dos girômetros, e b) com base nos valores de referência dos vetores gravidade e campo magnético, um Filtro de Kalman corrige a atitude. A cada iteração é calculada a matriz ganho do estimador (L, ganho de Kalman) dado por: L PH T ( H T PH Rz ) (1) onde H, é uma matriz com três linhas e seis colunas, onde as três primeiras colunas representam a matriz identidade, essa matriz leva em conta o fato de que não há uma medida real do bias dos girômetros, Rz é a matriz responsável pela modelagem dos ruídos de medida e a matriz de covariância dos erros de estimação, P, é atualizada em duas etapas: primeiramente, antes do cálculo de L, P é propagada através da Eq. (2). Pk 1 k Pk k T Cd onde (2) I 3 x 3 T F , onde T é o intervalo de integração e F I 3 x 3 , onde β é um fator escalar de sintonia do filtro, e Cd G GT com G = 0,1.I 3 x 3 e σω modelo o ruído de entrada, utilizando o valor de Pk, atualizado na iteração anterior. E, então, após o cálculo de L, P é atualizado seguindo a Eq. (3). P ( I3 x3 LH ) P (3) Com o valor de L, é possível obter um vetor contendo seis elementos que são, a estimativa da atitude, três componentes, e do bias dos girômetros, três componentes, através de: Ee L( y Eˆ (k )) (5) Eˆ (k 1) Eˆ (k ) Ee (6) onde Ê(k) é o valor obtido através de integração e y é o vetor obtido do cálculo envolvendo os dados do acelerômetro e do magnetômetro. Ê(k+1) é o resultado final desta iteração e será utilizado no próximo passo da iteração como entrada no algoritmo de obtenção da atitude propagada. 3. Simulação em Matlab Dado um conjunto de dados de teste constituído de valores de medidas de tríades de acelerômetros, magnetômetros e girômetros e a atitude obtida com um sistema comercial, as etapas da implementação do algoritmo foram acompanhadas através da comparação do resultado obtido com a implementação em desenvolvimento com os resultados de referência, utilizando o software Matlab. Utilizando o Filtro de Kalman exposto, obteve-se os seguintes gráficos comparando o valor esperado (linha verde) com o valor obtido (linha amarela) para a atitude. Nas figuras 1, 2 e 3, observa-se uma boa aproximação dos valores esperados, principalmente, para os ângulos de rolagem e arfagem. Entretanto, em relação ao ângulo de guinada, há uma piora nos resultados devido ao fato que acelerômetro não agrega informação relativa a esse ângulo pois, o vetor aceleração da gravidade é perpendicular ao plano em que se forma esse ângulo. Anais do XV ENCITA 2009, ITA, Outubro, 19-21, 2009 , Figura 1. Comparação do ângulo de arfagem obtido através do algoritmo proposto e de um algoritmo consagrado. Figura 2. Comparação do ângulo de guinada obtido através do algoritmo proposto e de um algoritmo consagrado. Anais do XV ENCITA 2009, ITA, Outubro, 19-21, 2009 , Figura 3. Comparação do ângulo de guinada obtido através do algoritmo proposto e de um algoritmo consagrado. 4. Implementação em linguagem C++ Em busca do objetivo principal do projeto, iniciou-se a implementação do mesmo em uma linguagem que possibilitasse a sua implantação em um dispositivo processador digital de sinais(DSP), assim, a linguagem escolhida foi C++. Nessa implementação, inclui-se a escolha de algoritmos para a solução de problemas que, no Matlab, já haviam sido implementados como o produto de matrizes. Os resultados obtidos são mostrados nas figuras 4, 5 e 6, as linhas verdes representam o valor obtido com um sistema comercial enquanto que a linha vermelha representa o valor obtido com o algoritmo implementado. Anais do XV ENCITA 2009, ITA, Outubro, 19-21, 2009 , Figura 4. Comparação entre valores obtidos para o ângulo de rolagem com implementações em Matlab e em C++. Figura 5. Comparação entre valores obtidos para o ângulo de arfagem com implementações em Matlab e em C++. Anais do XV ENCITA 2009, ITA, Outubro, 19-21, 2009 , Figura 6. Comparação entre valores obtidos para o ângulo de arfagem com implementações em Matlab e em C++. A partir dos gráficos expostos nas figuras 4, 5 e 6, pode-se concluir que o algoritmo implementado em C++ atingiu qualidade similar ao do algoritmo implementado em Matlab. 5. Conclusões Durante a execução do trabalho, foi discutido um projeto de sistema de determinação de atitude com o qual prosseguiu-se com a simulação em ambiente Matlab. Dado os resultados obtidos terem sido satisfatórios, partiu-se para a implementação do mesmo algoritmo em linguagem C++, o que possibilitaria a sua implementação em um dispositivo DSP. Os resultados apresentados pela implementação em um novo ambiente proporcionaram um resultado dentro do esperado. 6. Agradecimentos Ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) por proporcionar o apoio necessário à execução do projeto. 5. Referências Zhu, R. et al., 2007, “A linear fusion algorithm for attitude determination using low cost MEMS-based sensor”, Measurement, No. 40, pp. 322-328. Gebre-Egziabher, D. 2001, “Design and performance analysis of a low-cost aided dead reckoning navigator”, Dissertação de Doutorado, Stanford. Gebre-Egziabher, D. et al, 2004, “Design of Multi-Sensor Attitude Determination Systems”, IEEE transaction on aerospace and electronic systems, Vol. 40, No. 2, pp. 627-648.