Você está na página 1de 68

Universidade Federal de Ouro Preto - UFOP - Escola de

Minas - Colegiado do curso de Engenharia de Controle


e Automao - CECAU

Felipe Oliveira Tavares

Desenvolvimento de plataforma de testes para determinao de


atitude baseado em acelermetros e magnetmetros

Monografia de Graduao em Engenharia de Controle e Automao

Ouro Preto, 2017


Felipe Oliveira Tavares

Desenvolvimento de plataforma de testes para determinao de


atitude baseado em acelermetros e magnetmetros

Monografia apresentada ao Curso de Enge-


nharia de Controle e Automao da Universi-
dade Federal de Ouro Preto como parte dos
requisitos para a obteno do Grau de Enge-
nheiro de Controle e Automao.

Orientador: prof.Dr. Ronilson Rocha

Ouro Preto, 2017


Felipe Oliveira Tavares
Desenvolvimento de plataforma de testes para determinao de atitude baseado
em acelermetros e magnetmetros/ Felipe Oliveira Tavares. Ouro Preto, 2017-
66 p. : il. (algumas color.) ; 30 cm.

Orientador: prof.Dr. Ronilson Rocha

Monografia de Graduao em Engenharia de Controle e Automao Universidade


Federal de Ouro Preto - UFOP - Escola de Minas - Colegiado do curso de Engenharia
de Controle e Automao - CECAU, 2017.
1. Palavra-chave1. 2. Palavra-chave2. I. Orientador. II. Universidade xxx. III.
Faculdade de xxx. IV. Ttulo

CDU 02:141:005.7
Dedico a minha famlia. Sempre me apoioaram em todos os meus desafios .
Agradecimentos

Agradeo meus pais por toda minha criao, e meus irmo pelo convvio. Sou grato tambm
ao suporte e incentivo a realizao desse trabalho dado pelo Joo Carlos e Ronilson Rocha.
Obrigado aos irmos da republica Mukifu pela convivncia e aprendizado, princi-
palmente no ch da tarde.
Pensamentos sem contedos so vazios; intuies sem conceitos so cegas (Immanuel
Kant)
Resumo
Esse trabalho apresenta o desenvolvimento de uma plataforma de testes para
determinao de atitude. Constitui-se de uma estrutura formada por trs anis que
simulam a rotao nos trs eixos (x,y,z). No anel central est localizado uma placa
controladora que integra leituras de magnetmetros e acelermetros nos trs eixos.
Usou-se o algoritmo QUEST (Quaternion Estimator) para estimar a atitude com
as medidas recolhidas. Criou-se um software de interface onde possvel observar
a orientao do corpo em termos de ngulos de Euler e Quatrnions, alem de um
virtualizao em 3D de um objeto que representa as mesmas.

Palavras-chaves: atitude. robtica. QUEST.


Abstract
This work presents the development of a test platform for attitude determination. It
consists of a structure formed by three rings that simulate the rotation in the three
axes (x, y, z). In the central ring is located a controller board that integrates readings
of magnetometers and accelerometers in the three axes. The QUEST algorithm
(Quaternion Estimator) was used to estimate the attitude with the measurements
collected. An interface software has been created where it is possible to observe the
orientation of the body in terms of Euler angles and Quatrnions, in addition to a
3D virtualization of an object that represents them.

Key-words: attitude. Robotic. QUEST.


Lista de ilustraes

Figura 1 Representao geomtrica da rotao . . . . . . . . . . . . . . . . . . . 24


Figura 2 Alguns modelos de prototipo tridimensionais da plataforma . . . . . . 25

Figura 3 Representacao dos ngulos de Bryant, um conjunto assimtrico de


ngulos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Figura 4 Esquematico do sistema de determinao de atitude . . . . . . . . . . . 34


Figura 5 Componentes dos MEMs . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Figura 6 Foto do dispositivo AltIMU-10 da Pololu . . . . . . . . . . . . . . . . . 35
Figura 7 Especificao placa Arduino Uno . . . . . . . . . . . . . . . . . . . . . 38
Figura 8 Placa Arduino Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Figura 9 Tela da interface grfica com o usurio . . . . . . . . . . . . . . . . . . 44
Figura 10 Modelo do prototipo CAD 3D em duas posies diferentes.Rotao em
90o do anel em verde e de 180o do anel central que abriga o sensor eo
Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Figura 11 Plataforma de testes montada e simulando uma orientao . . . . . . . 47


