Você está na página 1de 86

ESTABILIZAO INERCIAL DE CMERA PAN-TILT DE UM ROV

Victor Frangipani de Oliveira Lima

Projeto de Graduao apresentado ao Curso de


Engenharia de Controle e Automao da Escola
Politcnica, Universidade Federal do Rio de
Janeiro, como parte dos requisitos necessrios
obteno do ttulo de Engenheiro.
Orientador: Liu Hsu

Rio de Janeiro
Agosto de 2013

Frangipani de Oliveira Lima, Victor


Estabilizao Inercial de Cmera Pan-Tilt de um
ROV/Victor Frangipani de Oliveira Lima.
Janeiro: UFRJ/ Escola Politcnica, 2013.

Rio de

I, 74 p.: il.; 29,7cm.


Orientador: Liu Hsu
Projeto de Graduao UFRJ/ Escola Politcnica/
Curso de Engenharia de Controle e Automao, 2013.
Referncias Bibliogrficas: p. 60 61.
1. Plataformas Inercialmente Estabilizadas.

2.

Estabilizao de Linha de Visada. 3. Sensor Inercial. 4.


Cmera Pan-Tilt. I. Hsu, Liu. II. Universidade Federal
do Rio de Janeiro, Escola Politcnica, Curso de Engenharia
de Controle e Automao. III. Ttulo.

Resumo do Projeto de Graduao apresentado Escola Politcnica/ UFRJ como parte


dos requisitos necessrios para a obteno do grau de Engenheiro de Automao.

Estabilizao Inercial de Cmera Pan-Tilt de um ROV

Victor Frangipani de Oliveira Lima


Agosto/2013

Orientador: Liu Hsu


Curso: Engenharia de Controle e Automao
O rob submarino de operao remota (ROV) LUMA (Light Underwater Mobile Asset)
realiza pesquisas da fauna e da flora marinha na Baa do Almirantado predominantemente
por meio de sistemas de cmeras. A aquisio de imagens de boa qualidade degradada
pelo movimento do veculo, que tambm pode causar a perda do rastreio de um ponto de
interesse. Um mtodo de compensao para este tipo de problema por meio da aplicao
de uma plataforma inercialmente estabilizada, permitindo o controle da direo da linha
de visada de uma cmera, de forma a isolar de movimentos do veculo. Neste trabalho
duas estratgias de controle so discutidas por meio do uso de um mecanismo com dois
graus de liberdade (estrutura Pan-Tilt) e um sensor de atitude e rumo (AHRS). Em uma
dessas estratgias no necessrio o uso de sensores de posio para os eixos dos motores.
Palavras-chave: Plataformas Inercialmente Estabilizadas, Estabilizao de Linha de Visada, Cmera Pan-Tilt, Sensor Inercial.

iv

Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment of


the requirements for the degree of Engineer.

INERTIAL STABILIZATION OF AN ROV PAN-TILT CAMERA

Victor Frangipani de Oliveira Lima


August/2013

Advisor: Liu Hsu


Course: Automation and Control Engineering
The remotely operated submarine robot (ROV) LUMA (Light Underwater Mobile Asset)
research the marine flora and fauna in Admiralty Bay primarily by the use of camera
systems. The acquisition of good quality images is degraded by the movement of the
vehicle, which can also cause loss of tracking a point of interest. A method of compensation
for this kind of problem is through the use of an inertially stabilized platform, allowing
to control the direction of the line of sight of the camera, isolating vehicle motion. In
this work two control strategies are discussed by using a mechanism with two degrees of
freedom (Pan-Tilt) and an attitude heading reference system (AHRS). In one of these
strategies its not necessary to use a motor shaft position sensor.
Keywords: Inertially Stabilized Platforms, Line of Sight Stabilization, Pan-Tilt Camera,
Inertial Sensor.

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Sistemas de Estabilizao Inercial

3 Descrio do Problema e Metodologia Proposta

3.1

3.2

Descrio do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.1.1

Sensor inercial fixado no veculo . . . . . . . . . . . . . . . . . . . .

3.1.2

Sensor inercial fixado na ISP . . . . . . . . . . . . . . . . . . . . . . 11

3.1.3

ISP com dois graus de liberdade . . . . . . . . . . . . . . . . . . . . 11

Metodologia Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1

Sensor inercial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2.2

Motor DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.3

Projeto de um controlador PI . . . . . . . . . . . . . . . . . . . . . 23

4 Desenvolvimento do Sistema Experimental


4.1

26

Comunicao com o Sensor Inercial . . . . . . . . . . . . . . . . . . . . . . 27

vi

4.2

4.1.1

Comunicao serial . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.2

Comunicao por memria compartilhada . . . . . . . . . . . . . . 32

4.1.3

Parmetros de configurao do sensor inercial . . . . . . . . . . . . 35

Controle do Motor DC pela placa Q8 . . . . . . . . . . . . . . . . . . . . . 37


4.2.1

Por meio de um canal analgico . . . . . . . . . . . . . . . . . . . . 38

4.2.2

Por meio de um sinal PWM . . . . . . . . . . . . . . . . . . . . . . 41

4.2.3

Medida da orientao dos motores . . . . . . . . . . . . . . . . . . . 45

5 Resultados

48

5.1

Resultados com base em dados do sensor inercial

. . . . . . . . . . . . . . 48

5.2

Resultados com base em imagens da cmera . . . . . . . . . . . . . . . . . 53

6 Concluso e Trabalhos Futuros

58

Referncias Bibliogrficas

60

A Folhas de Dados

62

A.1 Motor DC: Faulhaber 2342S024CR . . . . . . . . . . . . . . . . . . . . . . 62


A.2 Encoder: Avago HEDM-5500J14 . . . . . . . . . . . . . . . . . . . . . . . . 64
A.3 Sensor Inercial: MicroStrain GX3-25-OEM . . . . . . . . . . . . . . . . . . 66
B Cdigos Fonte

69

B.1 Comunicao entre o Sensor 3DM-GX3-25 e o QUARC . . . . . . . . . . . 69


B.2 Rastreio de Alvo por Cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

vii

Lista de Figuras
1.1

ROV LUMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1

a) Cmera do VANT ScanEagle[14] b) Telescpio espacial Hubble[6] c)

Cmera televisiva inercialmente estabilizada[15] . . . . . . . . . . . . . . .

2.2

ISP com um grau de liberdade . . . . . . . . . . . . . . . . . . . . . . . . .

3.1

Ilustrao do sistema de um grau de liberdade com o sensor inercial fixado


na base do veculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2

Diagrama de blocos do sistema com o sensor inercial fixado no veculo . . .

3.3

Diagrama de blocos do sistema simplificado com o sensor inercial fixado no


veculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.4

Ilustrao do sistema de um grau de liberdade com o sensor inercial fixado


na ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.5

Diagrama de blocos do sistema com o sensor inercial fixado na ISP

. . . . 12

3.6

Diagrama de blocos do sistema simplificado com o sensor inercial fixado na


ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.7

