Escolar Documentos
Profissional Documentos
Cultura Documentos
Rio de Janeiro
Agosto de 2013
Rio de
2.
iv
Sumrio
Lista de Figuras
viii
Lista de Tabelas
xi
Lista de Abreviaturas
xii
1 Introduo
1.1
Motivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
Organizao do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1
3.2
Descrio do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1
3.1.2
3.1.3
Metodologia Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1
Sensor inercial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2
Motor DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.3
Projeto de um controlador PI . . . . . . . . . . . . . . . . . . . . . 23
26
vi
4.2
4.1.1
Comunicao serial . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2
4.1.3
4.2.2
4.2.3
5 Resultados
48
5.1
. . . . . . . . . . . . . . 48
5.2
58
Referncias Bibliogrficas
60
A Folhas de Dados
62
69
vii
Lista de Figuras
1.1
ROV LUMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1
2.2
3.1
3.2
3.3
3.4
3.5
. . . . 12
3.6
3.7
3.8
Modelo de uma ISP com dois graus de liberdade em uma estrutura Pan/Tilt 14
3.9
14
viii
3.16 Ganho dos sistemas 3.28 (a) e 3.27 (b) com = 1/ 2 e n = 31,42rad/s . 25
4.1
4.2
4.3
4.4
. . . . 29
4.5
4.6
. . . . 33
4.7
. . . . 34
4.8
. . . . 34
4.9
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
Lista de Tabelas
1.1
4.1
xi
. . . . . . . . 32
Lista de Abreviaturas
AHRS
DC
IMU
ISP
LOS
MEMS
NED
PWM
ROV
xii
Captulo 1
Introduo
1.1
Motivao
Este trabalho surgiu como parte do desenvolvimento do rob submarino de opera-
o remota (ROV, Remotely Operated Vehicle) LUMA (Light Underwater Mobile Asset),
figura 1.1, desenvolvido pelo Laboratrio de Controle do PEE/COPPE. Seu principal objetivo o estudo da fauna e da flora da Baa do Almirantado, na Antrtica, por meio de
coleta de imagens, vdeos de alta definio e amostras ambientais (organismos, rochas e
sedimentos).
A filmagem de vdeos de alta qualidade comprometida pelo movimento do veculo,
causado tanto pela operao remota por um piloto do ROV, quanto por distrbios do
ambiente (correntes ocenicas e ondas, por exemplo). Um determinado alvo ou uma
regio de interesse pode sair do campo de viso da cmera, caso a orientao desta seja
muito alterada pela movimentao do ROV. Vibraes de pequena amplitude tambm
degradam a qualidade da imagem captada. Em tais casos preciso desenvolver um sistema
que compense movimentos e distrbios do veculo.
1.2
Objetivos
O objetivo geral deste trabalho o desenvolvimento de uma plataforma inercialmente
Apresentar duas estratgias para a estabilizao inercial que podem ser empregadas
Construir um mecanismo Pan/Tilt que possa ser utilizado como parte de uma plataforma inercialmente estabilizada
Implementar a metodologia proposta e obter os resultados com base na imagem da
cmera estabilizada
1.3
Organizao do Trabalho
O trabalho possui cinco captulos alm deste. O prximo captulo discute de forma
Captulo 2
Sistemas de Estabilizao Inercial
Plataformas inercialmente estabilizadas (ISP, Inertially Stabilized Platform) so aplicadas para apontar e estabilizar a linha de visada (LOS, Line of Sight) de diversos tipos
de sensores, cmeras, telescpios, antenas de comunicao e armamentos. Uma ISP permite orientar uma carga com base em um sistema de coordenadas inercial, de forma a
compensar movimentos da base em que esteja fixada. Na imagem 2.1 temos trs exemplos
de aplicaes em sistemas de viso:
a) Uma ISP de dois graus de liberdade (Pan/Tilt) aplicado para estabilizar a cmera
do ScanEagle, veculo areo no tripulado (VANT) desenvolvido pela Boeing e pela
Insitu. Este VANT foi criado com o objetivo inicial de rastrear cardumes, auxiliando
barcos de pesca. Atualmente bastante utilizado para mapear e monitorar regies
de acesso remoto em operaes militares.
b) O telescpio aeroespacial Hubble, lanado em 1990 para capturar imagens de altssima resoluo do espao, tambm se trata de uma ISP. Neste caso a orientao do
telescpio controlada afim de estabilizar a linha de visada de sua cmera.
c) A Scorpio Stabilized Head da Servicevision de uso comum em filmagem de eventos
em estdios esportivos, consiste de uma ISP com 3 graus de liberdade, que por meio
de cabos se desloca por cima do campo.
Embora no seja utilizada na prtica, uma ISP com apenas um grau de liberdade
pode servir para descrever o funcionamento bsico, como est ilustrado na figura 2.2.
4
a)
b)
c)
O sensor inercial permite que se mea a orientao do corpo com base em um sistema
de coordenadas inercial. Geralmente giroscpios, sensores que medem a velocidade angular
ao redor de um eixo em relao a um sistema de coordenadas inercial, so usados.[8]
tambm possvel utilizar um sensor de atitude e rumo, que por meio das medidas de um
conjunto de acelermetros, magnetmetros e giroscpios, calcula a orientao inercial.
Neste trabalho o objetivo estabilizar inercialmente a linha de visada (LOS, Line
of Sight) de uma cmera, isto , do vetor definido pela direo que a cmera aponta.
Na particularidade de um sistema ptico a cmera pode ser colocada em duas posies
diferentes. Na primeira, Platform Stabilization, a cmera fixada diretamente em cima
da plataforma. Na segunda, Steering Stabilization, elementos pticos, como prismas e
espelhos, so montados em uma estrutura similar a um periscpio, que direciona a luz para
a cmera, fixada no veculo. Esta abordagem mais complexa pois deve levar em conta
fenmenos pticos como a magnificao da imagem, por exemplo. Pode ser vantajosa se
a cmera em questo for muito pesada ou tiver dimenses que impossibilitam sua livre
orientao. O primeiro caso foi abordado neste trabalho.
Geralmente ISPs so empregadas como componentes de um sistema maior, com o
objetivo de rastrear um alvo, por exemplo. O sistema de controle da ISP uma malha
rpida, para remover distrbios de alta frequncia e controlar a LOS, dentro de uma malha mais lenta, responsvel pelo rastreamento do alvo. O controle da linha de visada de
uma cmera envolve dois requisitos principais, tracking e jitter. O primeiro se refere ao
problema de apontar a LOS em um determinado alvo ou em alguma regio de interesse.
O segundo diz da necessidade de manter a LOS estabilizada na orientao especificada.
A preciso varia com a aplicao desejada. Cmeras portteis ou antenas de comunicao
requerem uma estabilizao na ordem de miliradianos. Enquanto que telescpios aeroespaciais como o Hubble, requerem a estabilizao na ordem de fraes de micro-radianos.
Captulo 3
Descrio do Problema e Metodologia
Proposta
O problema considerado neste captulo envolve a estabilizao da orientao da
linha de visada de uma cmera por meio de uma plataforma inercialmente estabilizada
(ISP). Como gimbal um mecanismo de dois graus de liberdade (Pan/Tilt) utilizado,
com cada eixo acionado por um motor DC. O sensor inercial consiste de um sistema de
referenciamento de atitude e rumo (AHRS), que permite medir a orientao em relao a
um referencial inercial.
A alocao do sensor inercial pode ser feita basicamente de duas formas: fixado no
corpo do veculo ou na plataforma que se visa estabilizar. Isto ser tratado de forma
simplificada, com apenas um grau de liberdade, nas sees 3.1.1 e 3.1.2. Em seguida
feita uma generalizao para o mecanismo Pan/Tilt na seo 3.1.3.
A descrio do funcionamento dos componentes bsicos do sistema, sensor inercial e
motor DC, feito nas sees 3.2.1 e 3.2.2. O projeto de controle desenvolvido no final,
na seo 3.2.3.
3.1
Descrio do Problema
Embora o comportamento de um sistema real seja mais complicado, a simplifica-
aL = ab + bL = r
(3.1)
3.1.1
Figura 3.1: Ilustrao do sistema de um grau de liberdade com o sensor inercial fixado
na base do veculo
r (t)
bL (t)
Sensor Inercial
e(t)
Controlador
u(t)
Planta
ab (t)
Sensor
Figura 3.2: Diagrama de blocos do sistema com o sensor inercial fixado no veculo
A relao entre o sinal de referncia, R(s), e a sada, Y (s), dada por:
C(s)P (s)
Y (s)
=
R(s)
1 + C(s)P (s)
(3.2)
1
E(s)
=
R(s)
1 + C(s)P (s)
(3.3)
Posto isso passamos para o segundo caso, que se mostrar anlogo, de tal modo que
as duas estratgias podero ser tratadas de forma unificada.
R(s)
E(s)
U(s)
C(s)
P(s)
Y (s)
Figura 3.3: Diagrama de blocos do sistema simplificado com o sensor inercial fixado no
veculo
Figura 3.4: Ilustrao do sistema de um grau de liberdade com o sensor inercial fixado
na ISP
10
3.1.2
Nessa estratgia o sensor fixado na ISP, ao lado da cmera, de forma que agora
mede diretamente o ngulo que se quer estabilizar, aL (t). A planta considerada a mesma
do sistema anterior. Conforme mostrado na figura 3.5, controlamos a varivel ab (t) por
meio do gimbal e o movimento do veculo, bL (t), visto como uma pertubao na sada
do sistema. Em tal configurao no se faz necessrio o uso de Encoders/Decoders, uma
vez que no precisamos medir o sinal ab (t). Como o Sensor Inercial mede diretamente a
direo da linha de visada da cmera, possvel a correo de distrbios que atuem em
cima da plataforma, que no seriam tratados pelo primeiro caso.
A sada, y(t) = aL (t) deve seguir um sinal de referncia r(t) = r (t), rejeitando
um distrbio w(t) = bL . Se a referncia for nula, se trata de um problema de regulao.
Novamente, para simplificar o estudo do problema, apenas a dinmica da planta e
do controlador so considerados, tal como se apresenta na figura 3.6. Temos ento uma
funo de transferncia relacionando o sinal de referncia, R(s), e de sada, Y(s), igual ao
caso anterior:
C(s)P (s)
Y (s)
=
R(s)
1 + C(s)P (s)
(3.4)
(3.5)
Esta igual a funo de transferncia do caso anterior, definida por 3.3, em que
manter o sinal de erro pequeno, independente de variaes do sinal de referncia causados
pela rotao do veculo. Tais variaes agora so vistas como um distrbio, que precisa
ser rejeitado na sada. A comparao implica que o mesmo controlador projetado para
um caso vale para o outro, isto considerando as idealizaes feitas.
3.1.3
Para ser aplicvel no ROV LUMA, a ISP deve ser projetado considerando os seis
graus de liberdade do ROV. A notao nutica utilizada para nomear os movimentos
11
bL (t)
r (t)
e(t)
Controlador
u(t)
Planta
ab (t) P
aL (t)
Sensor Inercial
Figura 3.5: Diagrama de blocos do sistema com o sensor inercial fixado na ISP
W (s)
R(s)
E(s)
U(s)
C(s)
P(s)
Y (s)
Figura 3.6: Diagrama de blocos do sistema simplificado com o sensor inercial fixado na
ISP
y
z
12
13
Figura 3.8: Modelo de uma ISP com dois graus de liberdade em uma estrutura Pan/Tilt
a
B
Figura 3.9: Sistemas de coordenadas utilizado para a ISP com dois graus de liberdade
14
(3.6)
Em que Ri (k) a rotao elementar ao redor do eixo i com um ngulo k. Este tipo
de representao pode ser utilizado, uma vez que seus pontos de singularidade, = /2,
no fazem parte das condies de operao do ROV.
A linha de visada da cmera considerada paralela ao eixo x do sistema de coordenadas a. A orientao da LOS pode ser obtida pela primeira coluna de RaL , que por sua
vez obtida em termos da orientao do veculo e dos ngulos de compensao:
UL = RbL (, , )Rz ()Rx ()ex
(3.7)
(3.8)
cos() cos()
(3.9)
15
3.2
Metodologia Proposta
Esta seo visa explicar o princpio de funcionamento dos componentes da ISP que
foi desenvolvida, que constituda basicamente um sensor inercial, seo 3.2.1, e um motor
DC, seo 3.2.2. Em seguida um controle proposto na seo 3.2.3.
3.2.1
Sensor inercial
16
Princpio de Funcionamento
Basicamente os sensores MEMS possuem uma carga de prova e medem uma fora
aplicada sobre ela em um determinado eixo. Com base na fora resultante possvel medir
a acelerao linear. A velocidade angular do corpo em relao a um referencial inercial
derivado da fora inercial de Coriolis. E o campo magntico local medido por meio da
fora de Lorentz.
O sensor utiliza como referncia inercial o sistemas de coordenadas NED (NorthEast-Down), tambm conhecido como LTP (Local Tangent Plane), que comumente
usado na navegao de veculos. Neste sistema, representado na figura 3.11, a origem
fixada arbitrariamente em um ponto da superfcie da terra, o eixo x aponta para o norte
geogrfico e tangncia o meridiano que passa pela origem, o eixo z aponta para o centro
da terra, e por se tratar de um sistema de mo direita, y consequentemente aponta para
o leste.
Logo que o sensor comea a funcionar preciso calcular a orientao do sistema
de coordenadas do sensor em relao ao sistema de coordenadas inercial. Para isso o
acelermetro e o magnetmetro so lidos. O primeiro, desprezando a presena de outras
foras, mede a acelerao da gravidade, o que define o eixo z. O segundo, considerando
apenas a presena do campo magntico terrestre, mede o vetor que aponta para o norte
magntico, que usado como uma aproximao para o eixo x.
possvel compensar o erro entre o norte magntico e o norte geogrfico por meio
de uma medida de latitude e longitude do sensor, dada por um GPS por exemplo, e de
um modelo do campo magntico da terra. No caso do ROV LUMA, isto s ser possvel
enquanto estiver na superfcie.
Sabendo a orientao do sistema de coordenadas do sensor em relao ao sistema
de coordenadas inercial e se considerarmos giroscpios ideais, a integrao das medidas
destes permite saber a orientao do sensor em qualquer instante de tempo. Imperfeies
no sistema, como por exemplo deriva trmica (drift), levam a um erro que cresce com o
tempo, no caso do sensor 3DM-GX3-25 em uma taxa em torno de meio grau por minuto
em cada eixo. Para compensar tais erros o sensor deve medir continuamente as referncias
17
Norte Geogrfico
y
z
Meridiano
Centro
S
N
3.2.2
Motor DC
19
Ra
La
u(t)
Rf
Lf
Veb (t)
Vf
La
dia (t)
= u(t) Ra ia (t) Ke 1 (t)
dt
(3.10)
Para a parte mecnica, temos que considerar a presena de uma caixa de reduo,
de forma que a velocidade angular do eixo de sada do motor uma frao da velocidade
angular do rotor:
2 (t) =
1 (t)
N
(3.11)
Em uma idealizao, mostrada em [4], desprezando perdas por atrito e folgas entre
os dentes das engrenagens da reduo, a energia se conserva, de forma que:
(3.12)
20
(3.13)
J1
d1 (t)
= Tm (t) Tv (t) T1 (t)
dt
(3.14)
J1
d1 (t)
= Kt ia (t) F1 1 (t) T1 (t)
dt
(3.15)
T2 (t) = J2
d2 (t)
+ F2 2 (t) + Tl (t)
dt
(3.16)
J2 d1 (t)
F2
Tl (t)
+ 2 1 (t) +
2
N
dt
N
N
(3.17)
Jeq
d1 (t)
= Kt ia (t) Feq 1 (t) TLeq (t)
dt
(3.18)
Em que
Jeq = J1 +
J2
N2
Feq = F1 +
F2
N2
TLeq =
Tl
N
(3.19)
21
TLeq
U(s)
Kt
La s + Ra
1
Jeq s + Feq
W1 (s)
1
N
W2 (s)
1
s
2 (s)
Ke
Figura 3.15: Diagrama em blocos do Motor DC
a dinmica associada ao sistema mecnico, a indutncia La desprezada e podemos
simplificar o sistema para que o modelo da funo de transferncia entre a tenso de
entrada e a velocidade angular do sistema seja de primeira ordem:
W2 (s) =
kn /N
U(s)
m s + 1
(3.20)
Kt
Ra Jeq
e m =
, com = Kt Ke + Feq Ra
Onde kn =
W2 (s) =
ktl
Tl (s)
tl + 1
(3.21)
1
Jeq
K t Ke
e tl =
, com =
+ Feq
2
N
Ra
A maioria dos parmetros do modelo podem ser pegos na folha de dados do motor,
Em que ktl =
ver apndice A.1, no entanto os parmetros referentes aos momentos de inrcia e aos
coeficientes de atrito viscoso so desconhecido.
O clculo de m revela um valor na ordem de alguns milissegundos. A dinmica do
motor bem mais rpida do que ser exigido pelo gimbal no problema da estabilizao,
de modo que a relao entre a posio angular do eixo e a tenso de entrada pode ser
modelada por um ganho seguido de um integrador:
Km
2 (s)
=
U(s)
s
Em que Km = Kn /N.
22
(3.22)
3.2.3
Projeto de um controlador PI
Para uma ISP o parmetro mais importante para avaliar a performance do controle
a largura de banda da malha fechada do sistema. H diferentes definies para esse
parmetro. Em [2] isto definido como a faixa de frequncia em que ganho do sistema
maior que um fator de 1/ 2 de seu valor de referncia, o que equivale a uma queda de
3dB. Este valor depende do tipo de sistema considerado. o ganho de regime, quando
este finito e diferente de zero, em sistemas passa-baixas. Para sistemas passa-altas, o
valor de referncia o ganho de alta frequncia.
O movimento da base, no caso do ROV LUMA, est restrito a uma banda de aproximadamente 5 Hz, valor aproximado definido a partir de medies coletadas em uma das
expedies realizadas. Tambm consideramos que o sinal que comanda o posicionamento
da LOS est restrito a essa mesma faixa. Portanto, no caso da estrutura discutida em
3.1.1 preciso que a banda do sistema de malha fechada passe sinais de at 5 Hz. No
segundo caso, 3.1.2, o sistema deve bloquear distrbios na sada de at 5 Hz.
Consideramos um controlador do tipo PI (Proporcional e Integral), que segundo [8]
bastante utilizado no controle de ISPs, mesmo alguns de alta performance. O mesmo
autor nota que um desempenho melhor pode ser obtido com um controle mais complexo,
com mtodos adaptativos e observadores de distrbios, por exemplo.
A seguinte notao para um controlador PI adotada,
C(s) = Kp (1 +
1
)
Ti s
(3.23)
23
Km
s
(3.24)
(3.25)
(3.26)
(3.27)
1
s2
= 2
1 + C(s)P (s)
s + 2n s + n2
(3.28)
O ganho para a frequncia natural da funo 3.28 dado por 1/(2). Portanto,
2n
Km
Ti :=
Km Kp
n2
(3.29)
Este modelo terico ser usado para a definio do controlador do sistema experimental que ser descrito no captulo seguinte. Como pode ser visto no captulo 4, a
largura de banda ser definida a partir de resultados experimentais.
24
a)
Magnitude (dB)
0
10
20
30
40
50
60
0
10
10
10
10
Frequncia (rad/s)
b)
Magnitude (dB)
10
5
0
5
10
15
20
25
30
0
10
10
10
10
Frequncia (rad/s)
Figura 3.16: Ganho dos sistemas 3.28 (a) e 3.27 (b) com = 1/ 2 e n = 31,42rad/s
25
Captulo 4
Desenvolvimento do Sistema
Experimental
O mecanismo Pan/Tilt foi montado com dois motores DC, como mostra a figura
4.1. Nesta imagem o sensor inercial est fixado em cima da ISP, ao lado da cmera. O
sistema colocado em uma prancha de madeira, que servir para simular movimentos do
ROV LUMA.
O desenvolvimento comeou com a implementao de um circuito de controle com
o dispositivo Arduino, uma plataforma baseada em um microcontrolador Atmel AVR.
Esta primeira tentativa acabou no obtendo sucesso. Uma vez que o microcontrolador
no possui uma unidade aritmtica de ponto flutuante, clculos com este tipo de varivel consomem muito tempo de processamento, o que acarreta em baixas frequncias de
amostragem do ciclo de controle. O circuito de potncia, que alimenta o motor, possua
uma zona morta razoavelmente grande, o que criava dificultadas no controle. Apesar de
serem problemas contornveis, por meio de aritmtica de ponto fixo, para o primeiro caso,
e compensao de zona morta, para o segundo, a soma destes e outros fatores estimulou
o uso de uma plataforma j consagrada para a prototipagem de sistemas de controle.
A placa Q8, de controle Hardware in the Loop (HIL), da Quanser, foi utilizada.
Ela possui canais de sada analgicas e sinais de PWM (Pulse Width Modulation), que
permitem por meio de um circuito de potncia, alimentar o motor, e canais de entrada para
a leitura de encoders, sensores que servem para a leitura da posio angular do eixo dos
motores. Na parte de software foi utilizada a plataforma QUARC, tambm da Quanser.
26
Motore
4.1
Movimento do Veculo
Comando do Operador
Sensor Inercial
Sistema de Controle
(QUARC)
Sada Analgica/PWM
(Placa Q8)
Circuito de Potncia
Decoder
(Placa Q8)
Encoder
Motor DC
Figura 4.2: Diagrama de blocos do sistema experimental com o sensor inercial fixado no
veculo
Comando do Operador
Sistema de Controle
(QUARC)
Movimento do Veculo
Sada Analgica/PWM
(Placa Q8)
Circuito de Potncia
Motor DC
Sensor Inercial
Figura 4.3: Diagrama de blocos do sistema experimental com o sensor inercial fixado na
ISP
28
Processo para
Leitura Serial
QUARC
Memria Compartilhada
4.1.1
Comunicao serial
A comunicao serial foi realizada com o sistema operacional Microsoft Windows XP,
no ambiente de desenvolvimento Microsoft Visual Studio 2005, compatvel com o QUARC.
A implementao se baseou em bibliotecas do sistema, com base em configuraes vistas
29
Configuraes de Inicializao
Estabelece Comunicao
com o QUARC
Se houver falha
Se houver falha
Verifica integridade dos dados
Fim de Execuo
Armazena dados na
memria compartilhada
30
em [1]. O cdigo, na linguagem C, est completo no apndice B.1. Nesta seo apenas os
pontos mais importantes sero comentados.
A biblioteca do sistema, windows.h, define uma estrutura chamada DCB, que armazena parmetros de controle para dispositivos de comunicao serial. Neste caso os
seguintes parmetros so definidos:
72
74
156
WriteFile ( hCom ,
// handle
& getEuler ,
// Array que sera enviado
1,
// Bytes que devem ser enviados
& dwNumBytesW ri t te n ,
// Bytes e f e t i v a m e n t e enviados
NULL ) ;
A resposta deve vir em um pacote de 19 bytes, de acordo com a tabela 4.1, que so
armazenado no array SensData.
160
162
ReadFile ( hCom ,
& SensData ,
19 ,
& dwBytesTra ns fe r re d ,
NULL ) ;
// handle
// Array que sera escrito
// Numero de bytes lidos
// Bytes e f e t i v a m e n t e recebidos
31
Byte 1
Bytes 2-5
Bytes 6-9
Bytes 10-13
Bytes 14-17
Bytes 18-19
0xCE
Balano ou Roll (IEEE-754 Float)
Caturro ou Pitch (IEEE-754 Float)
Guinada ou Yaw (IEEE-754 Float)
Timer
Checksum
Tabela 4.1: Estrutura da resposta do sensor 3DM-GX3-25 para uma requisio dos ngulos de Balano (roll ), Caturro (pitch) e Guinada (yaw )
O primeiro byte um eco do comando enviado para o sensor. Cada ngulo uma
varivel do tipo, Float IEEE-754, com quatro bytes, sendo que os mais significativos so
transmitidos primeiro. O CheckSum uma varivel de dois bytes, do tipo Unsigned Short,
e deve corresponder a soma de todos os bytes anteriores. Se a soma for diferente do valor
de CheckSum, significa que houve algum tipo de erro na transmisso dos dados e ser
mais seguro no utiliz-los.
O ambiente em que o sistema foi desenvolvido possui um processador que armazena
os bytes menos significativos por ltimo (little-endian). Como os bytes mais significativos
so enviados primeiro, o array SensData tem a ordem revertida. Desta forma a verificao
de CheckSum e a leitura dos dados fica simplificado:
170
172
174
176
178
4.1.2
124
126
128
const char
uri []
const t_boolean nonblocki n g
const t_int
send_buffer_size
const t_int
receive_buffer_size
const char *
locale
t_stream client ;
t_error result ;
char message [512];
=
=
=
=
=
192
33
34
194
Por parte do modelo no Simulink, h um bloco de servidor, figura 4.10, que procura
e estabelece comunicao com um cliente, local ou remoto, que tente se conectar na
URI especificada, no caso shmem://imuData:1. Os parmetros desse bloco so exibidos
na figura 4.9. Os dado so recebidos como uma tripla de variveis do tipo single, que
corresponde ao tipo IEEE-754 Float enviado pelo sensor.
4.1.3
36
Figura 4.11: Configurao do sensor inercial por meio do software 3DM-GX3 Monitor
local, o software 3DM-GX3 Iron Calibration (figura 4.12) fornecido para efetuar uma
calibrao do tipo Hard ou Soft Iron Calibration.
4.2
Figura 4.12: Calibrao do sensor inercial por meio do software 3DM-GX3 Iron Calibration
alguma forma. No caso do sinal analgico isto feito por meio de um amplificador linear.
Para isto foi usado um mdulo com um amplificador de potncia. Na falta de um segundo
mdulo, o outro motor foi alimentado por meio de um circuito de ponte H, acionado por
um sinal PWM. Os dois casos so vistos nas prximas subsees.
4.2.1
38
entrada
ncoder
Sinai
Tenso de sada
para o motor
Sinal de
controle
39
40
Amplitude
1
L
L
+ TD
Tempo
TL
TD
4.2.2
O PWM um sinal digital modulado por largura de pulso (figura 4.16). Enquanto o
sinal analgico visto anteriormente modulado diretamente por uma amplitude desejada,
neste o sinal definido por um ciclo de trabalho (duty cycle), que varia de 0 (TL = 0) a
100% (TD = 0) . Este parmetro define a porcentagem do perodo de tempo que o sinal
est em nvel lgico 1. So sinais de alta frequncia, de forma que quando passam por
um filtro-passa baixas, so vistos como um sinal de amplitude intermediria entre o valor
lgico 1 e 0, igual a TL /(TD + TL ).
Por se tratar de um sinal de baixa potncia, o acionamento de um motor por meio
de um PWM se d com o intermdio de um circuito de potncia. No caso se trata de
uma ponte H, cuja estrutura est representada na figura 4.17. O sinal PWM fecha as
chaves S1 e S4 para que a fonte Vin alimente o motor em um sentido, e S2 e S3 para o
outro sentido. Uma configurao possvel aplicar o sinal PWM nas chaves S1 e S4 , e o
inverso deste mesmo sinal nas chaves S2 e S3 . De forma que quando o ciclo de trabalho
estiver em 50% a sada para o motor seja um sinal com mdia nula. Acima deste valor
o motor alimentado por uma tenso proporcional ao ciclo, no sentido definido por S1 e
S4 . A placa utilizada, figura 4.17, composta de um circuito integrado prprio para esta
aplicao, chaves MOSFETS e de componentes de segurana do circuito, como diodos de
barreira.
41
S1
+
Vs
Motor
S2
S3
S4
Tenso de sada
para o motor
Sinal de PWM
Tenso de Alimentao
da Ponte H
42
Figura 4.19: Configurao uma sada de clock da placa Q8 para um sinal PWM
Configurao do PWM no QUARC
Para utilizar o sinal PWM disponvel na placa Q8, preciso configurar uma das
sadas que por padro fornecem o clock do hardware. Isto feito por meio do bloco HIL
Initialize da biblioteca QUARC Target, conforme visto na figura 4.19.
A configurao do sinal PWM vista no mesmo bloco, na aba PWM Outputs. A
placa Q8 permite sinais PWM com frequncias de at 16,7MHz. No entanto, quanto
maior a frequncia, pior a resoluo do ciclo de trabalho do sinal. No caso a frequncia
foi arbitrada em 65,104kHz, o que permite definir a largura do ciclo de trabalho com uma
resoluo de 8 bits.
Alm de selecionar a frequncia possvel escolher o modo de operao. O modo
0 o que foi descrito nesta seo e que tambm o mais comum. Neste caso o valor de
entrada pode variar de 0.0 (0% de ciclo de trabalho) at 1.0 (100% de ciclo de trabalho).
43
44
4.2.3
Para o caso em que o sensor inercial fixado no corpo do veculo, necessrio medir
a posio angular do eixo dos motores.
O motor acoplado a um encoder incremental ptico Avago HEDM-5500J14, ver
apndice A.2. O sensor consiste basicamente de um emissor de luz, no caso um LED, e
um circuito de fotodiodos. Entre o LED e o circuito h uma placa dentada que fixada no
eixo interno do motor. Tal sensor, com a rotao do motor, gera duas ondas quadradas,
canal A e canal B com uma defasagem de 90 , com 1024 pulsos para cada volta do rotor.
Uma mudana em um estado indica uma rotao e o sentido da mesma indicada pela
defasagem entre os dois canais.
Para a leitura do encoder incremental necessrio um sistema que leia os canais
do encoder e atualize uma varivel contadora, que indicar a posio angular do eixo do
motor em relao a sua posio inicial. Trs tipos de codificao so possveis: 1x, 2x e
4x. Na primeira codificao a medida do canal B feita aps detectar uma transio de
subida no canal A. Na segunda qualquer transio de estado no canal A implica em uma
medio do canal B. E na codificao 4x, qualquer transio de estado em qualquer um
dos canais leva a uma medio.
+
1,1
1,0
1,1
0,0
+
0,1
1,0
0,0
0,1
1,0
1,1
O tipo de codificao implica na resoluo da medio obtida com conjunto encoder/decoder, sendo a codificao 4x a de menor resoluo possvel, ou seja, a que permite
medir a menor variao possvel de posio. No caso, com tal codificao e com um conjunto de reduo 43 : 1, temos 43 1024 pulsos para cada volta do eixo externo do motor,
o que d uma resoluo de:
360
0,002 7,36
43 4 1024
1024
e a frequncia mxima dos sinais gerados de max
144kHz. Em que max
360
a velocidade angular mxima do eixo interno do motor.
Leitura dos encoders com placa Q8
A placa Q8 possui 8 entradas para leitura de encoders, que so computados em
contadores de 24 bits. As possveis configuraes so mostradas na figura 4.22. Os trs
tipos de quadraturas explicados anteriormente so aceitos. Neste experimento foi optado
o uso da quadratura 4x. A placa aplica um filtro ajustvel aos canais A e B, sua frequncia
definida por 1/(120e 9 N), com N variando de 1 at 255. Desta forma a frequncia
pode variar de 33kHz at 8,3MHz.
A sada do bloco de leitura do encoder dada como um valor inteiro, armazenado
no counter. preciso multiplic-lo por um fator, que depende da reduo do motor e da
quadratura usada, para converte-lo em uma medida fsica.
46
47
Captulo 5
Resultados
Este captulo apresenta os resultados dos experimentos realizados, com o controle
proposto no captulo 3 e com os componentes descritos no captulo 4. Aqui apenas o caso
em que o sensor inercial fixado em cima da ISP considerado. O motor da base (Pan)
foi acionado por meio de um sinal de tenso analgico e um amplificador de potncia,
enquanto o motor de cima (Tilt) foi acionado por um sinal PWM e um driver de ponte
H. O sistema de controle trabalhou com uma frequncia de 1kHz, a mesma do sensor
inercial. Os experimentos feitos consideraram a estrutura em que o sensor inercial
fixado em cima da ISP, ao lado da cmera. A plataforma de madeira, vista na imagem
4.1, foi utilizada para simular o movimento do ROV. Os resultado so analisados de duas
formas distintas, por meio dos dados do sensor inercial, na seo 5.1, e por meio do vdeo
captado pela cmera, na seo 5.2.
5.1
ngulo (graus)
0.1
0.05
0
0.05
0.1
6
Tempo (s)
Sinal de Controle para o Motor Tilt
10
10
0.4
0.2
0
0.2
0.4
6
Tempo (s)
Figura 5.1: Leitura do sensor no canal de Caturro (pitch) e sinal de controle enviado para
o motor de Tilt no primeiro experimento, sem movimento na plataforma
49
ngulo (graus)
1
0.5
0
0.5
6
Tempo (s)
Sinal de Controle para o Motor Pan
10
10
1
0.5
0
0.5
1
6
Tempo (s)
Figura 5.2: Leitura do sensor no canal de Guinada (yaw ) e sinal de controle enviado para
o motor de Pan no primeiro experimento, sem movimento na plataforma
50
ngulo (graus)
0.15
0.1
0.05
0
0.05
6
Tempo (s)
Sinal de Controle para o Motor Tilt
10
10
0.4
0.2
0
0.2
0.4
6
Tempo (s)
Figura 5.3: Leitura do sensor no canal de Caturro (pitch) e sinal de controle enviado para
o motor de Tilt no segundo experimento, sem movimento da plataforma
previstas. Isto leva a crer que foi causado por alguma simplificao adotada. Isto , que
o sistema pode ser tratado de forma desacoplada, que os motores so ideais, a estrutura
no apresenta nenhum tipo de folga ou no-linearidade e os sensores so ideais.
Um segundo teste foi feito nas mesmas condies, reduzindo o ganho de controle
para a metade. De forma que agora o circuito de controle deve rejeitar distrbios de sada
compreendidos em uma banda de aproximadamente 2,5Hz. O resultado est exposto nas
figuras 5.3 e 5.4. Neste caso a estabilizao do ngulo de caturro obteve um erro absoluto
mdio de 0,015 , ou aproximadamente 0,25 miliradianos. O resultado da estabilizao do
ngulo de guinada foi inferior, obtendo um erro absoluto mdio de 0,068 , ou aproximadamente 1,2 miliradianos. A diminuio no ganho foi, portanto, suficiente para eliminar
as oscilaes indesejadas.
O ltimo teste foi feito movimentando a plataforma de base. O erro absoluto m51
ngulo (graus)
0.6
0.4
0.2
0
0.2
6
Tempo (s)
Sinal de Controle para o Motor Pan
10
10
1
0.5
0
0.5
1
6
Tempo (s)
Figura 5.4: Leitura do sensor no canal de Guinada (yaw ) e sinal de controle enviado para
o motor de Pan no segundo experimento, sem movimento da plataforma
52
ngulo (graus)
1
0.5
0
0.5
1
1.5
6
Tempo (s)
Sinal de Controle para o Motor Tilt
10
10
3
2
1
0
1
2
6
Tempo (s)
Figura 5.5: Leitura do sensor no canal de Caturro (pitch) e sinal de controle enviado para
o motor de Tilt no terceiro experimento, com movimento da plataforma
dio para a estabilizao do ngulo de caturro foi de 0,16, ou de aproximadamente 2,9
miliradianos. Para o ngulo de guinada, o erro foi de 0,37 , ou aproximadamente 6,4
miliradianos.
5.2
em conta os erros deste. Um outro teste para comparao foi feito levando em conta as
imagens capturadas pela cmera e um alvo fixado em uma tela. Um algoritmo de rastreio
visual foi aplicado para revelar a trajetria desse alvo. Ainda que no caso ideal de uma
estabilizao perfeita o alvo se movimente na imagem captada, uma vez que a ISP pode
compensar apenas dois dos seis graus de liberdade do veculo, o movimento do alvo bem
53
ngulo (graus)
3
2
1
0
1
6
Tempo (s)
Sinal de Controle para o Motor Pan
10
10
4
2
0
2
4
6
Tempo (s)
Figura 5.6: Leitura do sensor no canal de Guinada (yaw ) e sinal de controle enviado para
o motor de Pan no terceiro experimento, com movimento da plataforma
54
a)
b)
100
100
200
200
300
300
400
400
100
200
300
400
500
600
100
200
c)
300
400
500
600
400
500
600
d)
100
100
200
200
300
300
400
400
100
200
300
400
500
600
100
200
300
55
Para atenuar rudo do tipo sal e pimenta (Salt-and-Pepper noise), comum em imagens e causados por pixels corrompidos na transmisso de dados da cmera, um filtro de
suavizao aplicado. A funo medfilt2, usando os parmetros de padro, faz com que o
valor de cada elemento de uma matriz seja substitudo pela mdia dos elementos de sua
vizinhana. A sada de tal funo a imagem da figura 5.7c).
1
Aplicando o algoritmo para cada quadro do vdeo e sobrepondo os resultados, podemos visualizar o rastro da trajetria do alvo. A figura 5.8 mostra o resultado para o
vdeo captado, em a) sem o sistema de estabilizao da linha de visada e em b) com a
estabilizao.
56
a)
b)
100
100
200
200
300
300
400
400
100
200
300
400
500
600
100
200
300
400
500
600
Figura 5.8: a)Rastreio visual de um alvo com estabilizao da LOS b) sem estabilizao
57
Captulo 6
Concluso e Trabalhos Futuros
Os resultados mostram que a ISP projetada serviu para estabilizar a direo da
linha de visada com uma preciso na ordem de miliradianos. A comparao entre os
vdeos capturados, com e sem a estabilizao, evidenciam que o sistema conseguiu manter
um alvo dentro de seu campo de viso, apesar de movimentos da base.
Ainda que os testes tenham sido realizados sem um movimento controlado da plataforma de base, que pudesse simular a dinmica do ROV LUMA, os resultados adquiridos
comprovam inicialmente o funcionamento do mecanismo. O drift causado pelo no uso
dos magnetmetros, em torno de 0,5 /min, lento o suficiente para ser corrigido manualmente por um operador.
Em geral ISPs utilizam sensores para medir a orientao dos eixos do gimbal, encoders por exemplo. Uma das estratgias consideradas, em que o sensor inercial fixado na
plataforma estabilizada, comprovou uma forma de ISP sem a necessidade de tais sensores.
Isto possibilita uma reduo nas dimenses do gimbal. Alm disso, este trabalho abre outros caminhos que podem ser explorados em projetos futuros. Alguns so comentados a
seguir:
Uma anlise simplista da dinmica da ISP foi feita, considerando o sistema como dois
sub-sistemas desacoplados, sem nenhum tipo de efeito giroscpico ou acoplamento
cinemtico. Isto acarretar numa piora de desempenho. Uma anlise levando em
conta esses fatores pode ser desenvolvida.
O mesmo pode ser dito quanto a estrutura do controle. Uma tcnica mais avanada,
58
Referncias Bibliogrficas
[1] Configuring a communications resource. Microsoft. [Online]. Available:
http://msdn.microsoft.com/en-us/library/aa363201(v=vs.85).aspx
[2] K. J. Astrm and R. M. Murray, Feedback Systems - An Introduction for Scientists
and Engineers. Princeton University Press, 2008.
[3] A. Battistel, Rastreamento visual e estabilizao de plataformas inerciais usando
apenas duas medidas de sensores giroscpicos, Masters thesis, COPPE/UFRJ,
2011.
[4] C.-T. Chen, Analog and Digital Control System Design: Transfer-Function, StateSpace, and Algebraic Methods. Oxford University Press, 2006.
[5] W. Commons/Brosen. (2006) Ship movements on the wave. [Online]. Available:
http://commons.wikimedia.org/wiki/File:Brosen_shipsmovemensonthewave.svg
[6] W. Commons/NASA. (1997) Hubble space telescope in space. [Online]. Available:
http://commons.wikimedia.org/wiki/File:Hubble_01.jpg
[7] R. Costa, Estabilizao da linha de visada da cmera pan/tilt do rob submarino
luma, Masters thesis, UFRJ/Escola Politcnica, 2010.
[8] J. M. Hilkert, Inertially stabilized platform technology, IEEE Control Systems Magazine, vol. 28, no. 1, pp. 2646, Fevereiro 2008.
[9] M. K. Masten, Inertially stabilized platforms for optical imaging systems, IEEE
Control Systems Magazine, vol. 28, no. 1, pp. 4764, Fevereiro 2008.
[10] R. McEwen, H. Thomas, D. Weber, and F. Psota, Performance of an auv navigation
system at arctic latitudes, vol. 30, no. 2, pp. 443454, Abril 2005.
[11] 3DM-GX3 Data Communications Protocol, MicroStrain, Inc., Abril 2010.
[12] 3DM-GX3-25 Up and North Compensation, MicroStrain, Inc., 2012.
60
Downey,
61
Apndice A
Folhas de Dados
A.1
62
DC-Micromotors
16 mNm
Graphite Commutation
d max.
006 CR
6
0,40
20,50
81
012 CR
12
1,90
17,00
80
018 CR
18
4,10
18,10
81
024 CR
24
7,10
19,00
81
036 CR
36
15,9
19,40
81
048 CR
48
31,20
17,70
81
Volt
W
%
no
Io
MH
MR
9 000
0,170
87,2
0,98
8 100
0,075
80,0
1,00
8 000
0,048
86,5
0,99
8 500
0,038
85,4
0,99
8 100
0,024
91,4
0,99
8 000
0,017
84,4
0,95
rpm
A
mNm
mNm
Speed constant
Back-EMF constant
Torque constant
Current constant
kn
kE
kM
kI
1 650
0,604
5,77
0,173
713
1,400
13,40
0,075
462
2,160
20,70
0,048
366
2,730
26,10
0,038
231
4,340
41,40
0,024
170
5,870
56,10
0,018
rpm/V
mV/rpm
mNm/A
A/mNm
6n/6M
L
_ max.
103
13,5
6
5,6
160
101
65
6
5,7
140
92,5
150
6
6,2
140
99,5
265
6
5,8
150
88,6
590
6
6,5
140
94,8
1 050
6
6,0
140
rpm/mNm
H
ms
gcm2
.
103rad/s2
Rth 1 / Rth 2
o w1 / o w2
3 / 15
6,5 / 490
K/W
s
30 ... + 100
+ 125
C
C
1
2
3
4
Nominal voltage
Terminal resistance
Output power
Efficiency
5
6
7
8
No-load speed
No-load current (with shaft 3,0 mm)
Stall torque
Friction torque
9
10
11
12
13
14
15
16
17
om
J
18 Thermal resistance
19 Thermal time constant
20 Operating temperature range:
motor
rotor, max. permissible
21 Shaft bearings
22 Shaft load max.:
with shaft diameter
radial at 3 000 rpm (3 mm from bearing)
axial at 3 000 rpm
axial at standstill
23 Shaft play:
radial
axial
24 Housing material
25 Weight
26 Direction of rotation
3,0
20
2
20
mm
N
N
N
0,015
0
mm
mm
6x
0,3 A
M2
-0,006
3 -0,010
2,5 deep
9 -0,05
7 000
16
1,400
21 -0,05
7 000
16
0,950
7 000
16
0,720
10 -0,015
23 -0,1
7 000
16
0,480
rpm
mNm
A
7 000
16
0,350
-0,006
0,5
3 -0,010
0,05 A
0,02
16
17
1,5
6x 60
5,70,4
1
2,2
10 0,3
3,5
12,2 0,4
2,8
7
42
8,8 0,5
2342 S
For notes on technical data and lifetime performance
refer to Technical Information.
Edition 2009 Aug. 11
11,6 0,5
for Faston
connector 2,8 x 0,5
63
A.2
64
Data Sheet
HEDM-55xx/560x HEDS-550x/554x, HEDS-560x/564x
Description
Features
pulse
x Quick and easy assembly
x No signal adjustment required
x External mounting ears available
x Low cost
x Resolutions up to 1024 counts per revolution
x Small size 40C to 100C operating temperature
x TTL compatible
x Single 5 V supply
Applications
The HEDS-5500, 5540, 5600, 5640, and the HEDM-5500,
5540,5600 provide motion detection at a low cost, making
them ideal for high volume applications. Typical applications include printers, plotters, tape drives, positioning
tables, and automatic handlers.
Note: Avago Technologies encoders are not recommended for use in safety critical applications. Eg. ABS braking
systems, power steering, life support systems and critical
care medical equipment. Please contact sales representative if more clarification is needed.
ESD WARNING: NORMAL HANDLING PRECAUTIONS SHOULD BE TAKEN TO AVOID STATIC DISCHARGE.
65
A.3
66
3DM-GX3 -25-OEM
Miniature Attitude Heading Reference System
The 3DM-GX3 -25-OEM is a high-performance, miniature Attitude
Heading Reference System (AHRS), utilizing MEMS sensor
technology. It combines a triaxial accelerometer, triaxial gyro, triaxial
magnetometer, temperature sensors, and an on-board processor
running a sophisticated sensor fusion algorithm to provide static and
dynamic orientation, and inertial measurements. Its form factor is
ideally suited for OEM applications.
System Overview
Easiest to Integrate
Applications
Accurate navigation and orientation under dynamic conditions such as:
Inertial Aiding of GPS
Unmanned Vehicle Navigation
Platform Stabilization, Artificial Horizon
Antenna and Camera Pointing
Health and Usage Monitoring of Vehicles
Reconnaissance, Surveillance, and Target Acquisition
Robotic Control
Personnel Tracking
67
IMU Specifications
Attitude and Heading
Accels
Gyros
Mags
Measurement range
5 g
300/sec
2.5 Gauss
Accelerometer range
5g standard
Non-linearity
0.1 % fs
0.03 % fs
0.4 % fs
Gyroscope range
300/sec standard
0.04 mg
18/hr
Static accuracy
0.002 g
0.25/sec
0.003 Gauss
Dynamic accuracy
2.0 pitch, roll, heading for dynamic (cyclic) test conditions and
for arbitrary angles
0.05 %
0.05 %
0.1 %
Noise density
80 g/Hz
0.03/sec/Hz
100 Gauss/Hz
Alignment error
0.05
0.05
0.05
Repeatability
0.2
225 Hz max
440 Hz max
230 Hz max
Resolution
<0.1
Sampling rate
30 kHz
30 kHz
up to 1000 Hz
Filtering
Options
Output modes
A/D resolution
Interface options
Accelerometer range
1.7 g, 16 g, 50 g
Gyroscope range
General
Baud rate
Power consumption
Connector
Samtec FTSH-105-01-F-D-K
Operating temperature
-40 C to +70 C
Dimensions
38 mm x 24 mm x 12 mm
Weight
11.5 grams
ROHS
compliant
Shock limit
500 g
Software utility
Software development kit (SDK) complete data communications protocol and sample code
68
LORD Corporation
MicroStrain Sensing Systems
ph: 800-449-3878
459 Hurricane Lane,
fax: 802-863-4093
Suite 102
sales@microstrain.com
Williston, VT 05495 USA
www.microstrain.com
Apndice B
Cdigos Fonte
B.1
1
13
15
17
19
21
23
25
27
29
31
33
35
69
37
39
41
43
// Handle de comunicac a o
hCom = CreateFil e ( pcCommPort ,
G E N E R I C _ R E A D | GENERIC_WRITE ,
0,
// Acesso exclusivo
NULL ,
// Atributo padrao de seguridade
OPEN_EXISTING , // must use O P E N _ E X I S T I N G
0,
// not overlapped I / O
NULL ) ; // hTemplate must be NULL for comm devices
45
47
49
51
53
55
57
59
61
63
65
if ( hCom == I N V A L I D _ H A N D L E _ V A L U E )
{
// Verifica se houve erro
printf ( " CreateFil e falhou com o erro % d .\ n " , G e t L a s t E r r o r () ) ;
return (1) ;
}
// Inicializ a estrutura DCB
S e c u r e Z e r o M e m o r y (& dcb , sizeof ( DCB ) ) ;
dcb . DCBlength = sizeof ( DCB ) ;
// Build on the current c o n f i g u r a t i o n by first retrieving all current
// settings .
fSuccess = G e t C o m m S t a t e ( hCom , & dcb ) ;
if (! fSuccess )
{
// Verifica se houve erro
printf ( " G e t C o m m S t a t e falhou com o erro % d .\ n " , G e t L a s t E r r o r () ) ;
return (2) ;
}
67
P r i n t C o m m S t a t e ( dcb ) ;
//
69
71
73
75
77
79
81
// Parametro s de comunicac a o
dcb . BaudRate = 921600;
dcb . ByteSize = 8;
dcb . Parity
= NOPARITY ;
dcb . StopBits = ONESTOPBIT ;
fSuccess = S e t C o m m S t a t e ( hCom ,
if (! fSuccess )
{
// Verifica se houve falha
printf ( " S e t C o m m S t a t e falhou com o erro % d .\ n " , G e t L a s t E r r o r () ) ;
return (3) ;
}
83
85
87
89
91
70
93
P r i n t C o m m S t a t e ( dcb ) ;
//
Output to console
95
99
101
DWORD d w B y t e s T r a n s f e r r e d ;
103
105
107
109
111
113
115
117
119
121
123
125
127
DWORD dwError ,
dwNumBytesWritten;
// Variaveis com os angulos de Roll , Pitch e Yaw
float yaw = 0;
float pitch = 0;
float roll = 0;
// Variaveis com os angulos de Roll , Pitch e Yaw da primeira leitura do sensor
float roll0 , pitch0 , yaw0 ;
t_single s_roll = 0;
t_single s_pitch = 0;
t_single s_yaw = 0;
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
// ///////// SHARED MEMORY - MATLAB //
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
const char
uri []
const t_boolean nonblocki n g
const t_int
send_buffer_size
const t_int
receive_buffer_size
const char *
locale
t_stream client ;
t_error result ;
char message [512];
=
=
=
=
=
129
131
133
/* Define uma handle para o comando Control + C para finalizar a execucao do programa */
signal ( SIGINT , c o n t r o l _ c _ h a n d l e r ) ;
/* Esta funcao tenta a conexao com o server por meio da URI fornecida */
result = s t r e a m _ c o n n e c t ( uri , nonblocking , send_buffer_s i ze , receive_bu ff er _ si z e , &
client ) ;
135
137
139
141
143
145
147
71
{
149
151
153
155
157
159
161
163
165
167
169
171
173
175
177
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
// / / / / / / / / / / / / / / / / / / / / / / LEITURA DO SENSOR INERCIAL / / / / / / / / / / / / / / / / / / / / / / /
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
WriteFile ( hCom ,
// handle
& getEuler ,
// Array que sera enviado
1,
// Bytes que devem ser enviados
& dwNumBytesW ri t te n ,
// Bytes e f e t i v a m e n t e enviados
NULL ) ;
ReadFile ( hCom ,
& SensData ,
19 ,
& dwBytesTra ns fe r re d ,
NULL ) ;
// handle
// Array que sera escrito
// Numero de bytes lidos
// Bytes e f e t i v a m e n t e recebidos
179
185
187
189
181
183
191
193
195
}
197
201
if ( result <= 0)
break ;
72
result = s t r e a m _ f l u s h ( client ) ;
if ( result < 0)
break ;
203
205
}
207
209
211
/*
Verifica se ocorreu algum erro durante a transmiss a o / recepcao de dados .
No caso de erro , exibe a mensagem adequada .
*/
if ( result < 0)
{
m s g _ g e t _ e r r o r _ m e s s a g e A ( locale , result , message , sizeof ( message ) ) ;
printf ( " Erro na comunica ca o com o URI % s . % s \ n " , uri , message ) ;
}
213
215
217
219
}
/*
Se a funcao s t r e a m _ c o n n e c t encontrou um erro , o cliente nao consegue se conectar
com o server . Neste caso , a mensagem de erro eh exibida .
*/
else
{
m s g _ g e t _ e r r o r _ m e s s a g e A ( locale , result , message , sizeof ( message ) ) ;
printf ( " Nao foi possivel conectar com o URI % s . % s \ n " , uri , message ) ;
}
printf ( " Pressione Enter para fechar \ n " ) ;
getchar () ;
221
223
225
227
229
231
233
B.2
gravarvideo = 0;
if gravarvideo
mov (1: frameNumber ) = struct ( cdata ,[] , colormap ,[]) ;
73
end
15
for i = 1: frameNumber
frame_i = read ( video , i ); % matriz com o frame i do video WxHx3
% subtrai do canal vermelho da imagem RGB a imagem convertida
para gray_scale
frameRed = imsubtract( frame_i (: ,: ,1) , rgb2gray ( frame_i ) );
25
30
35
40
end
end
imshow ( rastreio ) ;
45
74