desenvolvimento de plataforma de testes para determinação ...€¦ · felipeoliveiratavares...

68
Universidade Federal de Ouro Preto - UFOP - Escola de Minas - Colegiado do curso de Engenharia de Controle e Automação - CECAU Felipe Oliveira Tavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros e magnetômetros Monografia de Graduação em Engenharia de Controle e Automação Ouro Preto, 2017

Upload: others

Post on 07-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Universidade Federal de Ouro Preto - UFOP - Escola deMinas - Colegiado do curso de Engenharia de Controlee Automação - CECAU

Felipe Oliveira Tavares

Desenvolvimento de plataforma de testes para determinação deatitude baseado em acelerômetros e magnetômetros

Monografia de Graduação em Engenharia de Controle e Automação

Ouro Preto, 2017

Page 2: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 3: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Felipe Oliveira Tavares

Desenvolvimento de plataforma de testes para determinação deatitude baseado em acelerômetros e magnetômetros

Monografia apresentada ao Curso de Enge-nharia de Controle e Automação da Universi-dade Federal de Ouro Preto como parte dosrequisitos para a obtenção do Grau de Enge-nheiro de Controle e Automação.

Orientador: prof.Dr. Ronilson Rocha

Ouro Preto, 2017

Page 4: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Felipe Oliveira TavaresDesenvolvimento de plataforma de testes para determinação de atitude baseado

em acelerômetros e magnetômetros/ Felipe Oliveira Tavares. – Ouro Preto, 2017-66 p. : il. (algumas color.) ; 30 cm.

Orientador: prof.Dr. Ronilson Rocha

Monografia de Graduação em Engenharia de Controle e Automação – UniversidadeFederal de Ouro Preto - UFOP - Escola de Minas - Colegiado do curso de Engenhariade Controle e Automação - CECAU, 2017.1. Palavra-chave1. 2. Palavra-chave2. I. Orientador. II. Universidade xxx. III.

Faculdade de xxx. IV. Título

CDU 02:141:005.7

Page 5: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 6: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Dedico a minha família. Sempre me apoioaram em todos os meus desafios .

Page 7: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Agradecimentos

Agradeço meus pais por toda minha criação, e meus irmão pelo convívio. Sou grato tambémao suporte e incentivo a realização desse trabalho dado pelo João Carlos e Ronilson Rocha.

Obrigado aos irmãos da republica Mukifu pela convivência e aprendizado, princi-palmente no chá da tarde.

Page 8: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 9: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

“Pensamentos sem conteúdos são vazios; intuições sem conceitos são cegas” (ImmanuelKant)

Page 10: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 11: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Resumo

Esse trabalho apresenta o desenvolvimento de uma plataforma de testes paradeterminação de atitude. Constitui-se de uma estrutura formada por três anéis quesimulam a rotação nos três eixos (x,y,z). No anel central está localizado uma placacontroladora que integra leituras de magnetômetros e acelerômetros nos três eixos.Usou-se o algoritmo QUEST (Quaternion Estimator) para estimar a atitude comas medidas recolhidas. Criou-se um software de interface onde é possível observara orientação do corpo em termos de ângulos de Euler e Quatérnions, alem de umvirtualização em 3D de um objeto que representa as mesmas.

Palavras-chaves: atitude. robótica. QUEST.

Page 12: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 13: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Abstract

This work presents the development of a test platform for attitude determination. Itconsists of a structure formed by three rings that simulate the rotation in the threeaxes (x, y, z). In the central ring is located a controller board that integrates readingsof magnetometers and accelerometers in the three axes. The QUEST algorithm(Quaternion Estimator) was used to estimate the attitude with the measurementscollected. An interface software has been created where it is possible to observe theorientation of the body in terms of Euler angles and Quatérnions, in addition to a3D virtualization of an object that represents them.

Key-words: attitude. Robotic. QUEST.

Page 14: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 15: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Lista de ilustrações

Figura 1 Representação geométrica da rotação . . . . . . . . . . . . . . . . . . . 24Figura 2 Alguns modelos de prototipo tridimensionais da plataforma . . . . . . 25

Figura 3 Representacao dos ângulos de Bryant, um conjunto assimétrico deângulos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Figura 4 Esquematico do sistema de determinação de atitude . . . . . . . . . . . 34Figura 5 Componentes dos MEMs . . . . . . . . . . . . . . . . . . . . . . . . . . 35Figura 6 Foto do dispositivo AltIMU-10 da Pololu . . . . . . . . . . . . . . . . . 35Figura 7 Especificação placa Arduino Uno . . . . . . . . . . . . . . . . . . . . . 38Figura 8 Placa Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 9 Tela da interface gráfica com o usuário . . . . . . . . . . . . . . . . . . 44Figura 10 Modelo do prototipo CAD 3D em duas posições diferentes.Rotação em

90o do anel em verde e de 180o do anel central que abriga o sensor e oArduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Figura 11 Plataforma de testes montada e simulando uma orientação . . . . . . . 47Figura 12 Tela do software gráfico, correspondente a orientação da montagem. Os

dados com o "Q"representam o quatérnion estimado, e "Euler"os ângulosde Euler correspondentes (roll,pitch e yaw) . . . . . . . . . . . . . . . . 48