Representao dos seis graus de liberdade do veculo [5] . . . . . . . . . . . 12

3.8

Modelo de uma ISP com dois graus de liberdade em uma estrutura Pan/Tilt 14

3.9

Sistemas de coordenadas utilizado para a ISP com dois graus de liberdade

14

3.10 Sensor MicroStrain 3DM-GX3-25 . . . . . . . . . . . . . . . . . . . . . . . 16


3.11 Sistema de coordenadas NED representado no globo terrestre . . . . . . . . 18
3.12 Representao do Campo Magntico Terrestre . . . . . . . . . . . . . . . . 19
3.13 Motor DC - Faulhaber 2342S024CR sem a caixa de reduo . . . . . . . . . 19

viii

3.14 Circuito eltrico do Motor DC . . . . . . . . . . . . . . . . . . . . . . . . . 20


3.15 Diagrama em blocos do Motor DC . . . . . . . . . . . . . . . . . . . . . . 22

3.16 Ganho dos sistemas 3.28 (a) e 3.27 (b) com = 1/ 2 e n = 31,42rad/s . 25
4.1

Foto do sistema experimental montado em uma base de madeira . . . . . . 27

4.2

Diagrama de blocos do sistema experimental com o sensor inercial fixado


no veculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3

Diagrama de blocos do sistema experimental com o sensor inercial fixado


na ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.4

Diagrama da comunicao do sensor 3DM-GX3-25 com o QUARC

. . . . 29

4.5

Fluxograma do algoritmo de comunicao do sensor 3DM-GX3-25 com o


QUARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.6

Configurao do Visual Studio para a comunicao com o QUARC

. . . . 33

4.7

Configurao do Visual Studio para a comunicao com o QUARC

. . . . 34

4.8

Configurao do Visual Studio para a comunicao com o QUARC

. . . . 34

4.9

Configuraes do bloco de comunicao do Simulink/QUARC . . . . . . . 36

4.10 Bloco de servidor do Simulink/QUARC para a comunicao por memria


compartilhada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.11 Configurao do sensor inercial por meio do software 3DM-GX3 Monitor . 37
4.12 Calibrao do sensor inercial por meio do software 3DM-GX3 Iron Calibration 38
4.13 Placa de controle Q8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.14 Universal Power Module 1503 . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.15 Bloco de sada analgica do Simulink/Quarc . . . . . . . . . . . . . . . . . 40
4.16 Sinal modulado por largura de pulso (PWM) . . . . . . . . . . . . . . . . . 41
4.17 Estrutura de uma Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.18 Foto do circuito de Ponte H utilizado . . . . . . . . . . . . . . . . . . . . . 42
4.19 Configurao uma sada de clock da placa Q8 para um sinal PWM . . . . . 43
4.20 Configurao do sinal de PWM da placa Q8 . . . . . . . . . . . . . . . . . 44
4.21 Diagrama de estados para a decodificao do encoder . . . . . . . . . . . . 45
4.22 Configurao do bloco de leitura de encoders da QUARC Target . . . . . . 47
ix

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

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

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 51

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

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 53

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

5.7

Processamento da imagem para o rastreio de um alvo: a) Imagem original


b) Extrao do Canal Vermelho c) Filtragem mediana d) Converso em
imagem binria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.8

a)Rastreio visual de um alvo com estabilizao da LOS b) sem estabilizao 57

Lista de Tabelas
1.1

Lista de dispositivos Pan/Tilt marinizados . . . . . . . . . . . . . . . . . .

4.1

Estrutura da resposta do sensor 3DM-GX3-25 para uma requisio dos


ngulos de Balano (roll ), Caturro (pitch) e Guinada (yaw )

xi

. . . . . . . . 32

Lista de Abreviaturas
AHRS

Sistema de Referenciamento de Atitude e Rumo (Attitude and Heading Reference System), p. 16

DC
IMU
ISP

Corrente Contnua (Direct Current), p. 3


Sistema de Medio Inercial (Inertial Measurement Unit), p. 16
Plataforma Inercialmente Estabilizada (Inertially Stabilized Platform), p. 2

LOS
MEMS

Linha de Visada (Line of Sight), p. 2


Sistema Microeletromecnico (Microelectromechanical Systems), p.
16

NED
PWM
ROV

Sistema de coordenadas North-East-Down, p. 16


Modulao por largura de pulso (Pulse Width Modulation), p. 25
Veculo de Operao Remota (Remotely Operated Vehicle), p. 1

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

Figura 1.1: ROV LUMA


1

Tabela 1.1: Lista de dispositivos Pan/Tilt marinizados


Modelo
Sidus SS252
Kongsberg OE10-102
Kongsberg OE10-100
Rosys PT-10-FB RS-485
Sidus SS109HT
Novasub P&T-C-01

Velocidade Angular Mx. [graus/s]


35
30
25
20
20
15

Profundidade Mxima [m]


6000
6000
6000
3000
6000
4000

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

estabilizada (ISP, Inertially Stabilized Platform) com o objetivo de manter a orientao


da linha de visada (LOS, Line of Sight) de uma cmera, isto , do vetor determinado por
seu centro de viso, constante em relao a um referencial inercial. Isto permite reduzir
variaes no campo de viso da cmera, de forma que tarefas de pesquisa e rastreio de
um determinado alvo ou regio de interesse sejam facilitadas.
Os trabalhos [7] e [3] propem e desenvolvem, como estratgia para estabilizao
do campo de viso de uma cmera, a aplicao de um mecanismo de dois graus de liberdade, na estrutura Pan/Tilt. Para o caso do ROV LUMA preciso que este aparato
seja marinizado. Posto isso, foi feita uma pesquisa com os dispositivos Pan/Tilt presentes
no mercado que possam operar em condies subaquticas. Um resultado parcial apresentado na tabela 1.1, com os mecanismos de maior velocidade angular encontrados. A
constatao da falta de sistemas que operem em maiores velocidades levam a necessidade
de construir um mecanismo prprio para as condies do ROV LUMA.
Este trabalho procura cobrir os seguintes pontos:
Descrever a tecnologia bsica que compreende sistemas de estabilizao inercial
2

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

geral a tecnologia envolvida em sistemas de estabilizao inercial, apresenta exemplos


de aplicaes, as estruturas e os componentes bsicos que so adotados, bem como a
nomenclatura comumente utilizada.
O terceiro captulo apresenta o princpio terico que ser aplicado neste trabalho.
Isto envolve duas estratgias possveis para a estabilizao inercial, o princpio de funcionamento dos componentes utilizados, basicamente motores de corrente contnua (DC,
Direct Current) e um sensor inercial, e prope um tipo de controle a ser implementado.
O quarto captulo descreve o processo de elaborao do sistema experimental e seus
detalhes tcnicos. relatado como foi feita a integrao entre todos os componentes em
um sistema de controle, a comunicao com o sensor inercial, o sistema de alimentao
dos motores e a leitura de sensores de posio angular dos motores.
O penltimo apresenta os resultados obtidos, a partir de dados do sensor inercial e
de uma cmera que foi estabilizada.
Por ltimo uma concluso feita em cima do que foi desenvolvido, com uma anlise
de trabalhos futuros, o que pode estender e desenvolver o que foi realizado neste.

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)

