Post on 07-Jul-2020
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
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
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
Dedico a minha família. Sempre me apoioaram em todos os meus desafios .
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.
“Pensamentos sem conteúdos são vazios; intuições sem conceitos são cegas” (ImmanuelKant)
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.
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.
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
Lista de tabelas
Lista de abreviaturas e siglas
VANT Veiculo Aéreo Não Tripulado
QUEST Quaternion Estimation
Lista de símbolos
θ Letra grega Theta
λ Lambda
ψ Psi
φ Phi
∈ Pertence
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
Anexos 65
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
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.
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)
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.
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
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:
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)
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)
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)
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
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
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)
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.
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
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
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
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)
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
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)
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.
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.
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
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
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
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)
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.
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.
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.
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.
Apêndices
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 )////
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;
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 {
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
///////////////////////////////////////////////////////////////////////////////////
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
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:
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);
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 }
Anexos