Figura 13 Gráfico contendo os erros com relação as medidas dos ângulo dospotenciômetros e as obtidas com o algoritmo implementado, em relaçãoao eixo X (Roll) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Figura 14 Gráfico contendo os erros com relação as medidas dos ângulo dospotenciômetros e as obtidas com o algoritmo implementado, em relaçãoao eixo Y (Pitch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Figura 15 Gráfico contendo os erros com relação as medidas dos ângulo dospotenciômetros e as obtidas com o algoritmo implementado, em relaçãoao eixo Z (Yaw) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Page 16: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 17: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Lista de tabelas

Page 18: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 19: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Lista de abreviaturas e siglas

VANT Veiculo Aéreo Não Tripulado

QUEST Quaternion Estimation

Page 20: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 21: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Lista de símbolos

θ Letra grega Theta

λ Lambda

ψ Psi

φ Phi

∈ Pertence

Page 22: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 23: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Sumário

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.1 Justificativas e Relevância . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.4 Organização e estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 Determinação de Atitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.1 Matriz de rotação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.2 Ângulos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3 Quatérnion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.1 Sistema de Sensoriamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.1.1 Sensores MEMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.1.2 Giroscópio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.1.3 Acelerômetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.1.4 Magnetômetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.2 Sistema de Estimação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.1 Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.2 Algoritmo de determinação de atitude - QUEST . . . . . . . . . . . 38

3.3 Interface com Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.3.1 Interface gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.4 Sistemas de comunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5 Prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.1 Montagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.2 Calibração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3 Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Apêndices 55

APÊNDICE A Algoritmo QUEST Arduino . . . . . . . . . . . . . . . . . . . . 57

Page 24: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Anexos 65

Page 25: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

23

1 Introdução

Atitude pode ser definida como a orientação de um corpo rígido no espaço emrelação a um referencial inercial. É geralmente discutida no setor aeroespacial (satélites,Veiculo aéreo não tripulado - VANT) mas também vê-se em muitas outras aplicações darobótica, na cinemática de juntas em braços robóticos, em robôs autônomos na mineração,entre outros. Em satélites, saber a atitude é essencial para sua operação, seja pelo corretoapontamento de suas placas solares para o Sol, para direcionar uma antena de comunicaçãoou uma câmera de monitoramento ou então em telescópios espaciais, que precisam de umadireção correta para capturar detalhes dos corpos celestes alvos. Em missões brasileiras,por exemplo, tem-se a SERPENS II(Sistema Espacial para Realização de Pesquisa eExperimentos com Nanos Satélites), onde em um de seus experimentos "...o controle deatitude é necessário para garantir o apontamento adequado do vetor de impulso."(DeBrum et al., 2016) Já na área dos VANTs tal tecnologia é indispensável na estabilidade ena trajetória de voo onde espera-se que o sistema de controle mantenha o drone paradono ar, rejeitando pertubações externas. No caso da trajetória, ao definir uma inclinação, odrone consegue o deslocamento, controlando-se a velocidade de cada uma de suas hélices,conforme for o movimento.

Para representar a atitude usa-se geralmente duas ferramentas matemáticas, cha-madas por operadores de rotação, os ângulos de Euler e quatérnions,(Gholitabar Omrani,2010) responsáveis por traduzir o sistema de coordenadas do corpo para o referencial. Naprimeiro tem-se uma matriz de 9 elementos descrevendo a rotação em função dos ângulosdesenvolvidos em cada eixo (row, pitch e yaw) para conseguir a rotação desejada. Já osquatérnions utilizam somente 4 elementos para descrever a mesma, tornando-se muitoatrativa quanto a custo computacional. A ideia dessa última é que toda rotação espacialpode ser descrita através de um vetor e um ângulo de giro (GOLDMAN, 2011), Figura 3.

Os algoritmos utilizados para a estimação da atitude de um satélite podem serclassificados como determinísticos ou de otimização. De qualquer forma, estes algoritmosrequerem dois ou mais vetores de observação com direções conhecidas para garantir umbom desempenho da determinação da atitude em relação a um referencial inercial.(ROCHA;RODRIGUES, 2016, p.9) Em (BAK, 1999) é demonstrada que a determinação de atitudepode ser feita usando somente magnetômetros para leitura da direção do vetor campomagnético terrestre. Em (VISCITO et al., 2007) vê-se um método de se utilizar os painéisfotovoltaicos de alimentação de satélites (no caso em formato de cubo) para os vetoresreferenciais. Já em (LIEBE, 1995) é feito usando posições de estrelas. E por fim em (ZHU et

Page 26: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

24 Capítulo 1. Introdução

Figura 1: Representação geométrica da rotação

Fonte: Marinho (2013, p. 24)

al., 2007) tem-se uma abordagem a qual atualmente é muito comum no problema da atitudeem VANTs, utilizando de sensores chamados MEMS (Micro eletrical mecanichal system),onde estão inseridos por exemplo alguns acelerômetros, giroscópios e magnetômetros.

De posse dos vetores de referencia, o passo seguinte parte da aplicação de algoritmospara estimação de atitude do corpo em questão.Para tanto existem basicamente 3 métodos:um geométrico, um algébrico e o q-method (por meio de otimização).(WERTZ, 1978) Nesseúltimo grupo é inserido o algoritmo QUEST (QUAternion ESTimation) que foi escolhidopara aplicação neste trabalho por seu baixo custo computacional.

Nesse contexto foi desenvolvido um ambiente para testes em determinação deatitude. Nele é simulado a orientação de um corpo através de uma montagem que permitea rotação nos três eixos espaciais. Os vetores de referencia são adquiridos com a leiturade sensores MEMs (acelerômetros e magnetômetros) e a atitude é calculada por umaunidade microprocessada com um algoritmo QUEST implementado. A mesma tambémtem a função de comunicação com um software para apresentação ao usuário, em umainterface gráfica, a movimentação calculada do corpo central em termos de ângulos deEuler e Quatérnions.

1.1 Justificativas e Relevância

Nesses últimos anos vê-se um crescente número de projetos relacionados comcontrole de satélites artificiais e robótica no departamento de controle e automação daUniversidade Federal de Ouro Preto. A proposta desse trabalho vem para contribuir paraa contínua melhora na produção do conhecimento relacionado ao assunto.

Page 27: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

1.2. Metodologia 25

1.2 MetodologiaNo desenvolvimento da plataforma de simulação de determinação de atitude foi

necessário, primeiramente, definir alguns de seus objetivos, os quais se resumem, semelhantea Vilela Castro (2006, p.25) "..ler a orientação atual do satélite, processar os algoritmosnecessários, gerar a matriz de atitude que relaciona essa orientação com uma referência eapresentá- la em um dispositivo visual".

Portanto criou-se uma montagem física, com três gimbals 1, que simula todasrotações possíveis em cada eixo. Localizado no anel central dessa estrutura, encontra-se oelemento sensor e a unidade controladora. Essa última, comunica com um software em umcomputador entregando os dados processados dos sensores para apresentação gráfica dasrotações, tanto na parametrização em ângulos de Euler quanto em quatérnions,

A fim de auxiliar no processo de projeto da plataforma foi utilizado um softwarede desenho assistido por computador (CAD) para criação de modelos 3D da mesma,e assim verificar seu funcionamento. A Figura 2, mostra alguns modelos criados. Emtermos mais operacionais da plataforma, foi usado para estimar a atitude um sistemaeletrônico o qual consiste em uma placa que integra um grupo de nove sensores MEMs(MEMS - MicroElectroMechanical Systems). Esse componente foi disposto no centro dosanéis do gimbal, o que permite a correspondência do sistema de coordenadas de ambos.Localizado na face oposta ao MEMS, no anel central, tem-se uma unidade microprocessadaresponsável por duas funções: processamento de dados dos sensores (aplicação de filtros ealgoritmos) e comunicação com o aplicativo de interface gráfica. Com relação ao aplicativo,foi programado utilizando a IDE Processing, um software de desenvolvimento de aplicaçõesgráficas livre. Com isso, em resumo, tem-se um modelo virtual da plataforma, comsua orientação estimada através dos sensores de atitude, o qual permite visualizar aparametrização das rotações tanto em ângulos de Euler quanto em quatérnion.

Figura 2: Alguns modelos de prototipo tridimensionais da plataforma

Por fim foram realizados testes com a plataforma. Em cada gimbal foi acoplado aseu eixo um potenciômetro que fornece o angulo de inclinação. Esses foram calibrados com1 gimbal é um suporte pivotado que permite a rotação de um objeto sobre um eixo (GIANCOLI, 2000)

Page 28: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

26 Capítulo 1. Introdução

medidas feitas manualmente. Coletou-se amostras de ângulos obtidos com transferidor e osseus respectivos valores dados pela resistência variável. Com essas amostra pode-se traçaruma equação que relaciona a medida de tensão do potenciômetro com o ângulo de rotação.O conjunto de três ângulos obtidos pelas medidas dos potenciômetros foram comparadoscom os ângulos obtidos pelo algoritmo de atitude utilizando os sensores MEMs. Assimpode-se verificar a validade dos métodos usados na determinação de atitude.

1.3 ObjetivosO objetivo principal do trabalho é o de incentivar a pratica de pesquisa na área

de robótica e engenharia espacial na Universidade Federal de Ouro Preto. Para tantotem-se como objetivos específicos a criação de plataforma de simulação de atitude quese apresente como uma ferramenta multidisciplinar inserindo conceitos em tecnologiasespaciais. Entre as disciplinas que podem ser exploradas alem da robótica estão: circuitosdigitais, desenvolvimento de software e sistemas embarcados.

1.4 Organização e estruturaO problema a ser discutido nesse trabalho se trata de criação de uma plataforma

de testes. Seguindo para os capítulo 2 e 3 são apresentados os conceitos da determinaçãode atitude (representação, algoritmos, entre outros) e os princípios de funcionamento doscomponentes usados no protótipo criado (sensores, processadores e software), respectiva-mente. No capítulo 4 mostra-se o projeto e desenvolvimento da plataforma. E finalmenteencerra-se com a apresentação dos resultados obtidos, e a conclusão geral.

Page 29: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

27

2 Determinação de Atitude

O termo atitude refere-se sobre a orientação de um corpo no espaço. No seguimentoaeroespacial é usado para descrever a posição rotacional que um satélite se encontraem relação a um sistema referencial (normalmente localizado na Terra). Neste ramo,segundo Shuster e Dellinger (1994, p.236), a habilidade de saber a atitude do satélite(determinação de atitude) e a habilidade de comandar uma atitude (controle de atitude)são indispensáveis para sua performance. Em um satélite de comunicação, por exemplo, éindispensável um apontamento preciso para sua base terrestre. Em casos de sensoriamentoremoto, é necessário mirar os sensores em um ponto especifico. Além da área espacial évisto o estudo de atitude em outras sub áreas da robótica, em sistemas de estabilidade emVANTs (Veículos Aéreos Não Tripulados) (HENRIQUES, 2011) ou na orientação de robôsautônomos (VAGANAY; ALDON; FOURNIER, 1993).

Na representação da atitude, ou seja, para descrever a orientação de um sistemade coordenadas em relação a um outro de referencia, geralmente utilizam-se três formas:matriz de rotação, Ângulos de Euler e Quatérnions. O primeiro consiste no uso de umamatriz 3x3 como operador para rotacionar vetores descritos em um sistema de coordenadaspara outro. É talvez o método mais simples. Embora sua simplicidade seja atraente paraaplicação real, seu custo computacional é elevado devido a redundância de elementospara representar a atitude, ao todo nove valores. Em vantagem tem-se os ângulos deEuler, em que a mesma rotação é descrita em termos de somente três ângulos. "Com estemétodo é possível especificar a orientação de um sistema fixo x,y,z em relação ao sistemainercial X,Y,Z, através de três rotações consecutivas. Os ângulos (ψ, θ, φ) associadosàs rotações são conhecidos como Ângulos de Euler."(THIAGO, 2006). Entretanto essemétodo tem a desvantagem de possuir singularidades em ângulos que zerem as funçõestrigonométricas (0o e 180o). Em alternativa para contornar essa desvantagem e manter umcusto computacional reduzido utiliza-se os quatérnions. Neste, a atitude é representada com4 elementos não dependentes de funções trigonométricas. (GARCIA; KUGA; ZANARDI,2011, p.24). Essas três ferramentas de representação de atitude é detalhada nos tópicosque seguem.

2.1 Matriz de rotação

Uma matriz de rotação é uma matriz cuja multiplicação com um vetor rotacionaesse vetor enquanto preserva seu tamanho. O grupo ortogonal especial de todas as matrizes

Page 30: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

28 Capítulo 2. Determinação de Atitude

3x3 será denotado por SO(3) (DIEBEL, 2006, p.4). Assim, se R ∈ SO(3) então:

detR = ±1 e R−1 = RT (2.1)

Nos referenciamos os elementos da matriz de rotação como segue:

R =[R1 R2 R3

](2.2)

R =

r11 r11 r11

r12 r12 r12

r13 r13 r13

(2.3)

Existem duas possíveis convenções para definição da matriz de rotação que codifica a atitudede um corpo rígido a ambos são usados no corrente caso. Alguns autores preferem escrevera matriz que mapea a coordenada do corpo-fixo para o sistema global de coordenadas;outros apresentam o mapeamento ao contrario, do sistema global de coordenadas para osistema do corpo-fixo. "(...) Uma matriz de rotação também pode ser referida como ’MatrizCosseno Diretor’, por causa de seus elementos serem cossenos dos ângulos entre os eixosdo corpo-fixo e do global. Denotando o eixo global por (x, y, z) o eixo do corpo-fixo por ,seja , por exemplo, o angulo sem sinal entre eixo-x’ o eixo-y’. Em termos desse ângulos, amatriz de rotação pode ser escrita como:"(DIEBEL, 2006)

R =

cos(θ(x′,x)) cos(θ(x′,y)) cos(θ(x′,z))cos(θ(y′,x)) cos(θ(y′,y)) cos(θ(y′,z))cos(θ(z′,x)) cos(θ(z′,y)) cos(θ(z′,z))

(2.4)

2.2 Ângulos de Euler

Segundo Diebel (2006) qualquer rotação no espaço pode ser descrita por umasequência coordenada de outras três rotações. "Os ângulos de Euler formam um conjuntode três parâmetros independentes que permitem representar o operador rotação atravésda superposição de três rotações planas (Junkins e Shuster, 1993). Existem 12 diferentesconjuntos de ângulos de Euler (Wertz, 1978, Shuster, 1993a), 6 simétricos e 6 assimétri-cos."(TRINDADE; SAMPAIO, 2000). Usaremos nesse trabalho um conjunto assimétricode Ângulos de Euler especifico, denominado Ângulos de Bryant, o qual usa-se três rotaçõesplanas para representar o operador de rotação. (TRINDADE; SAMPAIO, 2000). usaremosneste trabalho o seguinte conjunto numérico:

Page 31: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

2.2. Ângulos de Euler 29

Figura 3: Representacao dos ângulos de Bryant, um conjunto assimétrico de ângulos de Euler

Fonte: (TRINDADE; SAMPAIO, 2000, p.29)

1. Uma rotação de ψ (yaw) em torno do eixo E3: R1(z, ψ)

2. Uma rotação de θ (pitch) em torno do eixo r2: R2(x,θ)

3. Uma rotação de φ (roll) em torno do eixo s1: R3(z, φ)

Utilizando a ideia de operador de rotação, podemos escrever a transformaçãoresultante como segue:

x = R ·X (2.5)

onde R é a sequencia de rotação dada por:

R = R3(z, φ) ·R2(x, θ) ·R1(y, ψ) (2.6)

Podemos rescrever o operador R na forma matricial (matriz de rotação), segundo demons-trado por Trindade e Sampaio (2000, p.30):

R =

cψ · cφ− sψ · cθ · sφ −cψ · sφ− sψ · cθ · cφ sψ · sθsψ · cφ+ cψ · cθ · sφ −sψ · sφ+ cψ · cθ · cφ −cψ · sθ

sθ · sφ sθ · cφ cθ

(2.7)

Page 32: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

30 Capítulo 2. Determinação de Atitude

Onde c e s são abreviações de cosseno e seno, respectivamente. Em via contrariapode-se então calcular os ângulos de Euler a partir da matriz de rotação, pela relação:

φ = tan−1(r31

r32) (2.8)

sen(θ) = r31 · sen(φ) + r32 · cos(φ)cos(θ) = r33

(2.9)

sen(ψ) = r11 · cos(φ)− r32 · sen(φ)cos(ψ) = r21 · cos(φ)− r22 · sen(φ)

(2.10)

Pode-se observar que essa inversão possui singularidades para valores de θ = 0 eθ = π, pois:

R =

cos(ψ ± φ) −sen(ψ ± φ) 0sen(ψ ± φ) cos(ψ ± φ) 0

0 0 ±1

(2.11)

2.3 QuatérnionPode-se pensar também que usando um vetor para representar um eixo e um ângulo

em torno desse eixo podemos descrever qualquer rotação no espaço, usando para tantoquatro valores. A ferramenta matemática que também utiliza esse conceito é os Quatérnion.Portanto de forma geral um quatérnion é dado como:

q = (s,~v) (2.12)

onde s é um escalar (parte real) e ~v é um vetor tridimensional (parte imagina-ria)(COUTINHO; GATTASS, 2002). Um quatérnion também pode ser definido como umnúmero complexo, mas com quatro dimensões, na forma (TRINDADE; SAMPAIO, 2000):

q = q0 + i · q1 + j · q2 + k · q3 (2.13)

onde i, j e k são símbolos da sua parte imaginaria que seguem a regra (TRINDADE;SAMPAIO, 2000):

i2 = j2 = −1j · k = −k · j = i

k · i = −i · k = j

i· = −j · i = k

(2.14)

Page 33: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

2.3. Quatérnion 31

Partindo então da definição e da composição de um quatérnion é abordado agorasobre como são realizadas rotações com o mesmo. Considere que o ponto ~r = (rx, ry, rz) ,o qual realizaremos uma rotação, representado de forma quaternária por p = (0, ~r) comparte real nula.(COUTINHO; GATTASS, 2002) E seja q = (s,~v) um quatérnio unitário(qq = 1) correspondente a essa rotação. Tem-se portanto o operador de rotação, baseadoem quatérnion, dado por:

q = (cos(θ2), sen(θ2)~n) (2.15)

Onde ~n é o vetor unitário que define o eixo de rotação e θ o angulo da mesma.

Seja um ponto ~r = (rx, ry, rz) sobre o qual aplica-se uma rotação, representada porum quatérnion p = (0, ~r) com parte real nula. O operador de rotação entorno de ~r seráum quatérnion unitário q = (s,~v), tal que qq = 1. Tem-se portanto, segundo Coutinhoe Gattass (2002), que o resultado da rotação de p por q poderá ser obtido atraves daseguinte expressão

Rq(p) = qpq−1 (2.16)

Dado que q é unitário, temos que o inverso de q é seu conjugado, pois

qq = 1⇒ q−1qq = q−1 ⇒ q = q−1 (2.17)

Portanto, pode-se escrever a expressão de rotação como:

Rq(p) = qpq (2.18)

Page 34: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 35: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

33

3 Desenvolvimento

Para facilitar a apresentação da plataforma de determinação de atitude dividiu-seseu desenvolvimento em quatro sistemas: sistema de sensoriamento, de controle, de interfacecom o usuário e de comunicação. No primeiro é abordado, antes de mais nada, o motivode escolha dos sensores bem como sua especificação técnica e princípios de funcionamento.São apresentados os giroscópios, acelerômetros e magnetômetros. Dando prosseguimento,o sistema de controle, tem-se a mesma metodologia do anterior (especificação e princípios)adicionando também os algorítimos usados para a determinação de atitude, para a coletade dados e filtros/condicionadores de sinais. Em seguida é mostrado a especificação edesenvolvimento do software de interface gráfica com usuário. Por fim o desenvolvimentodo sistema responsável pela interconexão de todos os outros é descrito. A Figura 4 mostrao esquema geral dos sistemas e suas funções.

Uma vez definidas as estratégias a serem utilizadas para a determinação de atitude,parte-se para a montagem do dispositivo que fará esta determinação. Tal dispositivo devedispor, basicamente, de sensores, condicionadores de sinais, conversores analógico/digitalprocessador, memória e portas paralelas e/ou seriais, para que seja capaz de ler a orientaçãoatual do satélite, processar os algoritmos necessários, gerar a matriz de atitude que relacionaessa orientação com uma referência e apresentá- la em um dispositivo visual.

3.1 Sistema de SensoriamentoPara a determinação da orientação de um corpo no espaço é necessário que se

tenha informações que descrevam a correspondência entre os sistemas de coordenadastrabalhados. Geralmente usa-se de vetores de referência descritos tanto no sistema inercialquanto no sistema a ser determinado a atitude. Para a estimação dos mesmos são usadosos mais diferentes tipos de fontes,por exemplo, vetores de direção do sol, de posição deuma estrela ou a vetores da orientação do campo magnético terrestres.

Basicamente existem duas alternativas para a obtenção das medidasque contribuirão no processo de estimação da atitude do satélite: ou asmedidas são obtidas com respeito a uma direção de referência usandoalgum tipo de sensor (sensor solar, sensor de Terra, sensor de estrelas)ou são obtidas medindo diretamente a aceleração centrífuga utilizandogiroscópios e acelerômetros.(GARCIA; KUGA; ZANARDI, 2011)

Neste trabalho usou-se medidas de giroscópios, acelerômetros e magnetômetros

Page 36: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

34 Capítulo 3. Desenvolvimento

Figura 4: Esquematico do sistema de determinação de atitude

para o problema da altitude. Para tanto usou-se de um dispositivo integrado o qual fornecedados nos três eixos de todos esses sensores, o que será apresentado a seguir.

3.1.1 Sensores MEMs

MEMs é a sigla para usada para classificar sensores construídos em escalas reduzidase que utilizam princípios eletromecânicos para adquirir suas medições. Do ingles "MicroElectro - Mechanical Systems"(MEMs) é uma tecnologia que é geralmente definida comosendo elementos microeletrônicos minituarizados que usam de microfabricação para suamanufatura.(MEMS; EXCHANGE, 2016)

Os elementos funcionais dos MEMS são estruturas minituarizadas, sendo que os maisnotáveis e interessantes são os microssensores e microatuadores. Esses são categorizados de

Page 37: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.1. Sistema de Sensoriamento 35

forma apropriada com "transdutores", onde são definidos como dispositivos que convertemenergia de uma forma para outra. No caso dos microssensores, o dispositivo converte amedição do sinal mecânico em um sinal elétrico.(MEMS; EXCHANGE, 2016)

Figura 5: Componentes dos MEMs

Fonte: MEMS e Exchange (2016)

Utilizou-se o modulo MEMs integrado “AltiMU-10”. A escolha desse foi devidosua popularidade no mercado e pelo fato de possuir um conjunto de três CIs (circuitosintegrados) referentes a sensores de giro (L3GD20H), de aceleração e de campo magnético(LSM303D) (também possui um de altitude – LPS331AP).O AltIMU-10 V3 integra essestrês sensores de orientação em uma única placa, incluindo também um regulador de tensãoe um circuito de "level-shifting"mantendo um tamanho reduzido. A comunicação com cadaelemento sensor é feita com o protocolo I2C, sendo que cada subsistema (magnetômetro,giroscópio, acelerômetro e altímetro) possuem um endereço próprio para ser localizado narede I2C.(POLOLU, 2016)

Figura 6: Foto do dispositivo AltIMU-10 da Pololu

Fonte: pololu (2016)

Page 38: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

36 Capítulo 3. Desenvolvimento

3.1.2 Giroscópio

Basicamente giroscópio é um instrumento para medição de aceleração angular. “Onome ‘Giroscópio’ deriva das palavras gregas ‘gyros’, que significa rotação, e ‘skopein’, quesignifica ver. Esse foi o nome dado por Jean Foucault, um físico francês, ao dispositivocapaz de medir a rotação do planeta Terra, inventado por ele em 1852.” Hoje em diaele é muito comum em sistemas de navegação inercial (INS) de forma compacta com aclassificação de MEMs.

Como já foi dito, usou-se o circuito integrado L3GD20H embarcado em uma placajuntamente com sensores de campo magnético e acelerômetros. O sistema possui precisãoajustável de ±245/± 500/± 2000 dps (degree per second – Graus por segundo) e oferecesuporte a comunicação I2C para leitura de seus dados. Além disso tem-se também umbuffer para armazenagem de 32 medidas, o que torna-o mais eficiente na recuperação deerros de comunicação ou de processamento de leitura. O dispositivo entrega para a centralde comunicação medidas da aceleração angular nos 3 eixos, (x,y,z).

Apesar de precisão considerável, suficiente para a aplicação em questão, o giroscópiousado apresenta erros devido ao fenômeno chamado de bias. “...os giros possuem um erro de-vido à deriva, associado a pequenas imperfeições em seu mecanismo, significando que o errodas suas medidas pode aumentar com o tempo”(GARCIA; KUGA; ZANARDI, 2011).Paracontornar esse problema foi aplicado um filtro que será apresentado posteriormente.

3.1.3 Acelerômetro

Trata-se de um dispositivo, como o próprio nome sugere, que estima aceleraçõeslineares. A mesma é adquirida a partir da medição de força incidente em um corpo deprova dentro do dispositivo. Desse modo, um dispositivo de medição de aceleração de trêseixos retorna não só a aceleração inercial representada por componentes em seu sistemade coordenadas, mas também referente a gravidade.(BÓ; BORGES, 2007) Essa últimafaz o acelerômetro ideal para aplicar em vários algoritmos de determinação de atitude, jáque o vetor de gravidade é conhecido também no sistema inercial. Contudo percebe-seque em movimento acerelado esse vetor torna-se ofuscado por outras componentes deaceleração. Foi utilizado o circuito integrado LSM303D para medição da aceleração emtrês eixos (coincidente com o do giroscópio). Seu fator de escala também é ajustável, deforma que cinco precisões são possíveis: ±2/± 4/± 6/± 8/± 16 g (gravidade). Semelhanteao giroscópio (L3GD20H) o acelerômetro possui um buffer de dados com 32 níveis, e oprotocolo de comunicação I2C é suportado.

Page 39: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.2. Sistema de Estimação 37

3.1.4 Magnetômetro

Passamos agora para apresentar o dispositivo de medição de intensidade de campomagnético. “Já um magnetômetro, por sua vez, é um sensor capaz de medir a intensidadedo campo magnético incidente no dispositivo” (BÓ; BORGES, 2007).Com leituras deintensidade em cada eixo (coincidente com o acelerômetro e giroscópio) é possível estimara orientação do campo magnético terrestre, e com isso constrói-se mais um vetor dereferência que também é conhecido no sistema referencial inercial (lembrando que nessetrabalho adotamos um sistema de referência localizado no centro da Terra). O dispositivoem questão é integrado no mesmo chip que o acelerômetro (LSM303D), de modo quetambém possui suporte para o mesmo protocolo de comunicação (I2C), os mesmos níveisde buffer escala ajustável em: ±2/± 4/± 8/± 12 gauss.

3.2 Sistema de Estimação

3.2.1 ControladorComo elemento principal no sistema de estimação tem-se um a placa de desenvol-

vimento Arduino Uno c© R© dotado de um microprocessador modelo atmega 328P. Essaplaca tem tido uma popularidade muito grande, devido a união de um processador versátilcom uma plataforma de software e hardware que facilita o desenvolvimento de aplicaçõescom característica de licença livre, o qual possibilita uma comunidade de suporte sempreativa.

A placa Arduino é capaz de ler entradas - luzes em um sensor, um dedoem um botão, ou uma mensagem do Twitter - e modificar em saídas -ativando um motor, ligando um LED, publicando algo online. Você podedizer para sua placa o que fazer mandando uma sequencia de instruçõesao microcontrolador da placa (ARDUINO, 2016)

Atualmente existem várias placas de desenvolvimento Arduino, usamos nestetrabalho o modelo Uno, com as características mostradas na Figura 7.

Devido a toda essa facilidade é muito comum encontrar esse dispositivo aplicadoem áreas acadêmicas e de educação. No caso deste trabalho essa unidade é responsável porrecolher as medidas dos sensores (acelerômetros, giroscópios e magnetômetros), construiros vetores de observação e normalizá-los, aplicar os algoritmos de determinação de atitudee por fim entregar os operadores de rotação ao software.

Para a programação do microcontrolador é oferecido pelo Arduino uma IDE nativao qual usa a linguagem C. Devido sua comunidade de desenvolvimento tem-se uma extensadisponibilidade de bibliotecas, desenvolvidas por usuários, que facilitam a programação.Na comunicação com os sensores MEMs usados neste trabalho, por exemplo, usou-seuma biblioteca a qual fornece acesso a funções de nível mais alto para a configuração e

Page 40: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

38 Capítulo 3. Desenvolvimento

Figura 7: Especificação placa Arduino Uno

Fonte: Arduino (2016)

leitura dos mesmos. Outra que foi usada para facilitar o desenvolvimento foi referentea operações com matriz, onde tem-se funções para inúmeros operações (multiplicação,divisão, soma, entre outras). Contudo não são todas as aplicações que se encontrambibliotecas auxiliares. Como exemplo o algoritmo de determinação de atitude usado, oqual teve que ser totalmente implementado.

3.2.2 Algoritmo de determinação de atitude - QUEST

O algoritmo usado para determinar a atitude segundo alguns vetores de referênciafoi o QUEST (do inglês QUaternion ESTimation).

Um problema recorrente na determinação de atitude em satélites é em comodeterminar a atitude dado um conjunto de vetores de medidas. Para tanto, uma matrizortogonal A (matriz de atitude ou “direction-cosine matrix” é encontrada satisfazendo:

AVi = Wi (i = 1, · · · , n) (3.1)

onde V1, · · · , Vnsão um conjunto de referencias unitárias, em que cada n representauma direção conhecida (e.g, direção da Terra, do Sol, de uma estrela, ou do campogeomagnético) em relação a um sistema de coordenadas de referencia, e Wi, · · · ,Wn são

Page 41: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.2. Sistema de Estimação 39

Figura 8: Placa Arduino Uno

Fonte: Arduino (2016)

os vetores unitários observados, em que a mesma direção n é medida com referencia aosistema de coordenadas do satélite.

Pelo motivo de tanto o vetores unitários observados e os de referencia serem afetadospor erros, uma solução para A geralmente não existe, nem mesmo para n = 2. Shuster e Oh(2012) mostra dois tipos diferentes de encontrar a atitude de satélites, primeiro o métododeterminístico TRIAD, e segundo ótimo baseado no problema de Wahba. O TRIAD, comoé mostrado no artigo de (SHUSTER; OH, 2012) possui duas desvantagens, primeiro porquesó consegue determinar a atitude com apenas dois vetores de observação, se existir maismedidas o resultados dessas devem ser combinados formando pares de vetores. Além dissomesmo com dois vetores de observação com esse método perde-se um pouco da precisãopelo fato de parte da medição ser descartada. Essas duas desvantagens não estão presentesno algoritmo ótimo, em que a atitude é calculada atraves de uma função de custo queleva em conta todas as n medições. Por essa razão neste trabalho não foi implementado oTRIAD, e sim um algoritmo ótimo como será mostrado nos próximos tópicos. Entretantoesses algoritmos ótimos geralmente são mais lentos que os determinísticos. A função decusto estudada no artigo de Shuster e Oh (2012) é dada por :

L(A) = 12∑

ai∣∣∣Wi − AVi

∣∣∣2 (3.2)

Onde ai, i = 1, . . . , n são valores não negativos. Ela foi primeiramente proposta porWahba em 1965. Davenport mostrou que essa função de custo quadrática na matriz deatitude pode ser transformada em um problema de autovetor e autovalor generalizados.Isso é uma grande simplificação do problema proposto por Wahba, desde que o quatérnion

Page 42: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

40 Capítulo 3. Desenvolvimento

é sujeito a menos restrições, em comparação aos nove elementos da matriz de atitude.A substituição de Davenport conduz diretamente a uma equação de autovetor para oquatérnion.

É possível desenvolver um esquema aproximado que permita a computação doquatérnion ótimo com grande precisão, sem ter que resolver o problema do autovalorcompleto explicitamente com uma redução computacional significante. Esse algorítimo,QUEST (Quaternion ESTimator), preserva todos as vantagens computacionais de umrápido algoritmo determinístico enquanto mantêm um resultado ótimo. Uma simplesexpressão analítica também pode ser obtida na matriz de covariância QUEST.

Nós desejamos encontrar uma matriz ortogonal Aopt que minimiza a função decusto dada pela equação (3.2). Por causa da função de custo poder ser escalada (no sentidode aumentar os valores em escala) sem afetar a determinação de Aopt, é possível ter:

n∑i=1

ai = 1 (3.3)

A função de ganho g(A) é definida por:

g(A) = 1− L(A) =n∑i=1

aiWi

TAVi (3.4)

A função de custo L(A) será mínima quando a função de ganho g(A) for máxima.Portanto o objetivo será centrado em encontrar a matriz de atitude ótima que maximizag(A). Interpretando os termos individuais da Eq. (3.4) como matrizes 1x1, segue-se doconhecido teorema do traço que:

g(A) =n∑i=1

aitr[Wi

TAVi

]= tr

[ABT

](3.5)

onde tr indica o operador traço e B, a matriz de atitude, é dado por:

B =n∑i=1

aiWiViT (3.6)

A maximização de g(A) é complicada pelo fato dos nove elementos de A estaremsujeitos a seis restrições. Para tanto, é conveniente expressar A em termos de quatérnion.O quatérnion q que representa uma rotação é dado por:

q =

Qq =

Xsen( θ2)cos( θ2)

(3.7)

Page 43: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.2. Sistema de Estimação 41

onde X corresponde ao eixo de rotação e θ o angulo de rotação em torno de X. Oquatérnion deve satisfazer uma simples restrição, que é:

qT q = |Q|2 + q2 = 1 (3.8)

A matriz de atitude A é relacionada com quatérnion como:

A(q) = (q2 −Q ·Q)I + 2QQT + 2qQ (3.9)

onde I é a matriz identidade e Q é a matriz antissimétrica dada por:

Q =

0 Q3 −Q2

−Q3 0 Q1

Q2 −Q1 0

(3.10)

E introduzindo as seguintes grandezas:

σ = trB =n∑i=1

aiWi · Vi (3.11)

S = B +BT =n∑i=1

ai(WiViT + ViWi

T ) (3.12)

Z =n∑i=1

ai(Wi × Vi) (3.13)

Conduz a forma bilinear:

q(q) = qTKq (3.14)

onde a matriz 4x4 K é dada por:

K =S − σI Z

ZT σ

(3.15)

A Eq.(3.13) pode ser reescrita alternativamente como:

Z = B −BT (3.16)

O problema de determinar a atitude ótima é reduzido a encontrar o quatérnionque maximiza a forma bilinear da Eq.(3.14). A restrição da Eq(3.8) pode ser tomada de

Page 44: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

42 Capítulo 3. Desenvolvimento

acordo com o método dos multiplicadores de Lagrange. Uma nova função ganho g′(q) édefinida como:

g′(q) = qTKq − λqT q (3.17)

que pode ser maximizada sem nenhuma restrição. σ é escolhido para satisfazer arestrição. Isto pode ser verificado por derivação direta que g′(q) atinge um valor estacionárioprevisto

Kq = λq (3.18)

qopt deve ser um autovetor de K. A Eq. (3.18) é independente da normalização deq e, portanto Eq.(3.8) não determina λ . Entretanto, λ deve ser um autovalor de K e paracada autovetor de K:

g(q) = qTKq = λqT q = λ (3.19)

Assim, g(q) será maximizado se qopt é escolhido para ser o autovetor de K perten-cente ao maior autovalor de K . Mais precisamente,

Kqopt = λmáxqopt (3.20)

Para a construção do quatérnio ótimo, a equação 3.20 é reescrita da seguinte forma,para qualquer valor de λ:

Y = [(λ+ σ)I − S]−1Z (3.21)

Y = σ + Z · Y (3.22)

Onde Y é o vetor de Gibbs dado por

Y = Q/q = Xtan(θ/2) (3.23)

Em termos do vetor de Gibbs, tem-se,

q = 1√1 + |Y |2

Y1 (3.24)

Page 45: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.3. Interface com Usuário 43

Quando λ é igual a λmax, Y e q são representações de uma solução ótima. Inserindoa equação 3.21 na equação 3.22 tem-se uma equação para os autovalores

λ = σ + ZT 1(λ+ σ)I − SZ (3.25)

A equação 3.25 é equivalente a equação característica para os autovalores de K, asolução explica que deseja-se evitar. Entretanto, pode ser denotado por

λmax = 1− 12

n∑i=0

ai∣∣∣Wi − AoptVi

∣∣∣2 (3.26)

o qual observa-se que se aproxima de um. Substituindo tem-se:

λmax = 1 (3.27)

Com isso chega-se na conclusão que a matrix

[(λmax + σ)I − S] (3.28)

não é singular. Contudo, o vetor de Gibbs tende a infinito quando o ângulo de rotaçãoé π. Portanto quando o ângulo esta próximo desse valor a aproximação da equação 3.27não é viável. (SHUSTER; OH, 2012) O algoritmo implementado para aestimação deatitude usando vetor de Gibbs, portanto para valores de rotação próximos de π tem-sesingularidades. Em Shuster e Oh (2012), faz-se apresenta-se também um método o qualelimina tais singularidades, mas não sera tratado neste trabalho.

3.3 Interface com Usuário

Neste trabalho procurou-se utilizar ferramentas que possibilitassem o desenvol-vimento de aplicações gráficas. Isso para aumentar a interatividade com o usuário. Napesquisa de tais elementos verificou-se que o ambiente de programação Processing R© seriao mais recomendado. Primeiramente por ser fornecido com licença aberta, e por ofereceruma interface intuitiva para a prática da programação.

3.3.1 Interface gráfica

Na composição da tela gráfica de interface com usuário procurou-se criar estruturasque apresentassem a atitude da plataforma física de forma intuitiva. Para tanto foi criadoum objeto 3D que responde as rotações observadas pelos sensores. Esses podem serconfigurados para se parecer com um quadrimotor genérico ou um satélite. A Figura 9mostra a tela inicial com o modelo de quadrimotor.

Page 46: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

44 Capítulo 3. Desenvolvimento

Figura 9: Tela da interface gráfica com o usuário

Fonte: Nosso

3.4 Sistemas de comunicação

A comunicação pode ser resumida em duas partes: aquisição dos sensores comuni-cação com o software. O primeiro usou-se a comunicação I2C para tal e o outro atravésdo protocolo de comunicação serial RS-232. Contudo nesse também usou-se comunicaçãosem fio, com o modulo comunicador Xbee, protocolo Zigbee. O objetivo de eliminar osfios foi para que a rotação da plataforma não ficasse prejudicada, evitando assim possíveisentrelaces e ate ruptura dos mesmos.

O modulo Xbee usado foi escolhido por sua facilidade de implementação. Seufabricante disponibiliza um software para a configuração de atuação de seus módulos.Usou-se dois módulos, um conectado a porta serial do Arduino e outro na porta serial docomputador (por virtualização USB), em sua configuração mais básica, a de retransmissãode comunicação. Neste o que é recebido por um modulo (serial) é transmitido para o outro,por protocolo Zigbee, e decodificado para serial (o caminho oposto também é valido).

3.5 Prototipo

No desenvolvimento da plataforma física pensou-se em um sistema que simulassetodas as possíveis rotações no espaço tridimensional, ou seja, três graus de liberdade. Nessesentido escolheu-se aplicar uma montagem já utilizada em giroscópios antigos, com cardãs.

Page 47: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

3.5. Prototipo 45

“Os cardãs são compostos por dois ou mais anéis concêntricos, que permitem movimentosem três graus de liberdade do elemento estável.”(ALEXANDRE; OLIVEIRA, 2000) Foiprojetado também estruturas que fornecesse suporte aos diferentes elementos trabalha-dos (Arduino e sensores). O sensor principal, composto dos giroscópios acelerômetros emagnetômetros, foram dispostos no centro de três cardãs, assim como o Arduino. Emcomplemento também previu-se a utilização de potenciômetros para aquisição de rotaçãode cada cardã, para possível comparações de resultados. A Figura 10 apresenta o modelo3D da plataforma.

Figura 10: Modelo do prototipo CAD 3D em duas posições diferentes.Rotação em 90o do anel em verde ede 180o do anel central que abriga o sensor e o Arduino

Fonte: Nosso

Page 48: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 49: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

47

4 Resultados

4.1 Montagem

As peças modeladas em com ajuda do software CAD foram cortadas em materialMDF com técnica laser. Desse modo espera-se uma maior precisão de dimensões. AFigura 11 apresenta a foto da plataforma montada e da tela do software gráfico apresentandosua orientação.

Figura 11: Plataforma de testes montada e simulando uma orientação

Page 50: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

48 Capítulo 4. Resultados

Figura 12: Tela do software gráfico, correspondente a orientação da montagem. Os dados com o"Q"representam o quatérnion estimado, e "Euler"os ângulos de Euler correspondentes (roll,pitch e yaw)

4.2 Calibração

Os potenciômetros foram alimentados por uma tensão de 5V, portanto o sinalde sua saída varia analogicamente entre 0V-5V. É especificado que essa relação é linear.Contudo verificou-se que o sinal de tensão descreve o angulo de rotação de apenas um arcocom angulo de 60◦. Ou seja considerando que 0V seja a resposta de tensão do potenciômetro5V representaria 60◦. Com isso a comparação com o algoritmo implementado foi feitasomente entre −30◦ e 30◦ de cada eixo de rotação.

4.3 Validação

Os valores do potenciômetro, já mapeados em graus, é recebido pelo softwaregráfico juntamente com o quatérnion obtido no algoritmo QUEST. Nessa etapa é feita aconversão para ângulos de Euler e é criado uma tabela contendo o valor da rotação emcada eixo, em graus, dos potenciômetros e do QUEST. Transfere-se portanto essa tabelapara uma planilha do LibreOffice e adiciona-se uma outra coluna com a diferença entre asleituras. O Resultado esta mostrado nos gráficos da Figura 13, Figura 14 e Figura 15.

Tabela com a medidas dos ângulos obtidas pelos potenciômetros e o erro em relaçãoaos obtidos com o algoritmo

Page 51: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

4.3. Validação 49

Figura 13: Gráfico contendo os erros com relação as medidas dos ângulo dos potenciômetros e as obtidascom o algoritmo implementado, em relação ao eixo X (Roll)

Figura 14: Gráfico contendo os erros com relação as medidas dos ângulo dos potenciômetros e as obtidascom o algoritmo implementado, em relação ao eixo Y (Pitch)

Page 52: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

50 Capítulo 4. Resultados

Figura 15: Gráfico contendo os erros com relação as medidas dos ângulo dos potenciômetros e as obtidascom o algoritmo implementado, em relação ao eixo Z (Yaw)

Com os resultados observa-se que o erro aumenta conforme o ângulo se afasta dezero, aparentemente numa taxa constante. Vê-se também uma similaridade razoável entreos erros em cada eixo, o que nos leva a deduzir que a fonte do erro observado não dependedo eixo de referencia, embora tenha sido analisado algumas anomalias pontuais no eixoX. Uma possível fonte de erros seria a não perpendicularidade entre os eixos na posiçãoinicial, ocasionado no momento de montagem das peças. Portanto com uma melhora nesseponto espera-se refinar os resultados. Outra forma de poderia ser estudada para diminuiros erros seria a troca dos potenciômetros por outros modelos multivoltas e mais precisos.Desse modo os resultados poderiam ser analisados em todo o espaço de trabalho. Alémdisso, um refinamento na posição dos potenciômetros, para coincidir corretamente com osrespectivos eixos da plataforma, aumentaria a precisão dos ângulos de referencia. Por fim,não pode-se excluir também a possibilidade de o sensor trabalhado estar danificado. Porser uma microconstrução electromecânica, alguns impactos mecânicos podem danificartais estruturas.

Page 53: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

51

Conclusão

O desenvolvimento da plataforma vê-se que a atingiu o objetivo esperado. Foicriado um dispositivo que simula de forma intuitiva a orientação de um corpo no espaço.Isso graças a montagem usando de kimbal’s. Verificou-se também que o uso de ferramentasde modelagem CAD são extremamente recomendadas para concepção de projetos deprotótipos, pois erros de montagem podem ser evitados antes da manufatura de suaspeças, o que economiza tempo e diminui custos de produção. Um outro ponto que tambémfoi observado foi que o material MDF se apresenta como solução muito economia naprototipagem de estruturas, por ser barato e por existir serviços de cortes precisos paraconfecção de peças. Em relação aos resultados percebeu-se uma defasagem quando osângulos se afastam de zero, em comparação aos resultados dos potenciômetros. Emboraos erros observados se mantenham em uma faixa razoável, eles devem ser analisados. Aapresentação visual da orientação se apresenta de forma satisfatória para a representaçãoda atitude. Desse modo pode-se concluir que o prototipo desenvolvido cumpre sua funçãode teste para determinação de atitude.Espera-se que em trabalhos futuros a plataformaseja aprimorada. Os erros observados sejam estudados e apontados suas causas. Por fimalém dos acelerômetros e magnetômetros espera-se futuramente adicionar medidas dossensores de giro (giroscópios) também presentes na placa AltIMU.

Page 54: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 55: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

53

Referências

ALEXANDRE, A.; OLIVEIRA, G. ESTUDO ESTATÍSTICO DOS PROCESSOSENVOLVIDOS EM UMA PLATAFORMA DE ATITUDE SOLIDÁRIA. 2000. 2000.Citado na página 45.

ARDUINO. Arduino Board. 2016. Disponível em: <https://www.arduino.cc/en/Main-/ArduinoBoardUno>. Citado 3 vezes nas páginas 37, 38 e 39.

BAK, T. [S.l.]: Aalborg Universitetsforlag, 1999. Citado na página 23.

BÓ, A. P. L.; BORGES, G. A. Sistema de Baixo Custo para Determinação de Atitudecom Aplicação em VANTS. In: VIII Simpósio Brasileiro de Automação Inteligente (SBAI2007). [S.l.: s.n.], 2007. p. 1–6. Citado 2 vezes nas páginas 36 e 37.

COUTINHO, S.; GATTASS, M. Utilização de quatérnios para representação de rotaçõesem 3D. 2002. p. 1–35, 2002. Citado 2 vezes nas páginas 30 e 31.

De Brum, A. V. et al. Sistema de Controle de Atitude Proposto para a Missão EspacialSERPENS II. 2016. v. 4, p. 1–7, 2016. Disponível em: <https://proceedings.sbmac.org.br-/sbmac/article/view/1066>. Citado na página 23.

DIEBEL, J. Representing attitude: Euler angles, unit quaternions, and rotation vectors.Matrix, 2006. p. 1–35, 2006. ISSN 14602431. Citado na página 28.

GARCIA, R. V.; KUGA, H.; ZANARDI, M. Filtro não linear de kalman sigma-ponto comalgoritmo unscented aplicado a estimativa dinâmica da atitude de satélites artificiais.Instituto Nacional de Pesquisas Espaciais. São José dos Campos/SP, 2011. 2011. Citado3 vezes nas páginas 27, 33 e 36.

Gholitabar Omrani, B. Optimization-Based Control Methodologies with Applications toAutonomous Vehicle. 2010. n. August, 2010. Citado na página 23.

GIANCOLI, D. C. Physics for scientists and engineers. [S.l.]: Prentice hall Upper SaddleRiver, NJ, 2000. Citado na página 25.

GOLDMAN, R. Understanding quaternions. Graphical Models, 2011. Elsevier Inc., v. 73,n. 2, p. 21–49, 2011. ISSN 15240703. Disponível em: <http://dx.doi.org/10.1016/j.gmod-.2010.10.004>. Citado na página 23.

HENRIQUES, B. S. M. Estimation and Control of a Quadrotor Attitude. 2011. p. 126,2011. Citado na página 27.

LIEBE, C. C. Star trackers for attitude determination. IEEE Aerospace and ElectronicSystems Magazine, 1995. v. 10, n. 6, p. 10–16, 1995. ISSN 08858985. Citado na página 23.

MARINHO, A. L. T. G. Os Quaterniões e suas Aplicações. Tese (Dissertação paraobtenção de Grau de Mestre) — UNIVERSIDADE LUSÍADA DE LISBOA, Lisboa, 2013.Citado na página 24.

Page 56: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

54 Referências

MEMS; EXCHANGE, N. MEMs what is. 2016. Disponível em: <https://www-.mems-exchange.org/MEMS/what-is.html>. Citado 2 vezes nas páginas 34e 35.

POLOLU. AltIMU-10 v3 Gyro. 2016. Disponível em: <https://www.pololu.com/product-/2469>. Citado na página 35.

ROCHA, R.; RODRIGUES, L. Photovoltaic panels as attitude sensors for artificialsatellites. IEEE Aerospace and Electronic Systems Magazine, 2016. IEEE, v. 31, n. 11, p.14–23, 2016. Citado na página 23.

SHUSTER, M. D.; DELLINGER, W. F. Spacecraft attitude determination and control.Fundamentals of Space Systems, 1994. 1994. Citado na página 27.

SHUSTER, M. D.; OH, S. Three-axis attitude determination from vector observations.2012. Citado 2 vezes nas páginas 39 e 43.

THIAGO, V. CONTROLE DE ATITUDE DE SATELITES ARTIFICIAIS. 2006. 2006.Citado na página 27.

TRINDADE, M.; SAMPAIO, R. Uma revisão sobre a parametrização de rotações finitasna dinâmica de corpos rígidos. [S.l.: s.n.], 2000. 341–377 p. ISSN 0100-7386. ISBN7386200000020. Citado 3 vezes nas páginas 28, 29 e 30.

VAGANAY, J.; ALDON, M.-J.; FOURNIER, A. Mobile robot attitude estimation byfusion of inertial data. 1993. p. 277–282, 1993. Citado na página 27.

Vilela Castro, J. C. DESENVOLVIMENTO DE UM DISPOSITIVO PARADETERMINAÇÃO DE ATITUDE DE SATÉLITES ARTIFICIAIS, BASEADO EMMAGNETÔMETRO DE ESTADO SÓLIDO. 2006. Citado na página 25.

VISCITO, L. et al. Rate and Attitude Determination Using Solar Array Currents.Colorado Space Grant Consortium’s: Undergraduate Space Research Symposium, 2007.p. 1–5, 2007. Citado na página 23.

WERTZ, J. R. Spacecraft Attitude Determination and Control. The Netherlands: KluwerAcademic Publishers, 1978. 782–785 p. Citado na página 24.

ZHU, R. et al. A linear fusion algorithm for attitude determination using low costMEMS-based sensors. Measurement, 2007. v. 40, n. 3, p. 322–328, 2007. ISSN 0263-2241.Citado na página 24.

Page 57: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Apêndices

Page 58: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros
Page 59: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

57

APÊNDICE A – Algoritmo QUEST Arduino

1 // operacoes com matrizes

2 # include <MatrixMath .h>

3 // funcoes matematicas

4 # include <Math.h>

5

6 // ////////// variaveis algoritmo /////////////////////

7 float a1 , a2 , sigma , aux1;

8 float mag_ref [3], grav_ref [3],Z[3];

9 float B[3][3] , S[3][3] , aux2 [3][3] , Aq [3][3] ,A [3][3];

10 float K [4][4];

11

12 // Gibbs

13 float Y[3];

14 float auxY [3][3];

15 float a=0;

16 float lambda_max ;

17 float I [3][3];

18 float normY;

19

20 // ////////// variaveis algoritmo /////////////////////

21

22 void quest_init ()

23 {

24 //// vetor campo magnetico (ref absoluto )/////

25 mag_ref [0] = 0.97;

26 mag_ref [1] = -0.24;

27 mag_ref [2] = -0.3;

28 //// vetor campo magnetico (ref absoluto )/////

29

30 //// vetor gravidade (ref absoluto )////

31 grav_ref [0] = -0.01;

32 grav_ref [1] = 0.06;

33 grav_ref [2] = -1;

34 //// vetor gravidade (ref absoluto )////

Page 60: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

58 APÊNDICE A. Algoritmo QUEST Arduino

35

36 //// pesos para a funcao de ganho para cada vetor //

37 a1 = 0.5; // vetor magnetico

38 a2 = 0.5; // vetor solar

39 //// pesos para a funcao de ganho para cada vetor //

40

41 // /// criacao da matriz Idenditade 3x3 /////

42 for(int i=0; i <=3; i++)

43 {

44 for(int j=0; j <=3; j++)

45 {

46 if(i==j)I[i][j] =1;

47 else I[i][j] =0;

48 }

49 }

50 // /// criacao da matriz Idenditade 3x3 /////

51

52 }

53

54 void quest_teste ()

55 {

56 // ///// variaveis de processo iniciais para teste do algoritimo

///////

57 aux2 [0][0]= 0;

58 aux2 [0][1]= -0.1849;

59 aux2 [0][2]= 0.8916;

60

61 aux2 [1][0]= -0.9083;

62 aux2 [1][1]= 0.1525;

63 aux2 [1][2]= -0.3896;

64

65 aux2 [2][0]= -0.0640;

66 aux2 [2][1]= -0.9708;

67 aux2 [2][2]= -0.2310;

68

69 // ///// matriz de rotacao ////////

70 A [0][0]= -0.413;

71 A [0][1]= -0.184;

72 A [0][2]= 0.891;

73

74 A [1][0]= -0.908;

75 A [1][1]= 0.152;

Page 61: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

59

76 A [1][2]= -0.389;

77

78 A [2][0]= -0.064;

79 A [2][1]= -0.970;

80 A [2][2]= -0.231;

81 // ///// matriz de rotacao ////////

82

83 /// criacao dos vetores observados atraves da matriz de rotacao

///////

84 Matrix . Multiply (( float *)A,( float *) mag_ref ,3,3,1,( float *) mag_obs

);

85 Matrix . Multiply (( float *)A,( float *) grav_ref ,3,3,1,( float *)

grav_obs );

86 Matrix .Print (( float *) mag_ref ,3,1," mag_ref ");

87 Matrix .Print (( float *) grav_ref ,3,1," grav_ref ");

88 Matrix .Print (( float *) mag_obs ,3,1," mag_obs ");

89 Matrix .Print (( float *) grav_obs ,3,1," grav_obs ");

90

91 // delay (100);

92 // Serial .print (" TESTE :");

93 // Serial .print( mag_ref [0]);

94 // Serial .print (";");

95 // Serial .print( mag_ref [1]);

96 // Serial .print (";");

97 // Serial . println ( mag_ref [2]);

98 /// criacao dos vetores observados atraves da matriz de rotacao

///////

99 // ///// variaveis de processo iniciais para teste do algoritimo

///////

100 }

101

102 void quest_atitude ()

103 {

104 //

/////////////////////////////////////////////////////////////////////////////////

105 //B:

106 for(int i=0; i <3; i++)

107 {

108 for(int j=0; j <3; j++)

109 {

Page 62: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

60 APÊNDICE A. Algoritmo QUEST Arduino

110 B[i][j] = a1* mag_obs [i]* mag_ref [j];

// ver

pagina 5 artigo

111 B[i][j] =B[i][j]+ a2*( grav_obs [i])*( grav_ref [j]);

112 }

113 }

114 //

/////////////////////////////////////////////////////////////////////////////////

115

116 // Sigma

////////////////////////////////////////////////////////////////////////////

117 // tambem pagina 5. sigma e o somatorio da diagonal principal

118 sigma =0;

119 for(int i=0; i <3; i++)

120 {

121 sigma = sigma + B[i][i];

122 }

123 // Sigma

////////////////////////////////////////////////////////////////////////////

124

125

126 // matriz S

//////////////////////////////////////////////////////////////////////////////

pag5

127 for(int i=0; i <3; i++)

128 {

129 for(int j=0; j <3; j++)

130 {

131 S[i][j] = B[i][j]+B[j][i]; //S= B + B^t

132 }

133 }

134 // matriz S

//////////////////////////////////////////////////////////////////////////////

135

136 // matriz Z

///////////////////////////////////////////////////////////////////////////////////

Page 63: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

61

137 Z[0]= (a1*(- mag_obs [2]* mag_ref [1] + mag_obs [1]* mag_ref [2]))+(a2

*(- grav_obs [2]* grav_ref [1] + grav_obs [1]* grav_ref [2]));

138 Z[1]= (a1*( mag_obs [2]* mag_ref [0] - mag_obs [0]* mag_ref [2]))+(a2

*( grav_obs [2]* grav_ref [0] - grav_obs [0]* grav_ref [2]));

139 Z[2]= (a1*(- mag_obs [1]* mag_ref [0] + mag_obs [0]* mag_ref [1]))+(a2

*(- grav_obs [1]* grav_ref [0] + grav_obs [0]* grav_ref [1]));

140 // matriz Z

///////////////////////////////////////////////////////////////////////////////////

141

142 // /// calculo de K (forma bilinear )

/////////////////////////////////////////////////////////

143 for(int i=0; i <=3; i++)

144 {

145 for(int j=0; j <=3; j++)

146 {

147 if(i==j)

148 {

149 if(i <3) K[i][j] = S[i][j]-sigma;

150 else K[i][j] = sigma;

151 }

152 else

153 {

154 if(i<3 && j <3)

155 {

156 K[i][j] = S[i][j];

157 }

158 else

159 {

160 if(i==3){

161 K[i][j] = Z[j];

162 }

163 if(j==3){

164 K[i][j] = Z[i];

165 }

166 }

167 }

168 }

169 }

170 // /// calculo de K (forma bilinear )

/////////////////////////////////////////////////////////

171

Page 64: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

62 APÊNDICE A. Algoritmo QUEST Arduino

172

173 // QUEST

///////////////////////////////////////////////////////////////////////////////////

174 float aux1 [3][3];

175 float aux2 [3][3];

176

177 float vaux1 [3];

178 float vaux2 [3];

179

180 float aux3 [3];

181 float aux4 [3];

182 float aux5;

183

184 float saux1;

185 float saux2;

186 float saux3 =0;

187 float saux4 =0;

188

189 aux1 [0][0] = 0;

190 aux1 [0][1] = (-1)* mag_obs [2];

191 aux1 [0][2] = mag_obs [1];

192 aux1 [1][0] = mag_obs [2];

193 aux1 [1][1] = 0;

194 aux1 [1][2] = (-1)* mag_obs [0];

195 aux1 [2][0] = (-1)* mag_obs [1];

196 aux1 [2][1] = mag_obs [0];

197 aux1 [2][2] = 0;

198

199 aux2 [0][0] = 0;

200 aux2 [0][1] = (-1)* mag_ref [2];

201 aux2 [0][2] = mag_ref [1];

202 aux2 [1][0] = mag_ref [2];

203 aux2 [1][1] = 0;

204 aux2 [1][2] = (-1)* mag_ref [0];

205 aux2 [2][0] = (-1)* mag_ref [1];

206 aux2 [2][1] = mag_ref [0];

207 aux2 [2][2] = 0;

208

209 Matrix . Multiply (( float *)aux1 ,( float *) grav_obs ,3,3,1,( float *)

vaux1);

210 ///norma:

Page 65: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

63

211 saux1 = vaux1 [0]* vaux1 [0]+ vaux1 [1]* vaux1 [1]+ vaux1 [2]* vaux1 [2];

212 saux1 = sqrt(saux1);

213

214 Matrix . Multiply (( float *)aux2 ,( float *) grav_ref ,3,3,1,( float *)

vaux2);

215 // norma:

216 saux2 = vaux2 [0]* vaux2 [0]+ vaux2 [1]* vaux2 [1]+ vaux2 [2]* vaux2 [2];

217 saux2 = sqrt(saux2);

218

219 for(int i=0;i <3;i++)

220 {

221 aux3[i] = ( mag_obs [i])*( grav_obs [i]);

222 aux4[i] = ( mag_ref [i])*( grav_ref [i]);

223 }

224 for(int i=0;i <3;i++)

225 {

226 saux3 = saux3 + aux3[i];

227 saux4 = saux4 + aux4[i];

228 }

229 aux5= saux4*saux3 + saux2*saux1;

230

231 lambda_max = sqrt(a1*a1 + 2*a1*a2*aux5+a2*a2);

232

233 // QUEST

///////////////////////////////////////////////////////////////////////////////////

234

235 /// Calculo vetor de Gibbs

/////////////////////////////////////////////////////////////////

236 for(int i=0; i <=3; i++)

237 {

238 for(int j=0; j <=3; j++)

239 {

240 if(i==j)auxY[i][j] = sigma+ lambda_max ;

241 else auxY[i][j] =0;

242 }

243 }

244 Matrix . Subtract (( float *) auxY , (float *) S, 3, 3, (float *) auxY)

;

245 Matrix . Invert (( float *)auxY , 3);

246 Matrix . Multiply (( float *)auxY ,( float *)Z,3,3,1,( float *)Y);

Page 66: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

64 APÊNDICE A. Algoritmo QUEST Arduino

247

248 // norma:

249 normY = Y[0]*Y[0]+Y[1]*Y[1]+Y[2]*Y[2];

250 normY = sqrt(normY);

251

252 for(int i=0;i <3;i++)

253 {

254 quaternion_oti [i] = (1/ sqrt (1+ normY*normY));

255 quaternion_oti [i] = quaternion_oti [i]*Y[i];

256 }

257 quaternion_oti [3] = (1/ sqrt (1+ normY*normY));

258 }

Page 67: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros

Anexos

Page 68: Desenvolvimento de plataforma de testes para determinação ...€¦ · FelipeOliveiraTavares Desenvolvimento de plataforma de testes para determinação de atitude baseado em acelerômetros