Figura 2.1: a) Cmera do VANT ScanEagle[14] b) Telescpio espacial Hubble[6] c) Cmera


televisiva inercialmente estabilizada[15]

Figura 2.2: ISP com um grau de liberdade


Nesta configurao o sensor mede a rotao da base, esta compensada por um motor,
que aplica a rotao inversa em sua carga, de forma a mante-la em uma direo constante.
ISPs envolvem basicamente o uso de uma estrutura eletromecnica chamada de
gimbal e de um sistema de medio inercial. O termo gimbal comumente aplicado para
descrever um conjunto de anis concntricos, estruturas que so usadas em giroscpios
mecnicos, por exemplo. Para ISPs a palavra tem um significado mais aberto e designa
qualquer estrutura que permita que a LOS de uma carga seja orientada. Tipicamente so
estruturas com dois ou mais graus de liberdade (DOF, Degrees of Freedom).

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-

o para um grau de liberdade ajuda a entender a natureza do problema. O sistema


representado na figura 3.1, com os seguintes sistemas de coordenadas:
7

L sistema de coordenadas inercial (local level )


b sistemas de coordenadas do veculo (body)
a sistema de coordenadas da cmera
E as seguintes variveis do sistema so definidas:
bL elevao do veculo em relao ao referencial inercial
ab elevao da cmera em relao ao veculo
aL elevao da cmera em relao ao referencial inercial
Temos por objetivo estabilizar a direo da linha de visada da cmera, aL , em um
valor de referncia r :

aL = ab + bL = r

(3.1)

Duas estratgias so definidas, a primeira fixa o sensor inercial no corpo do veculo,


de forma a medir a orientao deste em relao ao referencial inercial, que no caso simplificado apenas o ngulo de elevao bL . O segunda mtodo fixa o sensor inercial na ISP,
ao lado da cmera, possibilitando a medida da orientao da linha de visada da cmera
diretamente. Em ambas o gimbal, constitudo de um motor DC, usado para rotacionar
a cmera.

3.1.1

Sensor inercial fixado no veculo

Nesta configurao o sensor inercial mede a orientao bL . O ngulo ab , controlado


por um motor DC, medido por meio um sensor formado por um conjunto de encoder
e decoder. Para atingir o objetivo, conforme a equao 3.1, devemos controlar o sinal de
sada y(t) = ab (t) para seguir a referncia r(t) = r (t) bL (t). Se trata de um problema
de rastreamento. O sistema est representado em diagrama de blocos na figura 3.2.
Uma outra simplificao pode ser feita considerando sensores ideais, sem dinmica e
atrasos de medida, resultando no sistema da figura 3.3. Em que C(s) e P (s) so a funo
de transferncia do Controlador e da Planta, respectivamente.
8

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)

E a funo de transferncia entre o sinal de referncia e o sinal de erro, E(s) =


R(s) Y (s), dada por:

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

Sensor inercial fixado na ISP

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)

A funo de transferncia entre a sada e o distrbio dada por:


1
Y (s)
=
W (s)
1 + C(s)P (s)