Figura 12 Tela do software grfico, correspondente a orientao da montagem. Os
dados com o "Q"representam o quatrnion estimado, e "Euler"os ngulos
de Euler correspondentes (roll,pitch e yaw) . . . . . . . . . . . . . . . . 48
Figura 13 Grfico contendo os erros com relao as medidas dos ngulo dos
potencimetros e as obtidas com o algoritmo implementado, em relao
ao eixo X (Roll) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Figura 14 Grfico contendo os erros com relao as medidas dos ngulo dos
potencimetros e as obtidas com o algoritmo implementado, em relao
ao eixo Y (Pitch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Figura 15 Grfico contendo os erros com relao as medidas dos ngulo dos
potencimetros e as obtidas com o algoritmo implementado, em relao
ao eixo Z (Yaw) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Lista de tabelas
Lista de abreviaturas e siglas

VANT Veiculo Areo No Tripulado

QUEST Quaternion Estimation


Lista de smbolos

Letra grega Theta

Lambda

Psi

Phi

Pertence
Sumrio

1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.1 Justificativas e Relevncia . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Organizao e estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 Determinao de Atitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Matriz de rotao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 ngulos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Quatrnion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1 Sistema de Sensoriamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1 Sensores MEMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Giroscpio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.3 Acelermetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.4 Magnetmetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Sistema de Estimao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2 Algoritmo de determinao de atitude - QUEST . . . . . . . . . . . 38
3.3 Interface com Usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1 Interface grfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Sistemas de comunicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1 Montagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Calibrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 Validao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Apndices 55

APNDICE A Algoritmo QUEST Arduino . . . . . . . . . . . . . . . . . . . . 57


Anexos 65
23

1 Introduo

Atitude pode ser definida como a orientao de um corpo rgido no espao em


relao a um referencial inercial. geralmente discutida no setor aeroespacial (satlites,
Veiculo areo no tripulado - VANT) mas tambm v-se em muitas outras aplicaes da
robtica, na cinemtica de juntas em braos robticos, em robs autnomos na minerao,
entre outros. Em satlites, saber a atitude essencial para sua operao, seja pelo correto
apontamento de suas placas solares para o Sol, para direcionar uma antena de comunicao
ou uma cmera de monitoramento ou ento em telescpios espaciais, que precisam de uma
direo correta para capturar detalhes dos corpos celestes alvos. Em misses brasileiras,
por exemplo, tem-se a SERPENS II(Sistema Espacial para Realizao de Pesquisa e
Experimentos com Nanos Satlites), onde em um de seus experimentos "...o controle de
atitude necessrio para garantir o apontamento adequado do vetor de impulso."(De
Brum et al., 2016) J na rea dos VANTs tal tecnologia indispensvel na estabilidade e
na trajetria de voo onde espera-se que o sistema de controle mantenha o drone parado
no ar, rejeitando pertubaes externas. No caso da trajetria, ao definir uma inclinao, o
drone consegue o deslocamento, controlando-se a velocidade de cada uma de suas hlices,
conforme for o movimento.
Para representar a atitude usa-se geralmente duas ferramentas matemticas, cha-
madas por operadores de rotao, os ngulos de Euler e quatrnions,(Gholitabar Omrani,
2010) responsveis por traduzir o sistema de coordenadas do corpo para o referencial. Na
primeiro tem-se uma matriz de 9 elementos descrevendo a rotao em funo dos ngulos
desenvolvidos em cada eixo (row, pitch e yaw) para conseguir a rotao desejada. J os
quatrnions utilizam somente 4 elementos para descrever a mesma, tornando-se muito
atrativa quanto a custo computacional. A ideia dessa ltima que toda rotao espacial
pode ser descrita atravs de um vetor e um ngulo de giro (GOLDMAN, 2011), Figura 3.
Os algoritmos utilizados para a estimao da atitude de um satlite podem ser
classificados como determinsticos ou de otimizao. De qualquer forma, estes algoritmos
requerem dois ou mais vetores de observao com direes conhecidas para garantir um
bom desempenho da determinao da atitude em relao a um referencial inercial.(ROCHA;
RODRIGUES, 2016, p.9) Em (BAK, 1999) demonstrada que a determinao de atitude
pode ser feita usando somente magnetmetros para leitura da direo do vetor campo
magntico terrestre. Em (VISCITO et al., 2007) v-se um mtodo de se utilizar os painis
fotovoltaicos de alimentao de satlites (no caso em formato de cubo) para os vetores
referenciais. J em (LIEBE, 1995) feito usando posies de estrelas. E por fim em (ZHU et
24 Captulo 1. Introduo

Figura 1: Representao geomtrica da rotao

Fonte: Marinho (2013, p. 24)

al., 2007) tem-se uma abordagem a qual atualmente muito comum no problema da atitude
em VANTs, utilizando de sensores chamados MEMS (Micro eletrical mecanichal system),
onde esto inseridos por exemplo alguns acelermetros, giroscpios e magnetmetros.
De posse dos vetores de referencia, o passo seguinte parte da aplicao de algoritmos
para estimao de atitude do corpo em questo.Para tanto existem basicamente 3 mtodos:
um geomtrico, um algbrico e o q-method (por meio de otimizao).(WERTZ, 1978) Nesse
ltimo grupo inserido o algoritmo QUEST (QUAternion ESTimation) que foi escolhido
para aplicao neste trabalho por seu baixo custo computacional.
Nesse contexto foi desenvolvido um ambiente para testes em determinao de
atitude. Nele simulado a orientao de um corpo atravs de uma montagem que permite
a rotao nos trs eixos espaciais. Os vetores de referencia so adquiridos com a leitura
de sensores MEMs (acelermetros e magnetmetros) e a atitude calculada por uma
unidade microprocessada com um algoritmo QUEST implementado. A mesma tambm
tem a funo de comunicao com um software para apresentao ao usurio, em uma
interface grfica, a movimentao calculada do corpo central em termos de ngulos de
Euler e Quatrnions.

1.1 Justificativas e Relevncia


Nesses ltimos anos v-se um crescente nmero de projetos relacionados com
controle de satlites artificiais e robtica no departamento de controle e automao da
Universidade Federal de Ouro Preto. A proposta desse trabalho vem para contribuir para
a contnua melhora na produo do conhecimento relacionado ao assunto.
1.2. Metodologia 25

1.2 Metodologia
No desenvolvimento da plataforma de simulao de determinao de atitude foi
necessrio, primeiramente, definir alguns de seus objetivos, os quais se resumem, semelhante
a Vilela Castro (2006, p.25) "..ler a orientao atual do satlite, processar os algoritmos
necessrios, gerar a matriz de atitude que relaciona essa orientao com uma referncia e
apresent- la em um dispositivo visual".
Portanto criou-se uma montagem fsica, com trs gimbals 1 , que simula todas
rotaes possveis em cada eixo. Localizado no anel central dessa estrutura, encontra-se o
elemento sensor e a unidade controladora. Essa ltima, comunica com um software em um
computador entregando os dados processados dos sensores para apresentao grfica das
rotaes, tanto na parametrizao em ngulos de Euler quanto em quatrnions,
A fim de auxiliar no processo de projeto da plataforma foi utilizado um software
de desenho assistido por computador (CAD) para criao de modelos 3D da mesma,
e assim verificar seu funcionamento. A Figura 2, mostra alguns modelos criados. Em
termos mais operacionais da plataforma, foi usado para estimar a atitude um sistema
eletrnico o qual consiste em uma placa que integra um grupo de nove sensores MEMs
(MEMS - MicroElectroMechanical Systems). Esse componente foi disposto no centro dos
anis do gimbal, o que permite a correspondncia do sistema de coordenadas de ambos.
Localizado na face oposta ao MEMS, no anel central, tem-se uma unidade microprocessada
responsvel por duas funes: processamento de dados dos sensores (aplicao de filtros e
algoritmos) e comunicao com o aplicativo de interface grfica. Com relao ao aplicativo,
foi programado utilizando a IDE Processing, um software de desenvolvimento de aplicaes
grficas livre. Com isso, em resumo, tem-se um modelo virtual da plataforma, com
sua orientao estimada atravs dos sensores de atitude, o qual permite visualizar a
parametrizao das rotaes tanto em ngulos de Euler quanto em quatrnion.

Figura 2: Alguns modelos de prototipo tridimensionais da plataforma

Por fim foram realizados testes com a plataforma. Em cada gimbal foi acoplado a
seu eixo um potencimetro que fornece o angulo de inclinao. Esses foram calibrados com
1
gimbal um suporte pivotado que permite a rotao de um objeto sobre um eixo (GIANCOLI, 2000)
26 Captulo 1. Introduo

medidas feitas manualmente. Coletou-se amostras de ngulos obtidos com transferidor e os


seus respectivos valores dados pela resistncia varivel. Com essas amostra pode-se traar
uma equao que relaciona a medida de tenso do potencimetro com o ngulo de rotao.
O conjunto de trs ngulos obtidos pelas medidas dos potencimetros foram comparados
com os ngulos obtidos pelo algoritmo de atitude utilizando os sensores MEMs. Assim
pode-se verificar a validade dos mtodos usados na determinao de atitude.