(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

ISP com dois graus de liberdade

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

Figura 3.7: Representao dos seis graus de liberdade do veculo [5]

12

do veculo, de acordo com a figura 3.7:


1 Arfagem (translao paralela ao eixo z, Heave)
2 Deriva (translao paralela ao eixo y, Sway)
3 Avano (translao paralela ao eixo x, Surge)
4 Guinada (rotao em torno do eixo z, Yaw )
5 Caturro (rotao em torno do eixo y, Pitch)
6 Balano (rotao em torno do eixo x, Roll )
Um mecanismo com apenas um grau de liberdade no usado na prtica. Para ser
aplicvel, o gimbal deve possuir dois ou mais graus de liberdade. Uma estrutura do tipo
Pan/Tilt adotada, Fig. 3.8, em que um motor DC no eixo externo compensa rotaes
na guinada do veculo e outro motor DC, no eixo interno, compensa rotaes no caturro.
Quando o sensor inercial fixado na plataforma, a orientao da linha de visada da
cmera diretamente medida. Para o caso em que o sensor mede a orientao do veculo,
como foi visto em [3] e [7], o problema consiste em calcular os ngulos de conteira () e
elevao (), indicados na figura 3.8, que permitam orientar a LOS na direo desejada.
Os sistemas de coordenadas da figura 3.9 so definidos:
L: sistema de coordenadas inercial (ou local level )
b: sistema de coordenadas do veculo
B: sistema de coordenadas do eixo exterior do gimbal
a: sistema de coordenadas da extremidade, onde se localiza a cmera
Rij : Rij SO(3) a orientao do sistema de coordenadas i com respeito ao sistema de
coordenadas j

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

Desta forma, seguindo a representao em termo de ngulos de balano (, roll ),


caturro (, pitch) e guinada (, yaw ), a orientao do veculo em relao ao referencial
inercial L, dado por
RbL = Rz ()Ry ()Rx ()

(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)

Com base em uma orientao da LOS desejada, definida por UL , e da orientao do


veculo, preciso calcular os ngulos de elevao. Isto
T
Rz ()Rx ()ex = RbL
(, , )UL

(3.8)

O lado direita da equao conhecido, calculado a partir da medio do sensor


inercial e da direo desejada. O lado esquerda definido por

cos() cos()

Rz ()Rx ()ex = sin() cos()


sin()

(3.9)

A igualdade permite definir os ngulos de correo de elevao e conteira. Note que


apesar de possibilitar a orientao da linha de visada, este tipo de sistema no compensa
movimentos de translao e rotaes no balano (roll ) do veculo.
Em relao a dinmica, este sistema possui propriedades que no so vistas no
caso planar. Mas se efeitos giroscpicos forem desprezveis, se no houver acoplamento
cinemtico entre os eixos e se estes tiverem sistemas idnticos de servomotores, a simplificao pode ser adotada para um gimbal com mais de um grau de liberdade.[13] Esta

15

Figura 3.10: Sensor MicroStrain 3DM-GX3-25


considerao ser adotada para o projeto do sistema.

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

O sensor MicroStrain 3DM-GX3-25 um sistema de referenciamento de atitude e


rumo (AHRS). O dispositivo constitudo de uma unidade de medio inercial (IMU, Inertial Measurement Unit), sensores de temperatura e um processador embarcado. A IMU
um conjunto de sensores MEMS (Microelectromechanical systems): um acelermetro
triaxial (mede a acelerao linear), um magnetmetro triaxial (mede o campo magntico
local) e um giroscpio triaxial (mede a velocidade angular com relao a um referencial
inercial). Como algumas propriedades dos sensores so alteradas com variaes na temperatura, cinco termmetros so empregados para possibilitar a aplicao de fatores de
correo. A folha de dados com suas especificaes tcnicas est no apndice A.3.

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

Figura 3.11: Sistema de coordenadas NED representado no globo terrestre


de norte e de gravidade. O ganho de compensao pode ser ajustado para definir quo
rpido o sistemas de coordenadas de referncia realinhado com o sistemas de coordenadas
NED. Este parmetro dado em unidade de segundos e representa o tempo que leva para
o sistema de coordenadas se aproximar em torno de 90% dos vetores de norte e gravidade.
[12]
Outro problema decorre do uso de magnetmetros quando o sensor est prximo de
um dos polos magnticos, onde vetor do campo magntico terrestre aproximadamente
perpendicular a superfcie da terra, como representado na figura 3.12. O problema
relatado em [10], em um trabalho que envolveu a navegao de um AUV (Autonomous
Underwater Vehicle) em uma regio rtica, em um local que o campo magntico possua
uma inclinao de 83,5 em relao a superfcie terrestre. No caso da Baa do Almirantado, a inclinao do campo magntico de 55,5 de acordo com o modelo IGRF11
(International Geomagnetic Reference Field - 11). Portanto, para o ROV LUMA, este
problema no precisa ser considerado.
O clculo do norte magntico particularmente sensvel em ambientes fechados, cujo
campo magntico local distorcido por materiais ferromagnticos, como ferro e nquel,
por exemplo. Se esta distoro for esttica possvel calibrar os magnetmetros por meio
18

S
N

Figura 3.12: Representao do Campo Magntico Terrestre


42mm

Figura 3.13: Motor DC - Faulhaber 2342S024CR sem a caixa de reduo


de Soft Iron Calibration, para materiais que distorcem o campo magntico local, e Hard
Iron Calibration, para materiais que so fontes de campo magntico. Tais mtodos no
funcionam para distores que variam com o tempo, como o caso deste trabalho, em que
o sensor se movimenta em relao a motores DC. [12] Nesta ocasio possvel desativar o
magnetmetro e considerar apenas a leitura do giroscpio, cujo desvio no compensado.

3.2.2

Motor DC

O motor DC utilizado, Faulhaber 2342S024CR, constitudo de um estator de m


permanente e de um rotor ligado a um comutador de grafite. O circuito eltrico equivalente
mostrado na figura 3.14. Como o fluxo magntico gerado pelo m permanente, Vf
constante e o motor controlado pela tenso de armadura, u(t). No circuito de armadura,

19

Ra

La

u(t)

Rf
Lf

Veb (t)

Vf

Figura 3.14: Circuito eltrico do Motor DC


Ra e La representam a resistncia e a indutncia medidas nos terminais do rotor.
provado pela lei de Faraday-Neumann-Lenz que a fora contra-eletromotriz gerada
pelo movimento do rotor proporcional a velocidade angular do mesmo, Veb (t) = Ke 1 (t).
Temos ento pela Lei das Malhas de Kirchhoff aplicada ao circuito de armadura:

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:

T1 (t)1 (t) = T2 (t)2 (t)

(3.12)

Sendo T1 (t) e T2 (t) os torques exercidos na entrada e na sada da caixa de reduo.


Das equaes 3.11 e 3.12, temos:
T2 (t) = NT1 (t)
Fazendo o somatrio dos torques exercidos no eixo interno do motor:

20

(3.13)

J1

d1 (t)
= Tm (t) Tv (t) T1 (t)
dt

(3.14)

Sendo que J1 o momento de inrcia do rotor, Jm , adicionado do momento de


inrcia do eixo interno e da engrenagem de entrada da caixa de reduo.
Pela equao da fora de Lorentz aplicada ao motor DC, o torque gerado pelo rotor
proporcional corrente de armadura, Tm = Kt ia (t). O torque gerado pelo atrito viscoso
considerado proporcional velocidade angular do sistema, Tv = F1 1 (t), e T1 o torque
exercido para girar a engrenagem de entrada do conjunto de reduo.

J1

d1 (t)
= Kt ia (t) F1 1 (t) T1 (t)
dt

(3.15)

O torque da sada da caixa de reduo, T2 , pode ser modelado por:

T2 (t) = J2

d2 (t)
+ F2 2 (t) + Tl (t)
dt

(3.16)

Sendo J2 o momento de inrcia das engrenagens de sada da caixa de reduo, F2 o


coeficiente de atrito viscoso e Tl o torque exercito por uma carga.
Juntando as equaes 3.11, 3.13 e 3.16:
T1 (t) =

J2 d1 (t)
F2
Tl (t)
+ 2 1 (t) +
2
N
dt
N
N

(3.17)

Juntando as equaes 3.15 e 3.17, temos:

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)

A fuso das equaes diferenciais 3.10 e 3.18 mostrada, na forma de diagrama de


blocos, na figura 3.15.
Se considerarmos que a dinmica do acionamento eltrico muito mais rpida que

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

Fazendo o mesmo para o torque de carga:

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)

em que Kp o ganho proporcional e Ti o tempo integral.


Se considerarmos o modelo da planta como um ganho seguido de um integrador, o
que foi visto na seo anterior, temos que
P (s) =

23

Km
s

(3.24)

Substituindo 3.23 e 3.24 nas funes de transferncia 3.2 e 3.4, temos


C(s)P (s)
Km Kp s + (Km Kp /Ti )
= 2
1 + C(s)P (s)
s + Km Kp s + (Km Kp /Ti )

(3.25)

E para as funes de transferncia 3.3 e 3.5, temos


1
s2
= 2
1 + C(s)P (s)
s + Km Kp s + (Km Kp /Ti )

(3.26)

Como se trata de um sistema de segunda ordem, a parametrizao da equao


caracterstica com base no fator de amortecimento, , e na frequncia natural do sistema,
n , facilitar na interpretao do problema.
2n s + n2
C(s)P (s)
= 2
1 + C(s)P (s)
s + 2n s + n2

(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,

quando = 1/ 2, n define a largura de banda do sistema, que ser escolhida igual a


5Hz, ou aproximadamente 31,42 rad/s. Com estes parmetros, o grfico do ganho com
relao a frequncia de entrada mostrado na figura 3.16.
Os parmetros de controle podem ser ento definidos:
Kp :=

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

Figura 4.1: Foto do sistema experimental montado em uma base de madeira


O que permite integrar a placa Q8 com modelos do Simulink, gerando um cdigo que
possa ser executado em tempo real no Real-Time Windows Target. O QUARC tambm
possui bibliotecas que possibilitam diversos protocolos de comunicao, o que ser usado
para requisitar dados do sensor inercial, conforme ser visto na seo 4.1.
De forma simplificada o diagrama do sistema experimental est representado nas
figuras 4.2 e 4.3, para as duas estratgias discutidas no captulo anterior. A prxima
seo, 4.1, explicar a comunicao entre o QUARC e o sensor inercial, bem como sua
configurao. Na seo 4.2 a forma como foi feita o controle dos motores DC ser apresentada.

4.1

Comunicao com o Sensor Inercial


O QUARC possibilita a comunicao em diversos protocolos: TCP/IP, UDP, SPI,

Memria Compartilhada, Serial, ARCNET, Pipe e File Protocol. Estes protocolos so


implementados pelo QUARC de maneira unificada, de forma que a comunicao definida
por um URI (Universal Resource Identificador ), de modo a tornar a configurao o mais
simples possvel. Em contrapartida h perda de flexibilidade para fazer operaes de
27

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

Sensor MicrosStrain USB 2.0


3DM-GX3-25

Processo para
Leitura Serial

QUARC

Memria Compartilhada

Figura 4.4: Diagrama da comunicao do sensor 3DM-GX3-25 com o QUARC


baixo nvel com dados recebidos.
No caso preciso processar e verificar a integridade dos dados antes de us-los. Para
tal a comunicao foi feita em duas etapas, como est representado na figura 4.4. Um
processo responsvel pela comunicao serial com o sensor, bem como pela verificao
dos dados. Se estes forem vlidos, so escritos em um endereo da memria RAM compartilhada com um segundo processo, que os insere na malha de controle. A comunicao por
memria compartilhada foi escolhida por ser, geralmente, a mais rpida para transmisso
de dados entre dois processos.
O algoritmo do processo que estabelece a interface entre o sensor e o QUARC obedece a estrutura mostrada no fluxograma 4.5. Aps configuraes de inicializao, a
comunicao via memria compartilhada estabelecida com o sistema desenvolvido no
QUARC. Se houver sucesso o programa entra em um ciclo, que requisita, verifica e transmite os dados do sensor para o QUARC. Em caso de falha no algoritmo que verifica a
integridade dos dados, o ltimo passo no feito e o programa volta para o comeo do
ciclo. Em qualquer outra falha o programa encerrado.

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

Requisita dados do sensor

Se houver falha

Se houver falha
Verifica integridade dos dados

Fim de Execuo

Armazena dados na
memria compartilhada

Figura 4.5: Fluxograma do algoritmo de comunicao do sensor 3DM-GX3-25 com o


QUARC

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

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 ,

// BaudRate ( ignorado para USB )


// Dados com 8 bits
// Sem bit de paridade
// 1 bit de stop
& dcb ) ;

O valor de Baud Rate corresponde ao nmero de smbolos que so transmitidos


por segundo. Isto compreende tanto os bits de controle, quanto aos dados propriamente
ditos. Este valor no considerado para uma interface USB, como o caso. Quando a
comunicao feita pela sada Serial TTL do sensor, h apenas quatro valores possveis
de Baud Rate: 115200, 230400, 460800 e 921600. Este parmetro restringe a frequncia
mxima de sada de dados do sensor, que de 1000 amostras por segundos para o maior
valor de Baud Rate. Em casos de dispositivos mais limitados, como microcontroladores,
o Baud Rate no pode ser escolhido arbitrariamente. Um fator de erro de comunicao,
que depende do dispositivo, deve ser considerado na escolha.
A comunicao se d requisitando um dado especfico. A descrio completa com
todos os comandos e respostas possveis do sensor est em [11]. Aqui apenas os ngulos
de orientao de roll, pitch e yaw so de interesse. Para receber tais dados um byte de
comando deve ser enviado com o valor 0xCE.
154

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

// Define um ponteiro apontado para o CheckSum recebido


unsigned short * imuCheckSu m = ( unsigned short *) revSensDa t a ;
// Subtrai a soma de todos os bytes recebidos ( com excecao dos de CheckSum ) do dado
de CheckSum
for ( int i = 2; i < 19; i ++)
* imuCheckS u m -= revSensDa t a [ i ];

174

176

178

if ( * imuCheckS u m == 0 ) { // Se o CheckSum esta correto


float yaw = *(( float *) ( revSensDa t a + 6) ) ;
float pitch = *(( float *) ( revSensDat a + 10) ) ;
float roll = *(( float *) ( revSensDa t a + 14) ) ;

Os dados ento so transmitidos via memria compartilhada, o que ser descrito a


seguir.

4.1.2

Comunicao por memria compartilhada

O QUARC fornece uma API para estabelecer um canal de comunicao entre um


aplicativo e o cdigo gerado para o modelo do Simulink. Antes preciso configurar a IDE
para utilizar as bibliotecas fornecidas. No caso da IDE Microsoft Visual Studio 2005, nas
32

Figura 4.6: Configurao do Visual Studio para a comunicao com o QUARC


propriedades do projeto preciso adicionar o local das bibliotecas estticas, conforme
visto na figura 4.6, bem como o nome delas, na figura 4.7.
Dois arquivos de cabealho sero utilizados, quanser_messages.h e quanser_stream.h.
O local destes arquivos deve ser incluido no campo mostrado pela figura 4.8.
Os parmetros de configurao da comunicao por meio das bibliotecas do QUARC
so definidas a seguir:
122

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];

=
=
=
=
=

" shmem :// imuData :1 " ; // URI


false ;
8000; // Pilha de
8000; // Pilha de entrada
NULL ;

O endereo URI define o protocolo usado, shmem, e uma identificao, imuData:1,


para estabelecer a comunicao com um servidor. Pilhas de entrada e sada tambm so
definidas, para armazenar os dados recebidos e transmitidos. A conexo feita chamando
a funo stream_connect:
134

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 ) ;

Aps as configuraes de inicializao, quando dados vlidos so recebidos do sensor,


esses so transmitidos para o QUARC :
190

// array com os dados a serem enviados


t_single dataEuler [3] = { roll - roll0 , pitch , yaw - yaw0 };

192

// envia o array dataEuler para a comunicac ao com o Quarc

33

Figura 4.7: Configurao do Visual Studio para a comunicao com o QUARC

Figura 4.8: Configurao do Visual Studio para a comunicao com o QUARC

34

result = s t r e a m _ s e n d _ s i n g l e _ a r r a y ( client , dataEuler , 3) ;


if ( result < 0)
break ; // Se houve erro na transmissao , sai do loop principal

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

Parmetros de configurao do sensor inercial

possvel configurar e calibrar o sensor por meio de comandos, de forma parecido


com que feito para requisitar os ngulos de orientao. A MicroStrain tambm fornece
um software que facilita esse tipo de tarefa, o 3DM-GX3 Monitor. A janela de configurao, figura 4.11, permite modificar parmetros como: taxa de amostragem, taxa de
comunicao, compensao de norte e largura da janela de filtros dos sensores.
Como foi visto no captulo anterior, o magnetmetro particularmente problemtico, o que levou a necessidade de desativ-lo. Desta forma apenas os acelermetros e
giroscpios so usados para o clculo da orientao. Sem um referencial de norte para o
clculo do ngulo de yaw, o erro dos giroscpios so acumulados, o que leva a um drift
em torno de 0,5 /min.
A filtragem digital dos dados dos sensores feita em duas etapas. A primeira
remove rudos de alta frequncia, acima de 30kHz, dos MEMS. A segunda etapa pode
ser configurada de acordo com as necessidades do usurio para remover outros tipos de
distrbios, como por exemplo rudo de fonte de alimentao em cima dos magnetmetros.
Neste trabalho a frequncia de corte foi definida em seu valor mnimo, de 31,25Hz, uma
vez que a dinmica do veculo restrita a uma banda de 5Hz.
Alm disto, a taxa de sada do sensor foi configurada em seu valor mximo, de 1000
amostras por segundo. A comunicao se deu por meio de uma porta USB 2.0, o que
torna o parmetro de Baud Rate irrelevante.
No caso em que os magnetmetros so utilizados e h distrbios no campo magntico
35