1.3 Objetivos
O objetivo principal do trabalho o de incentivar a pratica de pesquisa na rea
de robtica e engenharia espacial na Universidade Federal de Ouro Preto. Para tanto
tem-se como objetivos especficos a criao de plataforma de simulao de atitude que
se apresente como uma ferramenta multidisciplinar inserindo conceitos em tecnologias
espaciais. Entre as disciplinas que podem ser exploradas alem da robtica esto: circuitos
digitais, desenvolvimento de software e sistemas embarcados.

1.4 Organizao e estrutura


O problema a ser discutido nesse trabalho se trata de criao de uma plataforma
de testes. Seguindo para os captulo 2 e 3 so apresentados os conceitos da determinao
de atitude (representao, algoritmos, entre outros) e os princpios de funcionamento dos
componentes usados no prottipo criado (sensores, processadores e software), respectiva-
mente. No captulo 4 mostra-se o projeto e desenvolvimento da plataforma. E finalmente
encerra-se com a apresentao dos resultados obtidos, e a concluso geral.
27

2 Determinao de Atitude

O termo atitude refere-se sobre a orientao de um corpo no espao. No seguimento


aeroespacial usado para descrever a posio rotacional que um satlite se encontra
em relao a um sistema referencial (normalmente localizado na Terra). Neste ramo,
segundo Shuster e Dellinger (1994, p.236), a habilidade de saber a atitude do satlite
(determinao de atitude) e a habilidade de comandar uma atitude (controle de atitude)
so indispensveis para sua performance. Em um satlite de comunicao, por exemplo,
indispensvel um apontamento preciso para sua base terrestre. Em casos de sensoriamento
remoto, necessrio mirar os sensores em um ponto especifico. Alm da rea espacial
visto o estudo de atitude em outras sub reas da robtica, em sistemas de estabilidade em
VANTs (Veculos Areos No Tripulados) (HENRIQUES, 2011) ou na orientao de robs
autnomos (VAGANAY; ALDON; FOURNIER, 1993).
Na representao da atitude, ou seja, para descrever a orientao de um sistema
de coordenadas em relao a um outro de referencia, geralmente utilizam-se trs formas:
matriz de rotao, ngulos de Euler e Quatrnions. O primeiro consiste no uso de uma
matriz 3x3 como operador para rotacionar vetores descritos em um sistema de coordenadas
para outro. talvez o mtodo mais simples. Embora sua simplicidade seja atraente para
aplicao real, seu custo computacional elevado devido a redundncia de elementos
para representar a atitude, ao todo nove valores. Em vantagem tem-se os ngulos de
Euler, em que a mesma rotao descrita em termos de somente trs ngulos. "Com este
mtodo possvel especificar a orientao de um sistema fixo x,y,z em relao ao sistema
inercial X,Y,Z, atravs de trs rotaes consecutivas. Os ngulos (, , ) associados
s rotaes so conhecidos como ngulos de Euler."(THIAGO, 2006). Entretanto esse
mtodo tem a desvantagem de possuir singularidades em ngulos que zerem as funes
trigonomtricas (0o e 180o ). Em alternativa para contornar essa desvantagem e manter um
custo computacional reduzido utiliza-se os quatrnions. Neste, a atitude representada com
4 elementos no dependentes de funes trigonomtricas. (GARCIA; KUGA; ZANARDI,
2011, p.24). Essas trs ferramentas de representao de atitude detalhada nos tpicos
que seguem.

2.1 Matriz de rotao


Uma matriz de rotao uma matriz cuja multiplicao com um vetor rotaciona
esse vetor enquanto preserva seu tamanho. O grupo ortogonal especial de todas as matrizes
28 Captulo 2. Determinao de Atitude

3x3 ser denotado por SO(3) (DIEBEL, 2006, p.4). Assim, se R SO(3) ento:

det R = 1 e R1 = RT (2.1)

Nos referenciamos os elementos da matriz de rotao como segue:

h i
R = R1 R2 R3 (2.2)


r
11
r11 r11
R = r12 r12 r12 (2.3)


r13 r13 r13

Existem duas possveis convenes para definio da matriz de rotao que codifica a atitude
de um corpo rgido a ambos so usados no corrente caso. Alguns autores preferem escrever
a 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 o
sistema do corpo-fixo. "(...) Uma matriz de rotao tambm pode ser referida como Matriz
Cosseno Diretor, por causa de seus elementos serem cossenos dos ngulos entre os eixos
do 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, a
matriz de rotao pode ser escrita como:"(DIEBEL, 2006)



cos( ) cos(
(x0 ,x) ) cos(
(x0 ,y) )
(x0 ,z)
R= cos((y0 ,x) )
cos((y0 ,y) ) cos((y0 ,z) ) (2.4)


cos((z0 ,x) ) cos((z0 ,y) ) cos((z0 ,z) )

2.2 ngulos de Euler


Segundo Diebel (2006) qualquer rotao no espao pode ser descrita por uma
sequncia coordenada de outras trs rotaes. "Os ngulos de Euler formam um conjunto
de trs parmetros independentes que permitem representar o operador rotao atravs
da superposio de trs rotaes planas (Junkins e Shuster, 1993). Existem 12 diferentes
conjuntos de ngulos de Euler (Wertz, 1978, Shuster, 1993a), 6 simtricos e 6 assimtri-
cos."(TRINDADE; SAMPAIO, 2000). Usaremos nesse trabalho um conjunto assimtrico
de ngulos de Euler especifico, denominado ngulos de Bryant, o qual usa-se trs rotaes
planas para representar o operador de rotao. (TRINDADE; SAMPAIO, 2000). usaremos
neste trabalho o seguinte conjunto numrico:
2.2. ngulos de Euler 29

Figura 3: Representacao dos ngulos de Bryant, um conjunto assimtrico de ngulos de Euler

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

1. Uma rotao de (yaw) em torno do eixo E3: R1(z, )

2. Uma rotao de (pitch) em torno do eixo r2: R2(x,)

3. Uma rotao de (roll) em torno do eixo s1: R3(z, )

Utilizando a ideia de operador de rotao, podemos escrever a transformao


resultante como segue:

x=RX (2.5)

onde R a sequencia de rotao dada por:

R = R3 (z, ) R2 (x, ) R1 (y, ) (2.6)

Podemos rescrever o operador R na forma matricial (matriz de rotao), segundo demons-


trado por Trindade e Sampaio (2000, p.30):



c c s c s c s s c c s s
R = s c + c c s s s + c c c c s (2.7)


s s s c c
30 Captulo 2. Determinao de Atitude

Onde c e s so abreviaes de cosseno e seno, respectivamente. Em via contraria


pode-se ento calcular os ngulos de Euler a partir da matriz de rotao, pela relao:

r31
= tan1 ( ) (2.8)
r32

sen() = r31 sen() + r32 cos()
(2.9)
cos() = r33

sen() = r11 cos() r32 sen()
(2.10)
cos() = r cos() r sen()
21 22