Figura 4.9: Configuraes do bloco de comunicao do Simulink/QUARC

36

Figura 4.10: Bloco de servidor do Simulink/QUARC para a comunicao por memria


compartilhada

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

Controle do Motor DC pela placa Q8


A placa Q8, figura 4.13, constituda de 8 canais de sada analgicos, 8 canais de

entrada analgicos, 8 entradas para encoder, 32 pinos digitais de entrada/sada, 2 timers


e 2 sadas PWM.
A alimentao de um motor DC pode ser feita por meio de sinais de sada analgicos
ou sinais PWM. Como estes so sinais de baixa potncia, precisam ser amplificados de
37

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

Por meio de um canal analgico

A placa Q8 possui um conversor digital analgico (DAC) com uma resoluo de 14


bits e a amplitude do sinal de sada pode variar entre 10V , com uma taxa de variao de
2,5V /s. Antes de acionar o motor este sinal passa pelo Universal Power Module 1503,
figura 4.14, que possui um amplificador linear de potncia.
A interface entre o modelo do Simulink e a sada analgica da placa Q8 feita por
meio do bloco HIL Write Analog da biblioteca QUARC Targets. A configurao deste
bloco, figura 4.15, necessita apenas da indicao dos canais utilizados. So 8 canais, com
ndices de 0 a 7. No caso apenas uma, de ndice 3, utilizada. Por segurana, uma
saturao aplicada na entrada deste bloco, de forma a garantir que o sinal de sada
esteja dentro do limite aceito pela placa.

38

entrada

ncoder
Sinai

Figura 4.13: Placa de controle Q8

Tenso de sada
para o motor

Sinal de
controle

Figura 4.14: Universal Power Module 1503

39

Figura 4.15: Bloco de sada analgica do Simulink/Quarc

40

Amplitude

1
L
L

+ TD

Tempo
TL

TD

Figura 4.16: Sinal modulado por largura de pulso (PWM)

4.2.2

Por meio de um sinal PWM

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

Figura 4.17: Estrutura de uma Ponte H

Tenso de sada
para o motor

Sinal de PWM

Tenso de Alimentao
da Ponte H

Figura 4.18: Foto do circuito de Ponte H utilizado

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

Figura 4.20: Configurao do sinal de PWM da placa Q8

44

4.2.3

Medida da orientao dos motores

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

Figura 4.21: Diagrama de estados para a decodificao do encoder


45

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

Figura 4.22: Configurao do bloco de leitura de encoders da QUARC Target

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

Resultados com base em dados do sensor inercial


O primeiro teste foi feito com o controle projetado de forma que a malha fechada

do sistema rejeitasse distrbios de sada com uma frequncia de at 5Hz. A referncia de


orientao para a LOS nula, de forma que o objetivo mante-l constante em seu valor
inicial. Neste primeiro experimento no foi aplicado nenhum movimento na plataforma
de madeira. O erro, bem como do sinal de controle, para os dois eixos so exibidos nas
figuras 5.1 e 5.2.
possvel ver que o motor de base ficou suscetvel a oscilaes de alta frequncia no
48

Erro para estabilizao de pitch

ngulo (graus)

0.1
0.05
0
0.05

Tenso de Entrada [V]

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

Erro para estabilizao de yaw

ngulo (graus)

1
0.5
0
0.5

Tenso de Entrada [V]

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

Erro para estabilizao de pitch

ngulo (graus)

0.15
0.1
0.05
0

Tenso de Entrada [V]

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

Erro para estabilizao de yaw

ngulo (graus)

0.6
0.4
0.2
0

Tenso de Entrada [V]

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

Erro para estabilizao de pitch

ngulo (graus)

1
0.5
0
0.5
1

Tenso de Entrada [V]

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

Resultados com base em imagens da cmera


A anlise do sistema apenas com base nas medidas do sensor inercial no levam

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

Erro para estabilizao de yaw

ngulo (graus)

3
2
1
0
1

Tenso de Entrada [V]

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

Figura 5.7: Processamento da imagem para o rastreio de um alvo: a) Imagem original b)


Extrao do Canal Vermelho c) Filtragem mediana d) Converso em imagem binria
reduzido, como ser visto a seguir.
Rastreio visual
O rastreio foi feito com base na Image Processing Toolbox do Matlab e considerando
um alvo de cor predominante vermelha em um ambiente em que objetos desta cor no
esto presentes, como foi o caso do teste realizado. O cdigo completo do programa est
no apndice B.2, mas pode ser resumido por basicamente trs passos que sero descritos
a seguir.
Primeiramente uma imagem no espao de cor RGB representada por uma matriz
com W H 3 elementos, em que W a largura em pixels e H a altura. A dimenso
restante representa os trs canais de cor RGB: vermelho, verde e azul, respectivamente.

55

O elemento aijk o valor da cor k do pixel localizado na linha i e coluna j. um dado


armazenado em 8 bits, que pode variar de 0, quando a cor k no est presente no pixel,
a 255, quando h intensidade mxima dessa cor no pixel.
A imagem da figura 5.7b), obtida da imagem original em 5.7a), por meio de uma
subtrao entre o canal vermelho da imagem e a imagem original convertida em uma
escala de cinza. A operao de subtrao com imagem no permite valores fora da faixa
[0, 255]. Portanto, valores negativos so truncados em 0 e valores maiores que 255 so
truncados em 255.
1

frameRed = imsubtract ( frame_i (: ,: ,1) , rgb2gray ( frame_i ) ) ;

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

frameRed = medfilt2 ( frameRed ) ;

Em seguida a imagem em escala de cinza convertida para uma imagem binria


com base em um parmetro de limiar. Se na escala de cinza, que vai de 0 a 1, o pixel
possui um valor menor que 0.2, ou seja mais prximo do preto, este substitudo por um
pixel de valor 0, que representa a cor preta. Do contrrio substitudo por um pixel de
valor l, que representa a cor branca. O resultado visto na figura 5.7 d).
1

frameRed = im2bw ( frameRed , 0.2) ;

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

como controle adaptativo, por exemplo, pode ser empregado.


Geralmente ISPs so empregadas como componentes de um sistema maior, auxiliando no rastreio visual de um alvo, por exemplo. Este trabalho no contemplou a
tarefa de rastreio e focou apenas na estabilizao da linha de visada da cmera. Isto
pode ser desenvolvida aplicando algoritmos comumente usados, como lista [9]: contrast edge, contrast centroid, histogram projection, adaptive gate centroid (AGCT),
etc.
Como o sensor inercial foi fixado na ISP, os experimentos realizados no mediram
a orientao da plataforma de teste. Um segundo sensor inercial pode ser usado.
Isto deve ser feito at para obter algum parmetro de comparao para diferentes
controles empregados.
Para cargas de maior dimenso ou peso, como a cmera de alta definio do ROV
LUMA, uma estabilizao indireta, por meio do uso de elementos pticos pode ser
considerada.
O sistema foi desenvolvido sem considerar a aplicao direta ao sistema do ROV
LUMA. De forma que desejvel o desenvolvimento de uma interface entre a ISP e
o PC/104, que compe a eletrnica embarcada do LUMA.
preciso adaptar a ISP para ambientes sub-aquticos, seja por meio de um domo
isolante, ou por meio da marinizao dos motores.
No foi implementado nenhum tipo de filtro parte para eliminar rudos de medida
do sensor inercial. Foi considerado apenas o filtro ajustvel j embutido no sensor.
Seria tambm possvel obter os dados dos sensores (acelermetros, giroscpios e
magnetmetros) em forma bruta e aplicar algum tipo de filtragem tima para a
fuso dos dados.
O controle foi projetado com um modelo contnuo, considerando que a frequncia
de amostragem fosse grande o suficiente. Uma anlise no domnio discreto deve ser
feito para garantir um melhor funcionamento do sistema.
59

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

[13] T. Mitsutomi, Characteristics and stabilization of an inertial platform.

Downey,

Calif.: Autonetics, Div. of North American Aviation, Inc., 1957.


[14] W. C. Navy. (2005) Scaneagle nose camera closeup. [Online]. Available:
http://commons.wikimedia.org/wiki/File:ScanEagle_nose_camera_closeup.jpg
[15] W. C. Wang. (2008) Stabilized camera on beijing olimpics. [Online]. Available:
http://commons.wikimedia.org/wiki/File:Stabilized_camera_on_Beijing_Olimpics.jpg

61

Apndice A
Folhas de Dados
A.1

Motor DC: Faulhaber 2342S024CR

62

DC-Micromotors

16 mNm

Graphite Commutation

For combination with


Gearheads:
22F, 23/1, 26A, 26/1, 22/7, 30/1, 38/3
Encoders:
IE2 16 ... 512, IE3 256, IE3 256 L, 5500, 5540

Series 2342 ... CR


2342 S
UN
R
P2 max.

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

Slope of n-M curve


Rotor inductance
Mechanical time constant
Rotor inertia
Angular acceleration

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

ball bearings, preloaded

24 Housing material
25 Weight
26 Direction of rotation

3,0
20
2
20

mm
N
N
N

0,015
0

mm
mm

steel, black coated


88
clockwise, viewed from the front face

Recommended values - mathematically independent of each other


27 Speed up to
ne max.
7 000
28 Torque up to
Me max.
16
29 Current up to (thermal limits)
Ie max.
2,700

Orientation with respect to motor


terminals not defined

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

Specifications subject to change without notice


www.faulhaber.com

63

A.2

Encoder: Avago HEDM-5500J14

64

HEDM-55xx/560x & HEDS-55xx/56xx


Quick Assembly Two and Three Channel Optical Encoders

Data Sheet
HEDM-55xx/560x HEDS-550x/554x, HEDS-560x/564x

Description

Features

The HEDS-5500/5540, HEDS-5600/5640, HEDM-5500/5540


and HEDM-5600 are high performance, low cost, two
and three channel optical incremental encoders. These
encoders emphasize high reliability, high resolution, and
easy assembly.

x Two channel quadrature output with optional index

Each encoder contains a lensed LED source, an integrated


circuit with detectors and output circuitry, and a codewheel
which rotates between the emitter and detector IC. The
outputs of the HEDS-5500/5600 and HEDM-5500/ 5600
are two square waves in quadrature. The HEDS-5540/5640
and HEDM-5540 also have a third channel index output in
addition to the two channel quadrature. This index output
is a 90 electrical degree, high true index pulse which is
generated once for each full rotation of the codewheel.
The HEDS series utilizes metal codewheels, while the
HEDM series utilizes a film codewheel allowing for resolutions to 1024 CPR.
These encoders may be quickly and easily mounted to a
motor. For larger diameter motors, the HEDM-5600, and
HEDS-5600/5640 feature external mounting ears.
The quadrature signals and the index pulse are accessed
through five 0.025 inch square pins located on 0.1 inch
centers.

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.

Standard resolutions between 96 and 1024 counts per


revolution are presently available. Consult local Avago
sales representatives for other resolutions.

ESD WARNING: NORMAL HANDLING PRECAUTIONS SHOULD BE TAKEN TO AVOID STATIC DISCHARGE.

65

A.3

Sensor Inercial: MicroStrain GX3-25-OEM

66

LORD PRODUCT DATASHEET

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.

Features & Benefits

System Overview

Easiest to Integrate

The 3DM-GX3 -25 OEM offers a range of fully calibrated inertial


measurements including acceleration, angular rate, magnetic field,
deltaTheta and deltaVelocity vectors. It can also output computed
orientation estimates including Euler angles (pitch, roll, and heading
(yaw)), rotation matrix and quaternion. All quantities are fully
temperature compensated and are mathematically aligned to an
orthogonal coordinate system. The angular rate quantities are further
corrected for g-sensitivity and scale factor non-linearity to third order.
The 3DM-GX3 -25 OEM architecture has been carefully designed to
substantially eliminate common sources of error such as hysteresis
induced by temperature changes and sensitivity to supply voltage
variations. Gyro drift is eliminated in AHRS mode by referencing
magnetic North and Earths gravity and compensating for gyro bias.
On-board coning and sculling compensation allows for use of lower
data output rates while maintaining performance of a fast internal
sampling rate.

smallest, lightest industrial OEM AHRS available


simple integration supported by SDK and comprehensive API
Best in Class
precise attitude estimations
high-speed sample rate & flexible data outputs
high performance under vibration
Cost Effective
reduced cost and rapid time to market for customers
applications
aggressive volume discount schedule

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

The 3DM-GX3 -25 OEM is initially sold as a starter kit consisting of


an AHRS module, USB communication and power cable, software CD,
user manual and quick start guide. The circuit board form-factor
provides thru-holes for mounting on larger circuit assemblies and
custom TTL communication and power cables can be user fabricated
or purchased from the factory.

3DM-GX3 -25-OEM Miniature Attitude Heading Reference System


Specifications
AHRS Specifications

IMU Specifications
Attitude and Heading

Accels

Gyros

Mags

Attitude heading range

360 about all 3 axes

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

In-run bias stability

0.04 mg

18/hr

Static accuracy

0.5 pitch, roll, heading typical for static test conditions

Initial bias error

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

Scale factor stability

0.05 %

0.05 %

0.1 %

Noise density

80 g/Hz

0.03/sec/Hz

100 Gauss/Hz

Long term drift

eliminated by complimentary filter architecture

Alignment error

0.05

0.05

0.05

Repeatability

0.2

User adjustable bandwidth

225 Hz max

440 Hz max

230 Hz max

Resolution