Pode-se observar que essa inverso possui singularidades para valores de = 0 e


= , pois:



cos( ) sen( ) 0
R = sen( ) cos( )

0

(2.11)

0 0 1

2.3 Quatrnion
Pode-se pensar tambm que usando um vetor para representar um eixo e um ngulo
em torno desse eixo podemos descrever qualquer rotao no espao, usando para tanto
quatro valores. A ferramenta matemtica que tambm utiliza esse conceito os Quatrnion.
Portanto de forma geral um quatrnion 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 quatrnion tambm pode ser definido como um
nmero complexo, mas com quatro dimenses, na forma (TRINDADE; SAMPAIO, 2000):

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

onde i, j e k so smbolos da sua parte imaginaria que seguem a regra (TRINDADE;


SAMPAIO, 2000):

i2 = j 2 = 1
j k = k j = i
(2.14)
k i = i k = j
i = j i = k
2.3. Quatrnion 31

Partindo ento da definio e da composio de um quatrnion abordado agora


sobre como so realizadas rotaes com o mesmo. Considere que o ponto ~r = (rx , ry , rz ) ,
o qual realizaremos uma rotao, representado de forma quaternria por p = (0, ~r) com
parte real nula.(COUTINHO; GATTASS, 2002) E seja q = (s, ~v ) um quatrnio unitrio
(q q = 1) correspondente a essa rotao. Tem-se portanto o operador de rotao, baseado
em quatrnion, dado por:


q = (cos( ), sen( )~n) (2.15)
2 2
Onde ~n o vetor unitrio que define o eixo de rotao e o angulo da mesma.
Seja um ponto ~r = (rx , ry , rz ) sobre o qual aplica-se uma rotao, representada por
um quatrnion p = (0, ~r) com parte real nula. O operador de rotao entorno de ~r ser
um quatrnion unitrio q = (s, ~v ), tal que q q = 1. Tem-se portanto, segundo Coutinho
e Gattass (2002), que o resultado da rotao de p por q poder ser obtido atraves da
seguinte expresso

Rq (p) = qpq 1 (2.16)

Dado que q unitrio, temos que o inverso de q seu conjugado, pois

q q = 1 q 1 q q = q 1 q = q 1 (2.17)

Portanto, pode-se escrever a expresso de rotao como:

Rq (p) = qpq (2.18)


33

3 Desenvolvimento

Para facilitar a apresentao da plataforma de determinao de atitude dividiu-se


seu desenvolvimento em quatro sistemas: sistema de sensoriamento, de controle, de interface
com o usurio e de comunicao. No primeiro abordado, antes de mais nada, o motivo
de escolha dos sensores bem como sua especificao tcnica e princpios de funcionamento.
So apresentados os giroscpios, acelermetros e magnetmetros. Dando prosseguimento,
o sistema de controle, tem-se a mesma metodologia do anterior (especificao e princpios)
adicionando tambm os algortimos usados para a determinao de atitude, para a coleta
de dados e filtros/condicionadores de sinais. Em seguida mostrado a especificao e
desenvolvimento do software de interface grfica com usurio. Por fim o desenvolvimento
do sistema responsvel pela interconexo de todos os outros descrito. A Figura 4 mostra
o esquema geral dos sistemas e suas funes.
Uma vez definidas as estratgias a serem utilizadas para a determinao de atitude,
parte-se para a montagem do dispositivo que far esta determinao. Tal dispositivo deve
dispor, basicamente, de sensores, condicionadores de sinais, conversores analgico/digital
processador, memria e portas paralelas e/ou seriais, para que seja capaz de ler a orientao
atual do satlite, processar os algoritmos necessrios, gerar a matriz de atitude que relaciona
essa orientao com uma referncia e apresent- la em um dispositivo visual.

3.1 Sistema de Sensoriamento


Para a determinao da orientao de um corpo no espao necessrio que se
tenha informaes que descrevam a correspondncia entre os sistemas de coordenadas
trabalhados. Geralmente usa-se de vetores de referncia descritos tanto no sistema inercial
quanto no sistema a ser determinado a atitude. Para a estimao dos mesmos so usados
os mais diferentes tipos de fontes,por exemplo, vetores de direo do sol, de posio de
uma estrela ou a vetores da orientao do campo magntico terrestres.

Basicamente existem duas alternativas para a obteno das medidas


que contribuiro no processo de estimao da atitude do satlite: ou as
medidas so obtidas com respeito a uma direo de referncia usando
algum tipo de sensor (sensor solar, sensor de Terra, sensor de estrelas)
ou so obtidas medindo diretamente a acelerao centrfuga utilizando
giroscpios e acelermetros.(GARCIA; KUGA; ZANARDI, 2011)

Neste trabalho usou-se medidas de giroscpios, acelermetros e magnetmetros


34 Captulo 3. Desenvolvimento

Figura 4: Esquematico do sistema de determinao de atitude

para o problema da altitude. Para tanto usou-se de um dispositivo integrado o qual fornece
dados nos trs eixos de todos esses sensores, o que ser apresentado a seguir.

3.1.1 Sensores MEMs


MEMs a sigla para usada para classificar sensores construdos em escalas reduzidas
e que utilizam princpios eletromecnicos para adquirir suas medies. Do ingles "Micro
Electro - Mechanical Systems"(MEMs) uma tecnologia que geralmente definida como
sendo elementos microeletrnicos minituarizados que usam de microfabricao para sua
manufatura.(MEMS; EXCHANGE, 2016)
Os elementos funcionais dos MEMS so estruturas minituarizadas, sendo que os mais
notveis e interessantes so os microssensores e microatuadores. Esses so categorizados de
3.1. Sistema de Sensoriamento 35

forma apropriada com "transdutores", onde so definidos como dispositivos que convertem
energia de uma forma para outra. No caso dos microssensores, o dispositivo converte a
medio do sinal mecnico em um sinal eltrico.(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 devido


sua popularidade no mercado e pelo fato de possuir um conjunto de trs CIs (circuitos
integrados) referentes a sensores de giro (L3GD20H), de acelerao e de campo magntico
(LSM303D) (tambm possui um de altitude LPS331AP).O AltIMU-10 V3 integra esses
trs sensores de orientao em uma nica placa, incluindo tambm um regulador de tenso
e um circuito de "level-shifting"mantendo um tamanho reduzido. A comunicao com cada
elemento sensor feita com o protocolo I2C, sendo que cada subsistema (magnetmetro,
giroscpio, acelermetro e altmetro) possuem um endereo prprio para ser localizado na
rede I2C.(POLOLU, 2016)

Figura 6: Foto do dispositivo AltIMU-10 da Pololu

Fonte: pololu (2016)


36 Captulo 3. Desenvolvimento

3.1.2 Giroscpio

Basicamente giroscpio um instrumento para medio de acelerao angular. O


nome Giroscpio deriva das palavras gregas gyros, que significa rotao, e skopein, que
significa ver. Esse foi o nome dado por Jean Foucault, um fsico francs, ao dispositivo
capaz de medir a rotao do planeta Terra, inventado por ele em 1852. Hoje em dia
ele muito comum em sistemas de navegao inercial (INS) de forma compacta com a
classificao de MEMs.
Como j foi dito, usou-se o circuito integrado L3GD20H embarcado em uma placa
juntamente com sensores de campo magntico e acelermetros. O sistema possui preciso
ajustvel de 245/ 500/ 2000 dps (degree per second Graus por segundo) e oferece
suporte a comunicao I2C para leitura de seus dados. Alm disso tem-se tambm um
buffer para armazenagem de 32 medidas, o que torna-o mais eficiente na recuperao de
erros de comunicao ou de processamento de leitura. O dispositivo entrega para a central
de comunicao medidas da acelerao angular nos 3 eixos, (x,y,z).
Apesar de preciso considervel, suficiente para a aplicao em questo, o giroscpio
usado apresenta erros devido ao fenmeno chamado de bias. ...os giros possuem um erro de-
vido deriva, associado a pequenas imperfeies em seu mecanismo, significando que o erro
das suas medidas pode aumentar com o tempo(GARCIA; KUGA; ZANARDI, 2011).Para
contornar esse problema foi aplicado um filtro que ser apresentado posteriormente.

3.1.3 Acelermetro

Trata-se de um dispositivo, como o prprio nome sugere, que estima aceleraes


lineares. A mesma adquirida a partir da medio de fora incidente em um corpo de
prova dentro do dispositivo. Desse modo, um dispositivo de medio de acelerao de trs
eixos retorna no s a acelerao inercial representada por componentes em seu sistema
de coordenadas, mas tambm referente a gravidade.(B; BORGES, 2007) Essa ltima
faz o acelermetro ideal para aplicar em vrios algoritmos de determinao de atitude, j
que o vetor de gravidade conhecido tambm no sistema inercial. Contudo percebe-se
que em movimento acerelado esse vetor torna-se ofuscado por outras componentes de
acelerao. Foi utilizado o circuito integrado LSM303D para medio da acelerao em
trs eixos (coincidente com o do giroscpio). Seu fator de escala tambm ajustvel, de
forma que cinco precises so possveis: 2/ 4/ 6/ 8/ 16 g (gravidade). Semelhante
ao giroscpio (L3GD20H) o acelermetro possui um buffer de dados com 32 nveis, e o
protocolo de comunicao I2C suportado.
3.2. Sistema de Estimao 37

3.1.4 Magnetmetro
Passamos agora para apresentar o dispositivo de medio de intensidade de campo
magntico. J um magnetmetro, por sua vez, um sensor capaz de medir a intensidade
do campo magntico incidente no dispositivo (B; BORGES, 2007).Com leituras de
intensidade em cada eixo (coincidente com o acelermetro e giroscpio) possvel estimar
a orientao do campo magntico terrestre, e com isso constri-se mais um vetor de
referncia que tambm conhecido no sistema referencial inercial (lembrando que nesse
trabalho adotamos um sistema de referncia localizado no centro da Terra). O dispositivo
em questo integrado no mesmo chip que o acelermetro (LSM303D), de modo que
tambm possui suporte para o mesmo protocolo de comunicao (I2C), os mesmos nveis
de buffer escala ajustvel em: 2/ 4/ 8/ 12 gauss.

3.2 Sistema de Estimao

3.2.1 Controlador
Como elemento principal no sistema de estimao tem-se um a placa de desenvol-
vimento Arduino Uno c R dotado de um microprocessador modelo atmega 328P. Essa
placa tem tido uma popularidade muito grande, devido a unio de um processador verstil
com uma plataforma de software e hardware que facilita o desenvolvimento de aplicaes
com caracterstica de licena livre, o qual possibilita uma comunidade de suporte sempre
ativa.

A placa Arduino capaz de ler entradas - luzes em um sensor, um dedo


em um boto, ou uma mensagem do Twitter - e modificar em sadas -
ativando um motor, ligando um LED, publicando algo online. Voc pode
dizer para sua placa o que fazer mandando uma sequencia de instrues
ao microcontrolador da placa (ARDUINO, 2016)

Atualmente existem vrias placas de desenvolvimento Arduino, usamos neste


trabalho o modelo Uno, com as caractersticas mostradas na Figura 7.
Devido a toda essa facilidade muito comum encontrar esse dispositivo aplicado
em reas acadmicas e de educao. No caso deste trabalho essa unidade responsvel por
recolher as medidas dos sensores (acelermetros, giroscpios e magnetmetros), construir
os vetores de observao e normaliz-los, aplicar os algoritmos de determinao de atitude
e por fim entregar os operadores de rotao ao software.
Para a programao do microcontrolador oferecido pelo Arduino uma IDE nativa
o qual usa a linguagem C. Devido sua comunidade de desenvolvimento tem-se uma extensa
disponibilidade de bibliotecas, desenvolvidas por usurios, que facilitam a programao.
Na comunicao com os sensores MEMs usados neste trabalho, por exemplo, usou-se
uma biblioteca a qual fornece acesso a funes de nvel mais alto para a configurao e
38 Captulo 3. Desenvolvimento

Figura 7: Especificao placa Arduino Uno

Fonte: Arduino (2016)

leitura dos mesmos. Outra que foi usada para facilitar o desenvolvimento foi referente
a operaes com matriz, onde tem-se funes para inmeros operaes (multiplicao,
diviso, soma, entre outras). Contudo no so todas as aplicaes que se encontram
bibliotecas auxiliares. Como exemplo o algoritmo de determinao de atitude usado, o
qual teve que ser totalmente implementado.

3.2.2 Algoritmo de determinao de atitude - QUEST


O algoritmo usado para determinar a atitude segundo alguns vetores de referncia
foi o QUEST (do ingls QUaternion ESTimation).
Um problema recorrente na determinao de atitude em satlites em como
determinar a atitude dado um conjunto de vetores de medidas. Para tanto, uma matriz
ortogonal A (matriz de atitude ou direction-cosine matrix encontrada satisfazendo:

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

onde V1 , , Vn so um conjunto de referencias unitrias, em que cada n representa


uma direo conhecida (e.g, direo da Terra, do Sol, de uma estrela, ou do campo
geomagntico) em relao a um sistema de coordenadas de referencia, e Wi , , Wn so
3.2. Sistema de Estimao 39

Figura 8: Placa Arduino Uno

Fonte: Arduino (2016)

os vetores unitrios observados, em que a mesma direo n medida com referencia ao


sistema de coordenadas do satlite.
Pelo motivo de tanto o vetores unitrios observados e os de referencia serem afetados
por erros, uma soluo para A geralmente no existe, nem mesmo para n = 2. Shuster e Oh
(2012) mostra dois tipos diferentes de encontrar a atitude de satlites, primeiro o mtodo
determinstico TRIAD, e segundo timo baseado no problema de Wahba. O TRIAD, como
mostrado no artigo de (SHUSTER; OH, 2012) possui duas desvantagens, primeiro porque
s consegue determinar a atitude com apenas dois vetores de observao, se existir mais
medidas o resultados dessas devem ser combinados formando pares de vetores. Alm disso
mesmo com dois vetores de observao com esse mtodo perde-se um pouco da preciso
pelo fato de parte da medio ser descartada. Essas duas desvantagens no esto presentes
no algoritmo timo, em que a atitude calculada atraves de uma funo de custo que
leva em conta todas as n medies. Por essa razo neste trabalho no foi implementado o
TRIAD, e sim um algoritmo timo como ser mostrado nos prximos tpicos. Entretanto
esses algoritmos timos geralmente so mais lentos que os determinsticos. A funo de
custo estudada no artigo de Shuster e Oh (2012) dada por :

1 X 2
L(A) = ai Wi AVi (3.2)

2

Onde ai , i = 1, . . . , n so valores no negativos. Ela foi primeiramente proposta por


Wahba em 1965. Davenport mostrou que essa funo de custo quadrtica na matriz de
atitude pode ser transformada em um problema de autovetor e autovalor generalizados.
Isso uma grande simplificao do problema proposto por Wahba, desde que o quatrnion
40 Captulo 3. Desenvolvimento

sujeito a menos restries, em comparao aos nove elementos da matriz de atitude.


A substituio de Davenport conduz diretamente a uma equao de autovetor para o
quatrnion.
possvel desenvolver um esquema aproximado que permita a computao do
quatrnion timo com grande preciso, sem ter que resolver o problema do autovalor
completo explicitamente com uma reduo computacional significante. Esse algortimo,
QUEST (Quaternion ESTimator), preserva todos as vantagens computacionais de um
rpido algoritmo determinstico enquanto mantm um resultado timo. Uma simples
expresso analtica tambm pode ser obtida na matriz de covarincia QUEST.
Ns desejamos encontrar uma matriz ortogonal Aopt que minimiza a funo de
custo dada pela equao (3.2). Por causa da funo de custo poder ser escalada (no sentido
de aumentar os valores em escala) sem afetar a determinao de Aopt , possvel ter:

n
X
ai = 1 (3.3)
i=1

A funo de ganho g(A) definida por:

n
X T
g(A) = 1 L(A) = ai Wi AVi (3.4)
i=1

A funo de custo L(A) ser mnima quando a funo de ganho g(A) for mxima.
Portanto o objetivo ser centrado em encontrar a matriz de atitude tima que maximiza
g(A). Interpretando os termos individuais da Eq. (3.4) como matrizes 1x1, segue-se do
conhecido teorema do trao que:

n  
T h i
ai tr Wi AVi = tr AB T
X
g(A) = (3.5)
i=1

onde tr indica o operador trao e B, a matriz de atitude, dado por:

n
X T
B= ai Wi Vi (3.6)
i=1

A maximizao de g(A) complicada pelo fato dos nove elementos de A estarem


sujeitos a seis restries. Para tanto, conveniente expressar A em termos de quatrnion.
O quatrnion q que representa uma rotao dado por:


Q Xsen( )
2
q = = (3.7)
q cos( 2 )
3.2. Sistema de Estimao 41

onde X corresponde ao eixo de rotao e o angulo de rotao em torno de X. O


quatrnion deve satisfazer uma simples restrio, que :

q T q = |Q|2 + q 2 = 1 (3.8)

A matriz de atitude A relacionada com quatrnion como:

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

onde I a matriz identidade e Q a matriz antissimtrica dada por:



0 Q3 Q2
Q = Q3 0 Q1 (3.10)


Q2 Q1 0

E introduzindo as seguintes grandezas:

n
X
= trB = ai Wi Vi (3.11)
i=1

n
T
X T T
S =B+B = ai (Wi Vi + Vi Wi ) (3.12)
i=1

n
X
Z= ai (Wi Vi ) (3.13)
i=1

Conduz a forma bilinear:

q(q) = q T K q (3.14)

onde a matriz 4x4 K dada por:


S I Z
K= (3.15)
ZT

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 quatrnion


que maximiza a forma bilinear da Eq.(3.14). A restrio da Eq(3.8) pode ser tomada de
42 Captulo 3. Desenvolvimento

acordo com o mtodo dos multiplicadores de Lagrange. Uma nova funo ganho g 0 (q)
definida como:

g 0 (q) = q T K q q T q (3.17)

que pode ser maximizada sem nenhuma restrio. escolhido para satisfazer a
restrio. Isto pode ser verificado por derivao direta que g 0 (q) atinge um valor estacionrio
previsto

K q = q (3.18)

qopt deve ser um autovetor de K. A Eq. (3.18) independente da normalizao de


q e, portanto Eq.(3.8) no determina . Entretanto, deve ser um autovalor de K e para
cada autovetor de K:

g(q) = q T K q = q T 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,

K qopt = mx qopt (3.20)

Para a construo do quatrnio timo, a equao 3.20 reescrita da seguinte forma,


para qualquer valor de :

Y = [( + )I S]1 Z (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,


1 Y
q = q (3.24)
1 + |Y |2
1
3.3. Interface com Usurio 43

Quando igual a max , Y e q so representaes de uma soluo tima. Inserindo


a equao 3.21 na equao 3.22 tem-se uma equao para os autovalores

1
= + ZT Z (3.25)
( + )I S

A equao 3.25 equivalente a equao caracterstica para os autovalores de K, a


soluo explica que deseja-se evitar. Entretanto, pode ser denotado por

n
1X 2
max = 1 ai Wi Aopt Vi (3.26)
2 i=0
o qual observa-se que se aproxima de um. Substituindo tem-se:

max = 1 (3.27)

Com isso chega-se na concluso que a matrix

[(max + )I S] (3.28)

no singular. Contudo, o vetor de Gibbs tende a infinito quando o ngulo de rotao


. Portanto quando o ngulo esta prximo desse valor a aproximao da equao 3.27
no vivel. (SHUSTER; OH, 2012) O algoritmo implementado para aestimao de
atitude usando vetor de Gibbs, portanto para valores de rotao prximos de tem-se
singularidades. Em Shuster e Oh (2012), faz-se apresenta-se tambm um mtodo o qual
elimina tais singularidades, mas no sera tratado neste trabalho.

3.3 Interface com Usurio


Neste trabalho procurou-se utilizar ferramentas que possibilitassem o desenvol-
vimento de aplicaes grficas. Isso para aumentar a interatividade com o usurio. Na
pesquisa de tais elementos verificou-se que o ambiente de programao Processing
R seria

o mais recomendado. Primeiramente por ser fornecido com licena aberta, e por oferecer
uma interface intuitiva para a prtica da programao.

3.3.1 Interface grfica


Na composio da tela grfica de interface com usurio procurou-se criar estruturas
que apresentassem a atitude da plataforma fsica de forma intuitiva. Para tanto foi criado
um objeto 3D que responde as rotaes observadas pelos sensores. Esses podem ser
configurados para se parecer com um quadrimotor genrico ou um satlite. A Figura 9
mostra a tela inicial com o modelo de quadrimotor.
44 Captulo 3. Desenvolvimento

Figura 9: Tela da interface grfica com o usurio

Fonte: Nosso

3.4 Sistemas de comunicao


A comunicao pode ser resumida em duas partes: aquisio dos sensores comuni-
cao com o software. O primeiro usou-se a comunicao I2C para tal e o outro atravs
do protocolo de comunicao serial RS-232. Contudo nesse tambm usou-se comunicao
sem fio, com o modulo comunicador Xbee, protocolo Zigbee. O objetivo de eliminar os
fios foi para que a rotao da plataforma no ficasse prejudicada, evitando assim possveis
entrelaces e ate ruptura dos mesmos.
O modulo Xbee usado foi escolhido por sua facilidade de implementao. Seu
fabricante disponibiliza um software para a configurao de atuao de seus mdulos.
Usou-se dois mdulos, um conectado a porta serial do Arduino e outro na porta serial do
computador (por virtualizao USB), em sua configurao mais bsica, a de retransmisso
de comunicao. Neste o que recebido por um modulo (serial) transmitido para o outro,
por protocolo Zigbee, e decodificado para serial (o caminho oposto tambm valido).

3.5 Prototipo
No desenvolvimento da plataforma fsica pensou-se em um sistema que simulasse
todas as possveis rotaes no espao tridimensional, ou seja, trs graus de liberdade. Nesse
sentido escolheu-se aplicar uma montagem j utilizada em giroscpios antigos, com cards.
3.5. Prototipo 45

Os cards so compostos por dois ou mais anis concntricos, que permitem movimentos
em trs graus de liberdade do elemento estvel.(ALEXANDRE; OLIVEIRA, 2000) Foi
projetado tambm estruturas que fornecesse suporte aos diferentes elementos trabalha-
dos (Arduino e sensores). O sensor principal, composto dos giroscpios acelermetros e
magnetmetros, foram dispostos no centro de trs cards, assim como o Arduino. Em
complemento tambm previu-se a utilizao de potencimetros para aquisio de rotao
de cada card, para possvel comparaes de resultados. A Figura 10 apresenta o modelo
3D da plataforma.

Figura 10: Modelo do prototipo CAD 3D em duas posies diferentes.Rotao em 90o do anel em verde e
de 180o do anel central que abriga o sensor e o Arduino

Fonte: Nosso
47

4 Resultados

4.1 Montagem

As peas modeladas em com ajuda do software CAD foram cortadas em material


MDF com tcnica laser. Desse modo espera-se uma maior preciso de dimenses. A
Figura 11 apresenta a foto da plataforma montada e da tela do software grfico apresentando
sua orientao.

Figura 11: Plataforma de testes montada e simulando uma orientao


48 Captulo 4. Resultados

Figura 12: Tela do software grfico, correspondente a orientao da montagem. Os dados com o
"Q"representam o quatrnion estimado, e "Euler"os ngulos de Euler correspondentes (roll,pitch e yaw)

4.2 Calibrao

Os potencimetros foram alimentados por uma tenso de 5V, portanto o sinal


de sua sada varia analogicamente entre 0V-5V. especificado que essa relao linear.
Contudo verificou-se que o sinal de tenso descreve o angulo de rotao de apenas um arco
com angulo de 60 . Ou seja considerando que 0V seja a resposta de tenso do potencimetro
5V representaria 60 . Com isso a comparao com o algoritmo implementado foi feita
somente entre 30 e 30 de cada eixo de rotao.

4.3 Validao

Os valores do potencimetro, j mapeados em graus, recebido pelo software


grfico juntamente com o quatrnion obtido no algoritmo QUEST. Nessa etapa feita a
converso para ngulos de Euler e criado uma tabela contendo o valor da rotao em
cada eixo, em graus, dos potencimetros e do QUEST. Transfere-se portanto essa tabela
para uma planilha do LibreOffice e adiciona-se uma outra coluna com a diferena entre as
leituras. O Resultado esta mostrado nos grficos da Figura 13, Figura 14 e Figura 15.
Tabela com a medidas dos ngulos obtidas pelos potencimetros e o erro em relao
aos obtidos com o algoritmo
4.3. Validao 49

Figura 13: Grfico contendo os erros com relao as medidas dos ngulo dos potencimetros e as obtidas
com o algoritmo implementado, em relao ao eixo X (Roll)

Figura 14: Grfico contendo os erros com relao as medidas dos ngulo dos potencimetros e as obtidas
com o algoritmo implementado, em relao ao eixo Y (Pitch)
50 Captulo 4. Resultados

Figura 15: Grfico contendo os erros com relao as medidas dos ngulo dos potencimetros e as obtidas
com o algoritmo implementado, em relao ao eixo Z (Yaw)

Com os resultados observa-se que o erro aumenta conforme o ngulo se afasta de


zero, aparentemente numa taxa constante. V-se tambm uma similaridade razovel entre
os erros em cada eixo, o que nos leva a deduzir que a fonte do erro observado no depende
do eixo de referencia, embora tenha sido analisado algumas anomalias pontuais no eixo
X. Uma possvel fonte de erros seria a no perpendicularidade entre os eixos na posio
inicial, ocasionado no momento de montagem das peas. Portanto com uma melhora nesse
ponto espera-se refinar os resultados. Outra forma de poderia ser estudada para diminuir
os erros seria a troca dos potencimetros por outros modelos multivoltas e mais precisos.
Desse modo os resultados poderiam ser analisados em todo o espao de trabalho. Alm
disso, um refinamento na posio dos potencimetros, para coincidir corretamente com os
respectivos eixos da plataforma, aumentaria a preciso dos ngulos de referencia. Por fim,
no pode-se excluir tambm a possibilidade de o sensor trabalhado estar danificado. Por
ser uma microconstruo electromecnica, alguns impactos mecnicos podem danificar
tais estruturas.
51

Concluso

O desenvolvimento da plataforma v-se que a atingiu o objetivo esperado. Foi


criado um dispositivo que simula de forma intuitiva a orientao de um corpo no espao.
Isso graas a montagem usando de kimbals. Verificou-se tambm que o uso de ferramentas
de modelagem CAD so extremamente recomendadas para concepo de projetos de
prottipos, pois erros de montagem podem ser evitados antes da manufatura de suas
peas, o que economiza tempo e diminui custos de produo. Um outro ponto que tambm
foi observado foi que o material MDF se apresenta como soluo muito economia na
prototipagem de estruturas, por ser barato e por existir servios de cortes precisos para
confeco de peas. Em relao aos resultados percebeu-se uma defasagem quando os
ngulos se afastam de zero, em comparao aos resultados dos potencimetros. Embora
os erros observados se mantenham em uma faixa razovel, eles devem ser analisados. A
apresentao visual da orientao se apresenta de forma satisfatria para a representao
da atitude. Desse modo pode-se concluir que o prototipo desenvolvido cumpre sua funo
de teste para determinao de atitude.Espera-se que em trabalhos futuros a plataforma
seja aprimorada. Os erros observados sejam estudados e apontados suas causas. Por fim
alm dos acelermetros e magnetmetros espera-se futuramente adicionar medidas dos
sensores de giro (giroscpios) tambm presentes na placa AltIMU.
53

Referncias

ALEXANDRE, A.; OLIVEIRA, G. ESTUDO ESTATSTICO DOS PROCESSOS


ENVOLVIDOS EM UMA PLATAFORMA DE ATITUDE SOLIDRIA. 2000. 2000.
Citado na pgina 45.

ARDUINO. Arduino Board. 2016. Disponvel em: <https://www.arduino.cc/en/Main-


/ArduinoBoardUno>. Citado 3 vezes nas pginas 37, 38 e 39.

BAK, T. [S.l.]: Aalborg Universitetsforlag, 1999. Citado na pgina 23.

B, A. P. L.; BORGES, G. A. Sistema de Baixo Custo para Determinao de Atitude


com Aplicao em VANTS. In: VIII Simpsio Brasileiro de Automao Inteligente (SBAI
2007). [S.l.: s.n.], 2007. p. 16. Citado 2 vezes nas pginas 36 e 37.

COUTINHO, S.; GATTASS, M. Utilizao de quatrnios para representao de rotaes


em 3D. 2002. p. 135, 2002. Citado 2 vezes nas pginas 30 e 31.

De Brum, A. V. et al. Sistema de Controle de Atitude Proposto para a Misso Espacial


SERPENS II. 2016. v. 4, p. 17, 2016. Disponvel em: <https://proceedings.sbmac.org.br-
/sbmac/article/view/1066>. Citado na pgina 23.

DIEBEL, J. Representing attitude: Euler angles, unit quaternions, and rotation vectors.
Matrix, 2006. p. 135, 2006. ISSN 14602431. Citado na pgina 28.

GARCIA, R. V.; KUGA, H.; ZANARDI, M. Filtro no linear de kalman sigma-ponto com
algoritmo unscented aplicado a estimativa dinmica da atitude de satlites artificiais.
Instituto Nacional de Pesquisas Espaciais. So Jos dos Campos/SP, 2011. 2011. Citado
3 vezes nas pginas 27, 33 e 36.

Gholitabar Omrani, B. Optimization-Based Control Methodologies with Applications to


Autonomous Vehicle. 2010. n. August, 2010. Citado na pgina 23.

GIANCOLI, D. C. Physics for scientists and engineers. [S.l.]: Prentice hall Upper Saddle
River, NJ, 2000. Citado na pgina 25.

GOLDMAN, R. Understanding quaternions. Graphical Models, 2011. Elsevier Inc., v. 73,


n. 2, p. 2149, 2011. ISSN 15240703. Disponvel em: <http://dx.doi.org/10.1016/j.gmod-
.2010.10.004>. Citado na pgina 23.

HENRIQUES, B. S. M. Estimation and Control of a Quadrotor Attitude. 2011. p. 126,


2011. Citado na pgina 27.

LIEBE, C. C. Star trackers for attitude determination. IEEE Aerospace and Electronic
Systems Magazine, 1995. v. 10, n. 6, p. 1016, 1995. ISSN 08858985. Citado na pgina 23.

MARINHO, A. L. T. G. Os Quaternies e suas Aplicaes. Tese (Dissertao para


obteno de Grau de Mestre) UNIVERSIDADE LUSADA DE LISBOA, Lisboa, 2013.
Citado na pgina 24.
54 Referncias

MEMS; EXCHANGE, N. MEMs what is. 2016. Disponvel em: <https://www-


.mems-exchange.org/MEMS/what-is.html>. Citado 2 vezes nas pginas 34
e 35.

POLOLU. AltIMU-10 v3 Gyro. 2016. Disponvel em: <https://www.pololu.com/product-


/2469>. Citado na pgina 35.

ROCHA, R.; RODRIGUES, L. Photovoltaic panels as attitude sensors for artificial


satellites. IEEE Aerospace and Electronic Systems Magazine, 2016. IEEE, v. 31, n. 11, p.
1423, 2016. Citado na pgina 23.

SHUSTER, M. D.; DELLINGER, W. F. Spacecraft attitude determination and control.


Fundamentals of Space Systems, 1994. 1994. Citado na pgina 27.

SHUSTER, M. D.; OH, S. Three-axis attitude determination from vector observations.


2012. Citado 2 vezes nas pginas 39 e 43.

THIAGO, V. CONTROLE DE ATITUDE DE SATELITES ARTIFICIAIS. 2006. 2006.


Citado na pgina 27.

TRINDADE, M.; SAMPAIO, R. Uma reviso sobre a parametrizao de rotaes finitas


na dinmica de corpos rgidos. [S.l.: s.n.], 2000. 341377 p. ISSN 0100-7386. ISBN
7386200000020. Citado 3 vezes nas pginas 28, 29 e 30.

VAGANAY, J.; ALDON, M.-J.; FOURNIER, A. Mobile robot attitude estimation by


fusion of inertial data. 1993. p. 277282, 1993. Citado na pgina 27.

Vilela Castro, J. C. DESENVOLVIMENTO DE UM DISPOSITIVO PARA


DETERMINAO DE ATITUDE DE SATLITES ARTIFICIAIS, BASEADO EM
MAGNETMETRO DE ESTADO SLIDO. 2006. Citado na pgina 25.

VISCITO, L. et al. Rate and Attitude Determination Using Solar Array Currents.
Colorado Space Grant Consortiums: Undergraduate Space Research Symposium, 2007.
p. 15, 2007. Citado na pgina 23.

WERTZ, J. R. Spacecraft Attitude Determination and Control. The Netherlands: Kluwer


Academic Publishers, 1978. 782785 p. Citado na pgina 24.

ZHU, R. et al. A linear fusion algorithm for attitude determination using low cost
MEMS-based sensors. Measurement, 2007. v. 40, n. 3, p. 322328, 2007. ISSN 0263-2241.
Citado na pgina 24.
Apndices
57

APNDICE 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 APNDICE 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 3 x3 /////


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 3 x3 /////
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 APNDICE 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 APNDICE 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 APNDICE 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