<0.1

Sampling rate

30 kHz

30 kHz

7.5 kHz max

Data output rate

up to 1000 Hz

Filtering

sensors sampled at 30 kHz, digitally filtered (user adjustable )


and scaled into physical units; coning and sculling integrals
computed at 1 kHz

Options

Output modes

acceleration, angular rate, and magnetic field


deltaTheta and deltaVelocity, Euler angles, quaternion, rotation
matrix

A/D resolution

16 bits SAR oversampled to 17 bits

Interface options

USB 2.0 / TTL serial (3.3 volts)

Accelerometer range

1.7 g, 16 g, 50 g

Gyroscope range

50/sec, 600/sec, 1200/sec

General

Baud rate

115,200 bps to 921,600 bps

Power supply voltage

3.1 to 5.5 volts

Power consumption

80 mA @ 5 volts with USB

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

CD in starter kit (XP/Vista/Win7 compatible)

Software development kit (SDK) complete data communications protocol and sample code

Copyright 2013 LORD MicroStrain


MicroStrain, FAS-A, 3DM, 3DM-DH, 3DM-GX3 and 3DM-DH3 are trademarks of LORD
MicroStrain
Specifications are subject to change without notice.
Version 8400-0030 rev. 002

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

Comunicao entre o Sensor 3DM-GX3-25 e o QUARC

# include " stdafx . h "


# include < stdio . h >
# include < signal .h >
# include < windows .h >
# include < tchar . h >
// Bibliotec a s de comunicac a o com o QUARC
# include " q u a n s e r _ m e s s a g e s . h "
# include " q u a n s e r _ s t r e a m . h "

static int stop = 0;


11

13

static void c o n t r o l _ c _ h a n d l e r ( int signum ) {


stop = 1;
}

15

17

19

21

23

void P r i n t C o m m S t a t e ( DCB dcb )


{
// Exibe parametro s do DCB
_tprintf ( TEXT ( " \ nBaudRate = %d , ByteSize = %d , Parity = %d , StopBits = % d \ n " ) ,
dcb . BaudRate ,
dcb . ByteSize ,
dcb . Parity ,
dcb . StopBits ) ;
}

25

27

29

31

33

35

int _tmain ( int argc , _TCHAR * argv [])


{
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
// / / / / / / / / / / / / / SERIAL - SENSOR ////////
// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
DCB dcb ;
HANDLE hCom ;
BOOL fSuccess ;
TCHAR * pcCommPor t = TEXT ( " COM8 " ) ; // Porta Serial

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 ) ;

//

Print DCB parameter s

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 ,

// BaudRate ( ignorado para USB )


// Dados com 8 bits
// Sem bit de paridade
// 1 bit de stop
& dcb ) ;

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

// Get the comm config again .


fSuccess = G e t C o m m S t a t e ( hCom , & dcb ) ;
if (! fSuccess )
{
// Verifica se houve falha .
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) ;
}

70

93

P r i n t C o m m S t a t e ( dcb ) ;

//

Output to console

95

_tprintf ( TEXT ( " Portal serial % s r e c o n f i g u r a d a com sucesso .\ n " ) , pcCommPort ) ;


97

99

BYTE SensData [19];


BYTE revSensDat a [19];
BYTE getEuler = 0 xCE ;

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];

=
=
=
=
=

" shmem :// imuData :1 " ; // URI


false ;
8000; // Pilha de
8000; // Pilha de entrada
NULL ;

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

if ( result == 0) /* Se conectou ... */


{
unsigned long count = 0;
t_single value = 0.0;

141

143

145

147

/* Loop principal do programa :


- Leitura do Sensor
- Envia os dados para o Quarc
*/
while (! stop )

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

// Para facilitar na leitura do CheckSum , a ordem dos bytes de SensData eh revertida


em revSensD a ta
for ( int i = 0; i < 19; i ++)
revSensDa t a [ i ] = SensData [18 - i ];
// Define um ponteiro apontado para o CheckSum recebido
unsigned short * imuCheckSu m = ( unsigned short *) revSensDa t a ;
// Subtrai a soma de todos os bytes recebidos ( com excecao dos de CheckSum ) do dado
de CheckSum
for ( int i = 2; i < 19; i ++)
* imuCheckS u m -= revSensDa t a [ i ];
if ( * imuCheckS u m == 0 ) { // Se o CheckSum esta correto
float yaw = *(( float *) ( revSensDa t a + 6) ) ;
float pitch = *(( float *) ( revSensDat a + 10) ) ;
float roll = *(( float *) ( revSensDa t a + 14) ) ;

179

185

if (! count ) // Se for o primeiro dado recebido


{
roll0 = roll ;
pitch0 = pitch ;
yaw0 = yaw ;
}

187

count ++; // Increment a numero de dados recebidos

189

// array com os dados a serem enviados


t_single dataEuler [3] = { roll - roll0 , pitch , yaw - yaw0 };

181

183

191

// envia o array dataEuler para a comunicac ao com o Quarc


result = s t r e a m _ s e n d _ s i n g l e _ a r r a y ( client , dataEuler , 3) ;
if ( result < 0)
break ; // Se houve erro na transmissao , sai do loop principal

193

195

}
197

result = s t r e a m _ r e c e i v e _ s i n g l e ( client , & value ) ;


199

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

/* Ocorreu um erro ou a conexao foi i n t e r r o n p i d a pelo server . Fecha o cliente . */


s t r e a m _ c l o s e ( client ) ;
printf ( " Conexao fechada . Valor : % lg . Numero de itens : % lu \ n " , value , count ) ;

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

Rastreio de Alvo por Cor

%Programa testado no Matlab R2013a com o Image Processing Toolbox


clc ;
clear ;
5

% abre o video desejado


video = VideoReader( sem . mp4 );
frameNumber = video . NumberOfFrames ;
10

gravarvideo = 0;
if gravarvideo
mov (1: frameNumber ) = struct ( cdata ,[] , colormap ,[]) ;

73

end
15

% variavel com a imagem do rastro do alvo


rastreio = zeros ( video . Height , video . Width ) ;
rastreio = im2bw ( rastreio );
20

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

% filtragem mediana em uma matriz de duas dimensoes


frameRed = medfilt2 ( frameRed , [3 3]) ;
% produz uma imagem binaria preta e branca com base em um
limiar
frameRed = im2bw ( frameRed , 0.2) ;

30

% incrementa a imagem de rastro com o novo ponto detectado


rastreio = rastreio + frameRed ;
if gravarvideo

35

% converte a imagem para rgb e adiciona ao frame do video


rastreio_c (: ,: ,1) = rastreio *255; % rastro vermelho
rastreio_c (: ,: ,2) = 0; rastreio_c (: ,: ,3) = 0;
rastreio_c = im2uint8 ( rastreio_c);
mov (i ). cdata = frame_i + rastreio_c;

40

end
end
imshow ( rastreio ) ;
45

% salva o video gravado


if gravarvideo
movie2avi ( mov , com . avi , compression , None , fps , video .
FrameRate );
end

74