localização e navegação entre robôs móveis · resumo esta dissertação aborda os problemas...
TRANSCRIPT
Localização e Navegação entre Robôs Móveis
Miguel Simas da Costa Couto
Dissertação para a obtenção do Grau de Mestre em
Engenharia Mecânica
Júri
Presidente: Prof. João Rogério Caldas Pinto
Orientador: Prof. Carlos Baptista Cardeira
Vogal: Prof. Mário António Ramalho
Maio 2010
Ces politiques ont été inspirées à
tous ces gens par une idéologie qui
consiste à ne plus accorder de valeur
au savoir et qui mêle la volonté de
faire jouer à l’école en priorité
d’autres rôles que l’instruction et la
transmission du savoir, la croyance
imposée à des théories
pédagogiques délirantes, le mépris
des choses simples, le mépris des
apprentissages fondamentaux, le
refus des enseignements construits,
explicites et progressifs, le mépris
des connaissances de base couplé à
l’apprentissage imposé de contenus
fumeux et démesurément
ambitieux, la doctrine de l’élève "au
centre du système" et qui doit
"construire lui-même ses savoirs".
Laurent Lafforgue
Resumo
Esta dissertação aborda os problemas de localização e navegação dum robô móvel diferencial. Para isso
foi actualizada a arquitectura do robô, de modo a que fosse possível utilizar um sistema de localização local
com base em hodometria. Foi também desenvolvido um sistema de localização global com base em visão
para corrigir o sistema local, iGPS (indoor Global Positioning System [Christo et al. 2009]). Para identificar o
robô no espaço de cores Y CbCr utilizaram-se dois alvos e a distância estatística de Mahalanobis. Um filtro
de Kalman (FK) fez o seguimento de posição do robô. Estimaram-se os parâmetros intrínsecos da câmara
[Bouguet 2008]. A correcção da localização do robô foi efectuada por um FK, que combina a informação de
ambos os sistemas de localização. O robô e o iGPS foram integrados num arquitectura orientada a serviços
através do desenvolvimento da interface entre Matlab® e Web Services. Um controlador proporcional integral
e outro não linear com ganhos variantes no tempo foram apresentados como soluções do problema de nave-
gação. Definiram-se três trajectórias para obtenção de resultados de simulação, bem como experimentais,
de modo a validar os metodologias propostas. Resultados experimentais demonstraram que o sistema de
relocalização consegue de facto corrigir o erro de hodometria, enquanto não instabiliza navegação do robô.
De notar que a abordagem inicial era para ser entre robôs, contudo apenas se utilizou um robô móvel.
i
ii
Abstract
This dissertation approaches the localization and navigation problems for a differential mobile robot. Thus, the
robot’s architecture was updated, so that it could use the local localization system based on odometry. It was
also developed a global localization system based on vision in order to correct the local localization system,
iGPS (indoor Global Positioning System [Christo et al. 2009]). To identify the robot in the Y CbCr color space
it was used two targets and the statistical Mahalanobis distance. A Kalman filter (KF) did robot’s position
tracking. Intrinsic camera parameters were obtained [Bouguet 2008]. Robot’s localization was corrected by a
Kalman filter (KF), which combines the information from both localization systems. Robot and iGPS were in-
tegrated in a service oriented architecture through the development of an interface between Matlab®and Web
Services. A proportional integral (PI) and a time-varying non linear controllers were presented as solutions to
the navigation problem. Three trajectories were defined for acquiring simulation and experimental results, in
order to validate the proposed methodologies. Experimental results shows that the relocaliztion system can
indeed correct the odometry error, while not destabilizing the robot’s navigation. Note that the initial approach
was to be between robots, nevertheless it was used only one mobile robot.
iii
iv
Palavras-Chave
• Robôs Móveis
• Localização
• Navegação
• Fusão Sensorial
• Sistema iGPS
• Web Services
v
vi
Keywords
• Mobile Robots
• Localization
• Navigation
• Sensor Fusion
• iGPS System
• Web Services
vii
viii
Agradecimentos
Esta dissertação não seria a mesma sem a presença de algumas pessoas, que aqui se encontram para a
posterioridade.
Gostaria de agradecer ao meu orientador, Prof. Carlos Cardeira por ter lançado um tema tão interessante,
que por si só fez-me ter vontade de abraçar este projecto com muita vontade e dedicação. Também pelas
ideias, críticas e opiniões. Uma palavra para o Prof. Miguel Silva, que acompanhou esta dissertação durante
os seus primeiros seis meses e que muito contribuiu para o seu crescimento.
A todos os que estiveram presentes no ROBÓTICA2009; Carlos Cardeira, Miguel Silva, Camilo e Lucas.
Ao Jorge Buescu, Jacques Fresco e Peter Joseph por alargarem os meus horizontes.
Ao Corvo pelas noitadas de roda do microcontrolador; Paulo e Ana Rita pelo constante apoio; pessoal do
laboratório, cheers!
À Carolina e à Lu.
Aos meus pais, Maria e Luís, por acreditarem e por terem estado sempre do meu lado. Obrigado!
Vocês proporcionaram-me a maior e mais importante bolsa da minha vida. Agora venham outras!
Miguel Couto
ix
x
Índice
Resumo i
Abstract iii
Palavras-Chave v
Keywords vii
Agradecimentos ix
Lista de Tabelas xv
Lista de Figuras xviii
Lista de Algoritmos xix
1 Introdução 1
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Trabalho Relacionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Contribuições Significativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Estrutura da Dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Estado da Arte 5
2.1 Robôs Móveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Minerva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Stanley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 CAMBADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.4 Rasteirinho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Localização de Robôs Móveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Filtros de Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Filtro de Partículas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.3 Ambientes Activos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Navegação de Robôs Móveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.1 Planeamento de Caminhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
xi
2.3.2 Planeamento de Trajectórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3 Controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Detecção e Seguimento de Objectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Detecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2 Seguimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Arquitecturas e Comunicação de Sistemas Robóticos . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.1 Arquitecturas de Sistemas Robóticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.2 Comunicação entre Componentes duma Arquitectura . . . . . . . . . . . . . . . . . . . . 22
2.6 Sistemas em Tempo-Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.1 Plataformas de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Metodologias Propostas 27
3.1 Desenvolvimento do Robô Móvel Rasteirinho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Arquitectura do Sistema de Computação do Robô . . . . . . . . . . . . . . . . . . . . . . 27
3.1.2 Estimação dos Parâmetros dos Actuadores . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.3 Controlador Embebido no Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Localização do Robô Rasteirinho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1 Hodometria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.2 Sistema iGPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.3 Localização Híbrida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Navegação dum Robô Móvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.1 Projecto de Trajectórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2 Controlador para Seguimento de Trajectórias . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4 Comunicação entre Agentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.2 Interface Agentes - Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Implementação e Resultados 45
4.1 Robô Móvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.1 Estimação dos Parâmetros dos Actuadores . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.2 Controlador Embebido no Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Sistema iGPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.1 Identificação das Propriedades dos Alvos . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.2 Seguimento do Robô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.3 Calibração da Câmara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Localização e Navegação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4 Relocalização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.1 Filtro de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.2 Ensaio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.3 Ensaio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
xii
5 Conclusões e Trabalhos Futuros 65
5.1 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Referências 68
A Descrição do Robô Rasteirinho 79
A.1 Configuração da Porta Série do PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.2 Diagrama I/O do Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.3 Modelos dos Motores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
B Modelos Simulink 83
B.1 Robô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
B.2 Sistema iGPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
C Robotica 2009 87
C.1 Detecção de Linha e Passadeira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
C.2 Reconhecimento do Estado do Semáforo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C.3 Detecção e Desvio de Obstáculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C.4 Detecção e Seguimento na Zona de Obras e Túnel . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C.5 Zona de Estacionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
D Microcontrolador 91
D.1 Aquisição de Dados através de PIC (linguagem C) . . . . . . . . . . . . . . . . . . . . . . . . . . 91
D.2 Controlador PI (linguagem C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
xiii
xiv
Lista de Tabelas
2.1 Métodos determinísticos e estatísticos para seguimento de pontos . . . . . . . . . . . . . . . . . 19
4.1 Atrito estático e dinâmico de cada actuador do robô . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Ganhos do controlador PI implementado em Simulink® . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Parâmetros ts , tp e Mp da resposta dos motores (simulação) . . . . . . . . . . . . . . . . . . . . 47
4.4 Ganhos do controlador PI implementado no veículo . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.5 Parâmetros da resposta experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6 Média e covariância dos canais de cor (Cb ,Cr ) dos dois alvos . . . . . . . . . . . . . . . . . . . . 49
4.7 Parâmetros do controlador utilizados nas três trajectórias . . . . . . . . . . . . . . . . . . . . . . 52
A.1 Configuração da porta COM do PC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
xv
xvi
Lista de Figuras
2.1 Quatro robôs móveis desenvolvidos por universidades . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Algoritmo Bug1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Representação do grafo generalizado de Voronoi . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Caminhos não-holonómicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Representação de objectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Paradigma sentir-planear-actuar (SPA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 Arquitectura com base em comportamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Ciclo acção-percepção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 Plataformas Xenomai e RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.10 Robô móvel CyCab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.11 Robô móvel Robchair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 Arquitectura de computação do robô Rasteirinho . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Diagrama de blocos do anel de controlo implementado no microcontrolador . . . . . . . . . . . 30
3.3 Referenciais global (Ox y) e móvel (P xr yr ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Representação do Sistema iGPS e do robô móvel Rasteirinho com os respectivos alvos . . . . 33
3.5 Representação do modelo duma câmara tipo pinhole simplificado . . . . . . . . . . . . . . . . . 36
3.6 Erros de seguimento no referencial do robô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.7 Diagrama representativo da relação Cliente/Serviço no contexto de Web Services . . . . . . . 43
3.8 Arquitectura de comunicação entre agentes: iGPS e robô Rasteirinho . . . . . . . . . . . . . . . 43
3.9 Representação da interface Agentes -Web Services . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1 Resultados da identificação dos motores do robô . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Resposta dos dois motores e acção de controlo com controlador projectado (simulação) . . . . 47
4.3 Resposta dos motores do robô a referência de 5 rad/s . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4 Caminho percorrido pelo robô com referência de 5 rad/s . . . . . . . . . . . . . . . . . . . . . . . 48
4.5 Média e distância de Mahalanobis de ambas as cores . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6 Imagem adquirida pelo sistema iGPS com identificação dos dois alvos do robô . . . . . . . . . 49
4.7 Duas das vinte imagens que serviram para calibrar a câmara . . . . . . . . . . . . . . . . . . . . 50
4.8 Erro de projecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.9 Erros total, radial e tangencial da câmara, estimados experimentalmente . . . . . . . . . . . . . 51
xvii
4.10 Correcção da orientação do robô. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.11 Resultados experimentais trajectória circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.12 Resultados de simulação para trajectória circular . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.13 Resultados experimentais trajectória sinusoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.14 Resultados de simulação para sinusóide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.15 Resultados experimentais trajectória oito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.16 Resultados de simulação para oito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.17 Relocalização do robô: combinação da informação através de filtro de Kalman . . . . . . . . . . 61
4.18 Resultados experimentais trajectória oito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.19 Resultados experimentais trajectória oito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
A.1 Diagrama I/O do microcontrolador PIC 16F876A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.2 Diagrama de Bode dos modelos identificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.3 Pólos da função de transferência dos motores DC. . . . . . . . . . . . . . . . . . . . . . . . . . . 81
B.1 Modelo Simulink® para seguimento de trajectórias (simulação). . . . . . . . . . . . . . . . . . . . 83
B.2 Modelo Simulink® para seguimento de trajectórias (experimental). . . . . . . . . . . . . . . . . . 84
B.3 Modelo Simulink® do sistema iGPS (experimental). . . . . . . . . . . . . . . . . . . . . . . . . . . 85
C.1 Zonas de interesse da imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
C.2 Filtro para reconhecer cores do semáforo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C.3 Diagrama de blocos construído em Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
xviii
Lista de Algoritmos
3.1 Algoritmo embebido no microcontrolador para comunicação bidireccional . . . . . . . . . . . . . 28
3.2 Algoritmo embebido no microcontrolador para aquisição de dados . . . . . . . . . . . . . . . . . . 29
3.3 Algoritmo embebido no microcontrolador para controlo do robô . . . . . . . . . . . . . . . . . . . . 30
3.4 Algoritmo de visão para detecção de alvos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Algoritmo de relocalização do robô com filtro de Kalman . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1 Algoritmo para corrigir orientação do robô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
xix
xx
Notação
A seguinte notação é utilizada ao longo desta dissertação.
Acrónimos
ARX - Autoregressive Exogenous
CAMBADA - Cooperative Autonomous Mobile Robots with Advanced Distributed Architecture
CMOS - Complementary Metal-Oxide-Semiconductor
COM - Component Object Model
DC - Direct Current
EKF - Extended Kalman Filter
EST - Expansive-Spaces Tree
FIR - Finite Impluse Response
FK - Filtro de Kalman
GPS - Global Positioning System
HTTP - HyperText Transfer Protocol
iGPS - indoor Global Positioning System
IMU - Inertial Measurement System
ICD - In-Circuit Debugger
IST - Instituto Superior Técnico
LCAR - Laboratório de Controlo e Automação
MLS - Medium Size League
NASA - National Aeronautics and Space Administration
OLE - Object Linking and Embedding
xxi
PI - Proporcional Integral
PIC - Programmable Intelligent Computer
PRM - Probabilistic Roadmaps
PWM - Pulse-Width Modulation
RPROP - Resilient backPROPagation
RRT - Rapidly-exploring Random Tree
RTAI - Real Time Application Interface
SIFT - Scale Invariant Feature Transform
SOA - Service Oriented Architecture
SOAP - Simple Object Access Protocol
WSDL - Web Service Description Language
WTEC - World Technology Evaluation Center
UDDI - Universal Description, Discovery and integration
WS - Web Services
XML - eXtensible Markup Language
xxii
Capítulo 1
Introdução
1.1 Motivação
Robótica móvel pode ser considerada uma área de muito interesse, onde há uma grande vontade por parte
da comunidade científica de evoluir o seu estado da arte. Por outro lado, o seu carácter interdisciplinar e
respectiva complexidade dos problemas existentes, faz com que dependa da evolução, tanto de ferramentas
matemáticas, como de sensores e actuadores ou dos próprios materiais, o que dificulta o seu avanço.
Os robôs móveis têm capacidades únicas para realizar tarefas que podem ser automatizadas, libertando
o ser humano para outras actividades mais criativas. Existem diversas tarefas hoje-em-dia já automatizadas,
como por exemplo, mapeamento e monitorização da vasta superfície coberta pelos oceanos, agricultura em
larga escala, monitorização do ambiente e indústria. Por outro, existem tarefas que são mesmo impossíveis
de realizar por seres humanos, como por exemplo, exploração e mapeamento de locais contaminados por
resíduos nucleares ou biológicos, de forma a avaliar os estragos, e a exploração espacial a corpos celestes
distantes. Existem outros campos de aplicação como, assistência pessoal, reabilitação e entretenimento.
Para este tipo de aplicações ser possível, os robôs têm de estar equipados com diversos tipos de sen-
sores, de forma a terem uma percepção do ambiente ao seu redor (e.g., sensores de força, sensores inerciais,
GPS, hodometria, sensores de distância ou visão). A sua movimentação pode ser feita quer por rodas ou
lagartas para robôs terrestres, quer por hélices ou asas para robôs aéreos, e finalmente, quer por superfícies
de controlo ou hélices para robôs aquáticos.
Quer seja na terra, no ar ou na água, dois problemas fundamentais coexistem: localização e navegação.
Estes são dois problemas cruciais para um sistema robótico poder interagir com o mundo físico de uma
forma correcta. Esta dissertação propõe a aplicação diversos métodos de modo a resolver o problema de
localização e navegação do robô móvel diferencial, Rasteirinho, num recinto fechado. Também é apresentada
a integração do robô e do sistema iGPS (indoor Global Positioning System) numa arquitectura SOA (Service
Oriented Architecture) através de WS (Web Services ).
1
1.2 Trabalho Relacionado
Esta dissertação foi influenciada pela contribuição de diversas publicações científicas (artigos, dissertações,
livros, relatórios técnicos, etc), que revelaram ser uma mais-valia para o seu desenvolvimento. Nesta secção
é feita uma selecção dos trabalhos mais relevantes, assim como uma breve descrição.
De acordo com Borenstein, Everett, Feng & Wehe [1997] não existe uma solução verdadeiramente ele-
gante para o problema de localização de um robô móvel. Este problema encontra-se directamente associado
ao tipo de sensores utilizados, que podem ser agrupados de acordo com o tipo de medição: relativa e abso-
luta. A hodometria é o método relativo mais utilizado por ser simples e eficaz; porém com o tempo acumula
erros que são impossíveis de rectificar por si só. Assim, Christo et al. [2009] propõem um sistema de local-
ização absoluto, com base em visão (sistema iGPS), capaz de corrigir o sistema de localização relativo, de
modo a relocalizar o robô. Este propõe um método robusto para fazer a identificação com base na distância
de Mahalanobis.
Segundo uma pesquisa elaborada por Yilmaz, Javed & Shah [2006], existem diversas formas para car-
acterizar um objecto numa imagem (e.g., fluxo óptico, cantos, textura), sendo que a mais utilizada é a cor.
Para identificar as características da pele através da cor, Phung, Bouzerdoum & Chai [2002] utilizaram um
conjunto de imagens com amostras de pele para estimar os padrões da cor, necessários para determinar a
distância de Mahalanobis (média e covariância do espaço Y CbCr ).
O seguimento de referências é um campo com diversas aplicações, como análise do movimento humano
para diagnósticos médicos, terapia médica ou desporto, sistemas de vigilância, análise de meteorologia,
deformação de objectos, monitorização de tráfego, etc. Muitas aplicações possíveis necessitam de fazer o
seguimento de diversos objectos simultaneamente e envolvem problemas complexos como a oclusão. O
filtro de Kalman (FK) é o estimador de estados mais utilizado para fazer seguimento de referências. Pinho,
Manuel, Tavares & Correia [2007] utilizam um FK para fazer o seguimento de pessoas, bem como métodos
de correspondência e de optimização para melhorar o desempenho computacional.
A integração de novos agentes (e.g., robôs móveis, sistema iGPS) num ambiente interdisciplinar pode
ser uma tarefa árdua. Desta forma, Christo & Cardeira [2007b] propõem uma arquitectura SOA com base em
Web Services (WS). No artigo [Christo et al. 2009] é expandida a arquitectura para diversos sistemas iGPS.
Para a navegação dum robô móvel é necessário um controlador que seja capaz de fazer o seguimento
de trajectórias ou simplesmente fazer a estabilização em torno duma postura desejada. Três estratégias de
controlo foram testadas experimentalmente por De Luca, Oriolo & Vendittelli [2001] num robô móvel diferen-
cial, apenas com base na sua cinemática. Geralmente estes robôs têm constrangimentos não-holonómicos,
i.e., limitações de movimento devido ao seu modelo cinemático. No caso de robôs móveis diferenciais, a
limitação encontra-se na velocidade nula do robô na direcção perpendicular ao seu movimento.
2
1.3 Contribuições Significativas
Com o objectivo de fazer a localização do robô móvel diferencial, Rasteirinho, e sua respectiva navegação
num recinto fechado, foram realizadas diversas tarefas dignas de registo. No que respeita ao desenvolvi-
mento do robô móvel,
1. Actualização da arquitectura de computação do robô com protocolo de comunicação bidirectional. Este
protocolo permite fechar o anel entre os dois sensores (encoders) e os dois actuadores (motores DC);
2. Utilização do microcontrolador como placa de aquisição de dados para identificar modelos dinâmicos
dos motores;
3. Projecto de controladores a partir dos modelos identificados;
4. Implementação dum controlador proporcional integral (PI) no microcontrolador, de modo a atenuar os
efeitos da dinâmica do robô;
5. Implementação de controlador não linear, com acção de controlo variante no tempo, para seguimento
de trajectórias;
6. Integração do robô na arquitectura SOA.
No que diz respeito ao sistema iGPS,
1. Identificação e aplicação da distância de Mahalanobis para identificar robô, na presença de ruído do
sensor de visão e condições de iluminação não ideais;
2. Conversão das distâncias em píxeis para o sistema métrico através da calibração da câmara, funda-
mental para robô poder comparar as medições dos dois sistemas de localização;
3. Aplicação de filtro de Kalman para seguimento do robô;
4. Integração do sistema iGPS na arquitectura SOA.
A correcção da posição do robô é feita pela combinação da informação proveniente, tanto do robô como
do sistema iGPS, através dum filtro de Kalman. Para possibilitar a comunicação de ambos os agentes no
ambiente foi implementada uma interface entre o Matlab® e os WS. Este passo foi decisivo para a integração
do robô e do iGPS na arquitectura orientada a serviços (SOA) Christo et al. [2009].
Finalmente, é de destacar a participação na competição ROBÓTICA2009, categoria de Condução Autónoma,
juntamente com Lucas [2009]. Como o próprio nome indica é uma prova complexa, onde é imperativo al-
guma experiência para se conseguir uma boa classificação. Apesar do resultado de meia tabela (sexto lugar),
foram implementados novos algoritmos e novas metodologias para abordar o problema, fazendo com que no
seu melhor desempenho, o robô conseguisse percorrer a pista desviando-se de obstáculos com o auxílio
de sensores infravermelhos. De notar que a abordagem inicial era para ser entre robôs, contudo apenas se
utilizou um robô móvel.
3
1.4 Estrutura da Dissertação
Este documento encontra-se dividido em duas partes principais; uma primeira, onde é descrito todo o tra-
balho de pesquisa bibliográfica; e uma segunda, onde os métodos são descritos e aplicados. Assim, segue-
se uma breve passagem por todos os capítulos.
Capítulo 2. É feita uma descrição do estado da arte na localização e navegação de robôs móveis, bem como
do seguimento de objectos, arquitecturas de sistemas robóticos e sistemas em tempo-real.
Capítulo 3. São propostas metodologias para a resolução dos problemas de localização e navegação, e
respectiva integração dos agentes na arquitectura SOA.
Capítulo 4. São apresentados alguns pormenores importantes de implementação dos métodos propostos,
e principalmente, os resultados de simulação e experimentais obtidos.
Capítulo 5. São apresentadas as conclusões e sugestões para trabalhos futuros.
Por fim, encontram-se em anexo alguns detalhes que completam esta dissertação.
Anexo A. Descrição do Robô Rasteirinho.
Anexo B. Modelos Simulink®.
Anexo C. Robótica 2009.
Anexo D. Microcontrolador.
4
Capítulo 2
Estado da Arte
Neste capítulo é apresentado o estado da arte no que diz respeito às principais áreas científicas abor-
dadas neste trabalho. A primeira secção descreve alguns robôs móveis recentemente desenvolvidos por
diversas universidades para aplicações, tanto no domínio da prestação de serviços como no domínio das
competições.Na secção 2.2 é discutido o problema de localização de robôs móveis. Na secção 2.3 são abor-
dados os problemas de planeamento de caminhos, assim como o de geração de trajectórias e respectivo
controlo que possibilitam a navegação de robôs móveis. Na secção 2.4 são descritos algoritmos de detecção
e seguimento de objectos. Na secção 2.5 são apresentadas diversas arquitecturas e protocolos utilizados
em sistemas robóticos. Por último, uma breve discussão de sistemas em tempo-real é feita na secção 2.6.
2.1 Robôs Móveis
Em 2006 um painel de especialistas convidados pela WTEC, elaborou uma avaliação sobre a investigação
e desenvolvimento no campo da robótica [Bekey, Ambrose, Kumar, Sanderson, Wilcox & Zheng 2006]. Este
painel concluiu que, actualmente esta área do conhecimento encontra-se muito activa em todo o mundo,
sendo que a evolução tecnológica dos veículos robóticos aponta para que estes sejam cada vez mais
autónomos. Deste modo, de seguida serão descritos alguns dos projectos já desenvolvidos por algumas
universidades.
2.1.1 Minerva
As universidades de Carnegie Mellon, Pitsburgh e Bohn desenvolveram em conjunto um veículo descrito em
[Thrun et al. 1999] de nome Minerva, que teve como objectivo servir de guia turístico no Museu Nacional
da História Americana. É completamente autónomo e opera em ambientes dinâmicos e povoados, devido
a métodos probabilísticos aliados aos diversos sensores com que se encontra equipado: encoders, feixes
laser, visão esteroscópica e uma câmara apontada para o tecto.
5
(a) Robô Minerva [Thrun et al. 1999]. (b) Robô Stanley [Thrun et al. 2006].
(c) Equipa de futebol robótico CAMBADA [Azevedo et al. 2009]. (d) Robô Rasteirinho [Lucas 2009].
Figura 2.1: Quatro robôs móveis desenvolvidos por universidades.
2.1.2 Stanley
O robô Stanley, descrito em [Thrun et al. 2006], foi desenvolvido por uma equipa de investigadores de em-
presas como a Intel ou a Volkswagen sob liderança da Universidade de Stanford, com o objectivo de avançar
o estado da arte na área da condução autónoma. O robô tem como base um Volkswagen Touareg R5TDI
(2004) com uma plataforma de computação constituída por seis processadores e um conjunto de actuadores
e sensores. O objectivo deste projecto foi o de construir um sistema extremamente seguro e com boa pre-
cisão, capaz de conduzir a velocidades relativamente elevadas num ambiente todo-o-terreno, diversificado
e não estruturado. Estes requisitos levaram a novos avanços no campo da navegação autónoma; métodos
foram desenvolvidos e os já existentes foram extendidos nas áreas de percepção de longo alcance do ter-
reno, evitar colisões em tempo real e controlo do veículo em terreno escorregadio e acidentado. De notar
que este veículo venceu a competição DARPA Grand Challenge 2005, que resumidamente consistiu em per-
correr cerca de 280 km no deserto em menos de 10 horas, estando o percurso definido por um corredor em
coordenadas GPS.
6
2.1.3 CAMBADA
A equipa CAMBADA, descrita em [Azevedo et al. 2009], formada por investigadores e alunos de mestrado
da Universidade de Aveiro, desenvolveu um conjunto de robôs holonómicos para participar em torneios de
futebol robótico nacionais e internacionais na categoria MSL. Já ganharam diversas competições, tendo a
sua consagração mais importante ocorrido na edição de 2008 da ROBOCUP, em que se sagraram campeões
mundiais. Esta equipa está constantemente a evoluir o estado da arte na coordenação e controlo de alto nível
dos agentes, integração e partilha de informação, bem como da localização dos seus agentes no terreno de
jogo; feita sem o auxílio de sensores externos aos robôs.
2.1.4 Rasteirinho
Carvalho [2008] utilizou na sua dissertação de mestrado um veículo de nome Rasteirinho com o objectivo de
aplicar algoritmos para a manutenção de formação com base nas técnicas de visual servoing IBVS e PBVS.
O mesmo veículo foi utilizado na dissertação de Lucas [2009] para a construção de mapas e respectiva
localização com base em mosaicos visuais. Este é um veículo do tipo uniciclo, apresentado por Cardeira &
Sá da Costa [2005], que tem vindo a servir de apoio a algumas disciplinas na área de controlo de sistemas
do IST, e que já conta com diversas participações bem-sucedidas no festival nacional de robótica.
De seguida é apresentado o problema de localização de robôs móveis, assim como diversas soluções
existentes na literatura.
2.2 Localização de Robôs Móveis
Segundo Thrun et al. [2000] a literatura distingue três tipos de problemas de localização, em ordem cres-
cente de dificuldade:
Seguimento de posição. Neste problema a postura do robô é conhecida, logo apenas é necessário com-
pensar pequenos erros de hodometria à medida que o robô se desloca. Tipicamente a incerteza no
seguimento da posição é limitada fazendo com que estimadores de estado unimodais sejam aplicáveis.
Localização global. Quando a postura inicial é desconhecida então o robô, para se localizar do nada, tem
de ser capaz de lidar com ambiguidades e hipóteses múltiplas durante o processo de localização.
Rapto de robô. Esta é uma variante do problema de localização global em que um robô bem localizado
é repentinamente deslocado para localização aleatória - rapto. É um problema mais difícil que o an-
terior visto que o robô pode acreditar, falsamente, que ainda se encontra no local anterior ao rapto.
Este problema simula falhas catastróficas do sistema de localização e testa a habilidade do robô para
recuperar destas falhas.
Cox [1991] refere que a interpretação da informação sensorial para localizar um robô no seu ambiente
é a principal questão para dotar um robô móvel com capacidades autónomas. A verdade é que não existe
uma solução verdadeiramente elegante para este problema segundo Borenstein et al. [1997]. De acordo
com estes autores, a localização pode ser feita com base em dois tipos de medições: medições relativas
7
e absolutas. Os sensores responsáveis por efectuar medições relativas (e.g. encoders, giroscópios, acel-
erómetros) têm uma boa precisão a curto prazo e um custo baixo, porém o método subjacente ao cálculo
da posição baseia-se na integração ao longo do tempo do movimento do robô, que inevitavelmente, leva à
acumulação ilimitada de erros de orientação e de posição. Por outro lado, os sensores responsáveis por
efectuar medições absolutas (e.g. bússola magnética, ultra-sons, GPS) permitem estimar a posição global
com um erro limitado, embora em determinadas condições possam ter erros de precisão consideráveis, [e.g.
Byrne, Klarer & Pletta 1992, Byrne 1993]. Deste modo, Borenstein et al. [1997] concluem que, de acordo
com as características do meio envolvente, a localização de robôs móveis deve ser feita por intermédio de
sensores relativos e absolutos em conjunto, e que o tempo de amostragem dos sensores relativos deve ser
superior ao tempo de amostragem dos sensores absolutos para que haja uma correcção na localização local
por parte do sistema de localização global.
2.2.1 Filtros de Bayes
A necessidade de recorrer a mais do que um sensor para determinar a localização de um robô levanta uma
nova questão - como integrar a informação do conjunto de modo a que seja uma mais valia para a resolu-
ção do problema? Este não é um exercício trivial e portanto são necessários mecanismos complexos, que
actualmente se baseiam em descrições probabilísticas das medições e dos processos, e consequentemente
na regra de Bayes (equação 2.1) para conjugar a informação proveniente dos sensores [Durrant-Whyte &
Henderson 2008]. Um filtro de Bayes estima de modo probabilístico o estado de um sistema dinâmico através
de observações contaminadas com ruído. A incerteza sobre a localização de um robô é representada pela
crença Bel(xt ), que é uma distribuição probabilística sobre o estado xt (equação 2.2). De um modo geral, a
crença responde à questão, "Qual é a probabilidade de um robô estar no local x, se a história das medições
dos sensores é z1, z2, . . . , zt ?" para todos os locais possíveis x. Esta abordagem faz com que a complexidade
do cálculo das densidades posteriores cresça exponencialmente, pois a quantidade de informação sensorial
disponível aumenta ao longo do tempo. Para resolver este problema os filtros de Bayes consideram que o
modelo dinâmico é Markoviano, i.e., a variável de estado actual xt possui toda a informação relevante.
P (x | z) =P (z | x)P (x)
P (z)(2.1)
Bel(xt ) = p(xt | z1, z2, . . . , zt ) (2.2)
Deste modo, os filtros de Bayes representam um conceito abstrato, na medida em que apenas providenciam
uma plataforma probabilística para a estimação recursiva dum estado. A sua implementação apenas é
possível especificando os modelos perceptual, p(zt | xt ) e dinâmico, p(xt | xt−1), assim como a forma de
representar a crença numa determinada localização (estado), Bel(xt ).
Segundo Fox et al. [2003] as diferentes implementações existentes diferem principalmente na forma
como é representada a função densidade de probabilidade sobre o estado xt . Por exemplo, o filtro de
Kalman [1960] é a variante do filtro de Bayes mais utilizada, em que a aproximação da crença é determinada
pelo seu primeiro e segundo momento, ou seja, uma curva Gaussiana unimodal. Os filtros de Kalman são
estimadores óptimos nas condições de a incerteza inicial ser Gaussiana e de o modelo das observações
8
e da dinâmica do sistema serem funções lineares do estado. Mas por a maioria dos sistemas não ser
estritamente linear, é frequente a utilização do filtro de Kalman extendido (EKF), que é responsável por
linearizar o sistema através de expansões de primeira ordem da série de Taylor. Este filtro foi utilizado pela
primeira vez para demonstrar que era possível combinar as medições ópticas das estrelas e os dados do
movimento da nave espacial Apollo para que esta fosse colocada em órbita da Lua [McGee & Schmidt 1985].
Hoje em dia são diversas as aplicações deste filtro na localização de robôs móveis [e.g. Barshan & Durrant-
Whyte 1995, Bonnifait 1996, Roumeliotis & Bekey 1997, Sukkarieh, Nebot & Durrant-Whyte 1999, Panzieri,
Pascucci & Uliv 2001, Sousa, Costa, Moreira & Carvalho 2005].
Uma forma de ultrapassar a limitação devida à representação da distribuição unimodal por parte do filtro
de Kalman é através da utilização de um método de seguimento multi-hipotético (MHT). Este método combina
um conjunto de Gaussianas para formar a crença, equação 2.3.
Bel(xt ) =∑
i
w (i)t N (xt ;µ(i)
t ,σ(i)t ) (2.3)
Cada filtro de Kalman é utilizado para fazer o seguimento de cada hipótese, sendo que o seu peso associado,
w (i)t , é determinado com base na qualidade da reprodução das medições previstas pelas respectivas hipóte-
ses. Este filtro necessita de heurísticas sofisticadas para resolver o problema de associação de informação
e decidir quando adicionar ou descartar uma hipótese [e.g. Cox 1993, Cox & Hingorani 1996].
Cox [1991] fez a correspondência entre os dados provenientes de um sensor de distância óptico e o mapa
construído previamente do espaço interior para corrigir a localização estimada pela integração do movimento
do robô (hodometria). Por outro lado, é possível utilizar referências visuais conhecidas a priori para resolver
o problema da localização global [e.g. Atiya & Hager 1993, Bouguet & Perona 1995]. Jin, Lee & Tso [2004]
propõem a fusão de informação visual no espaço e no tempo com apenas uma câmara. Assim conseguem
estimar a localização do robô, como se este possuísse visão estereoscópica, com apenas o conhecimento
da distância percorrida pelo robô entre duas imagens consecutivas.
A utilização de mapas para representação do ambiente é muito comum, o que faz com que hajam alguns
métodos de localização que tenham em conta o tipo de mapa utilizado. Fox et al. [2003] apresenta duas
abordagens:
Com base em grelhas. São capazes de superar as desvantagens da utilização de filtros de Kalman, através
da representação de crenças discretas em secções constantes. As equações de actualização de abor-
dagens discretas são idênticas às actualizações do filtro de Bayes, mas com a substituição do integral
por um somatório. Para estimar a localização dum robô móvel em espaços interiores, estes filtros
dividem o ambiente em pequenos elementos, com tamanhos típicos entre 10 cm e 1 m, e cada um
contém a crença de que o alvo se encontra nele. Uma das vantagens principais deste tipo de aborda-
gens é que conseguem representar distribuições arbitrárias ao longo do espaço de estados discreto.
A comunidade científica de localização de robôs móveis demonstrou que aproximações métricas pro-
videnciam estimações da posição precisas ao mesmo tempo que oferecem boa robustez ao ruído dos
sensores. Como desvantagem, a complexidade computacional e espacial necessária para manter a
grelha de posição em memória e para fazer a sua actualização para cada nova observação aumenta
9
exponencialmente com o número de dimensões, fazendo com que apenas seja possível de aplicar a
problemas de estimação com baixa dimensão.
Topológica. É possível evitar a complexidade computacional dos métodos vistos anteriormente utilizando
representações não-métricas do ambiente. Por exemplo, em muitos ambientes interiores é possível
representar de um modo simbólico (e.g. quarto, corredor, etc) a localização de um robô. Tal repre-
sentação resulta na implementação topológica do filtro de Bayes, onde o ambiente é representado por
um grafo. Cada nó do grafo corresponde a um local e cada aresta a uma ligação, que tipicamente é
um corredor. O modelo dinâmico que descreve a zona de circulação dum robô, p(xt | xt−1), pode ser
treinado para representar padrões típicos da sua dinâmica. A vantagem destes métodos reside na sua
eficiência, porque representam distribuições em espaço de estados reduzidos e discretos. Por outro
lado, é uma representação um pouco vaga, pois apenas contém informação aproximada da localização
do robô e por isso tipicamente é adequada a utilização de sensores de localização com pouca precisão.
2.2.2 Filtro de Partículas
Um filtro de partículas representa a crença por intermédio dum conjunto de amostras, ou partículas,
Bel(xt ) ≈
⟨x(i)t , w (i)
t ⟩ | i = 1, · · · ,n
Nesta equação cada x(i)t é um estado e w (i)
t são pesos não-negativos chamados de factores de importância
em que a sua soma é igual a 1. Os filtros de partículas realizam as actualizações do filtro de Bayes de acordo
com um procedimento de amostragem. A principal vantagem é a sua capacidade para representar densi-
dades de probabilidades arbitrárias. Para além disso, ao contrário do filtro de Kalman, podem convergir para
um posterior verdadeiro, mesmo para sistemas dinâmicos não Gaussianos e não lineares. Comparando o
filtro de partículas com abordagens com base em grelhas, são muito eficientes, porque automaticamente con-
centram os seus recursos (partículas) em regiões do espaço de estados com grande probabilidade. Porque
a eficiência do filtro de partículas depende fortemente do número de amostras utilizadas a serem filtradas,
alguns melhoramentos foram feitos na utilização das amostras disponíveis, surgindo assim o algoritmo de
Monte Carlo [Fox, Burgard, Dellaert & Thrun 1999]. Este algoritmo é actualmente a melhor solução para o
problema mais complexo de localização (rapto do robô), sendo por isso utilizado em diversas aplicações [.
Thrun et al. 1999, Baggio & Langendoen 2006, Santos 2008, Kümmerle, Triebel, Pfaff & Burgard 2008]
2.2.3 Ambientes Activos
O conceito de ambiente activo pode ser definido como um espaço de trabalho onde se encontra presente
um conjunto de sensores. Este tipo de ambiente é muito útil para o problema de localização global de robôs
móveis. Hada & Takase [2001] utilizaram uma câmara estática para detectar a radiação infravermelha emitida
por díodos montados nos robôs. Este sistema, de nome iGPS, detecta a posição global do robô no ambiente,
que depois é corrigida pelos encoders, devido ao atraso existente no processamento e envio da posição para
o robô. [Fernández, Mazo, Lázaro, Pizarro, Santiso, Martín & Losada 2007] extende o trabalho anterior
10
utilizando um maior número de câmaras, determinando assim a posição tridimensional (X ,Y , Z ) bem como
a orientação (θx ,θy ,θz ). [Christo et al. 2009] propõem também um sistema de localização global em que
cada robô é identificado por um sistema de visão. Os autores sugerem dois métodos para identificar o robô -
distância de Mahalanobis [Mahalanobis 1936] para caracterizar a cor dos alvos do robô ou identificação das
características invariantes do robô através do algoritmo SIFT [Lowe 2004]. Por outro lado, Ocana, Bergasa,
Sotelo, Nuevo & Flores [2005] apresentam um sistema de localização com base na magnitude do sinal WiFi
com sete pontos de acesso distribuídos pelo espaço de trabalho.
2.3 Navegação de Robôs Móveis
Um robô móvel com recursos suficientes para se localizar necessita de conseguir deslocar-se de uma con-
figuração inicial até a um ponto de destino. Para isso necessita de resolver dois problemas: decidir qual o
caminho a seguir evitando obstáculos, e quais as velocidades que o permitem percorrer. Estes problemas
podem se encontrar sujeitos a constrangimentos do tipo: minimização do tempo ou energia ao longo do
percurso.
2.3.1 Planeamento de Caminhos
Os algoritmos Bug1 e Bug2 são dois planeadores capazes de comandar um robô móvel com dois graus
de liberdade num ambiente completamente desconhecido utilizando sensores, Figura 2.2. Assumem que o
robô é um ponto operacional no plano munido de um sensor de contacto para detectar obstáculos [Lumelsky
& Stepanov 1987]. Quando o robô se encontra equipado com um sensor de distância, então pode ser
utilizado o algoritmo Bug Tangente [Kamon, Rimon & Rivlin 1998]. Estes algoritmos têm a particularidade de
percorrerem o espaço livre sem construir o espaço de configuração, possuindo desta forma a limitação de
apenas poderem ser utilizados em espaços de configuração bidimensionais. Para ultrapassar esta limitação
Figura 2.2: Algoritmo Bug1 [Lumelsky & Stepanov 1987].
e porque é difícil representar o espaço de configurações explicitamente, uma alternativa é utilizar algoritmos
de procura, que de forma incremental exploram o espaço livre enquanto procuram por um caminho. Por
11
exemplo, uma função potencial direcciona um robô como se fosse uma partícula deslocando-se num campo
vectorial gradiente. A combinação de forças atractivas e repulsivas fazem com que o robô se desloque da
posição inicial até à final evitando obstáculos, embora sempre com a possibilidade de encontrar um mínimo
local [Ge & Cui 2000].
O planeamento de caminhos quando é feito repetidamente no mesmo espaço, leva a que seja útil a
utilização duma estrutura de dados - mapa - de modo a acelerar o processo de planeamento. Uma classe de
mapas topológicos muito utilizados são os itinerários. Estes servem para um robô se deslocar de um local
para outro utilizando percursos pré-definidos, tal como as pessoas utilizam as auto-estradas para chegar ao
seu destino. Podem ser construídos por intermédio de grafos, como por exemplo: o Grafo de Visibilidade,
onde os obstáculos são representados por polígonos e os caminhos possíveis (ligações) são feitos unindo
os diversos vértices dos obstáculos ao nó de origem e ao nó de chegada [Lozano-Pérez & M.Wesley 1979];
ou o Grafo Generalizado de Voronoi (GVG), Figura 2.3, que representa o conjunto de pontos com a mesma
distância a dois obstáculos que se encontrem na vizinhança [Choset 1996].
Figura 2.3: Representação do grafo generalizado de Voronoi [Choset 1996].
Os métodos descritos anteriormente têm a particularidade de criarem itinerários no espaço de config-
uração livre, que se for muito elevado vai fazer com que a dimensão do problema também o seja. Este
factor pode fazer com que o problema de planeamento não possa ser resolvido em de tempo útil, tornado a
sua aplicação impraticável. Por outro lado, existem métodos que permitem reduzir o peso computacional de
avaliar se uma determinada configuração de um robô se encontra no espaço livre ou não. O planeador prob-
abilístico de itinerários (PRM) demonstrou o tremendo potencial destes métodos [Kavraki, Švestka, Latombe
& Overmars 1996], assim como outros; EST e RRT, que apesar da sua simplicidade conseguem lidar com
robôs de muitos graus de liberdade e com diferentes tipos de constrangimentos (e.g. cinemáticos, dinâmicos)
[e.g. LaValle 1998, Hsu, Latombe & Motwani 1999]. Uma característica importante destes planeadores é que
não tentam construir explicitamente as fronteiras do espaço de configuração dos obstáculos ou representar
o espaço livre através de células; apenas baseiam-se num procedimento que averigua se uma dada config-
uração do robô encontra-se em colisão com algum obstáculo, utilizando para isso bibliotecas para detecção
de colisões (e.g., SOLID, V-Collide ou SWIFT++).
12
2.3.2 Planeamento de Trajectórias
Foi visto que um caminho especifica um conjunto de configurações que um robô alcança ao se mover de
uma configuração inicial para uma outra final. Deste modo, um caminho não é uma representação completa
do movimento de um sistema robótico, pois o tempo do movimento não é especificado. A um caminho com a
respectiva especificação do tempo em que cada configuração é alcançada dá-se o nome de trajectória. Para
as definir podem ser feitas duas abordagens: a desacoplada e directa. A primeira permite separar a tarefa de
encontrar o caminho, da tarefa de especificar o tempo de execução de cada configuração do robô. Por outro
lado, a segunda abordagem procura por uma solução directamente no espaço de estados do robô, utilizando
por exemplo técnicas de controlo óptimo e optimização numérica.
Abordagem Desacoplada
Pedrosa, Medeiros & Alsina [2003] propõem a criação de caminhos não-holonómicos através de polinómios
cúbicos parametrizados por um λ. Porém, nem sempre o caminho resultante é o melhor de entre todas as
infinitas soluções possíveis, por isso os autores adoptaram o critério de que o caminho seja regular, i.e.,
cada polinómio tem de ser uma função monótona crescente ou decrescente. Com a aplicação deste critério
resultam dois sistemas de inequações de onde se obtém os coeficientes dos polinómios arbitrados [Pedrosa
2001]. A Figura 2.4 mostra três caminhos não-holonómicos em que um deles não é regular, possuindo
um ponto máximo na direcção x. Depois de criado o caminho, as velocidades para um robô diferencial,
(v(t),ω(t)), foram obtidas directamente pela determinação da variação do parâmetro λ no tempo.
Figura 2.4: Caminhos não-holonómicos [Lumelsky & Stepanov 1987].
Tsai, Wang, Chang & Wu [2004] propõem a utilização de B-splines cúbicas, em que os seus pontos de
controlo são optimizados tendo em conta uma função de custo, que minimiza o erro quadrático entre os
pontos de interesse e a curva, e o cumprimento dos constrangimentos de curvatura e orientação (inicial
e final). Para resolver este problema de optimização os autores utilizaram a função fmincon do Matlab®.
Embora as B-splines cúbicas possam ter curvaturas contínuas do inicio até ao fim, alterações locais afectam
a forma de até seis segmentos vizinhos, sendo por isso inviável proceder à remoção ou substituição de
segmentos de uma trajectória existente. Assim, Lau, Sprunk & Burgard [2009] propõem a utilização de
13
splines de Bézier de quinta ordem para construção de trajectórias de curvatura contínua com a vantagem
de ser possível fazer a montagem de novos segmentos sem haver descontinuidades na curvatura. Deste
modo torna-se possível alterar as trajectórias muito rapidamente de forma a reagir a obstáculos dinâmicos.
O projecto do caminho e das velocidades é proposto pelos mesmos autores através duma função de custo
com base no tempo total de execução. Esta é uma função complexa que depende da forma do caminho,
juntamente com o perfil de velocidades e com o mapa do ambiente, e por isso não é diferenciável. Desta
forma, os autores utilizaram esquemas de optimização inspirados no algoritmo RPROP de Riedmiller & Braun
[1993].
Abordagem Directa
Por outro lado, a abordagem directa, é um problema geral de optimização não linear pode ser ser colocado
da seguinte forma,
Encontrar t f , q(t), u(t) (2.4)
minimizando J (u(t), q(t), t f ) (2.5)
sujeito a M(q(t))q(t)+C (q(t), q(t))q + g (q(t))= u(t), 0≤ t ≤ t f (2.6)
umin (q(t), q(t)) ≤ u(t) ≤ umax (q(t), q(t)), 0≤ t ≤ t f (2.7)
h(q(t)) ≤ 0, 0≤ t ≤ t f (2.8)
q(0) = qinici al , q(0) = qinici al (2.9)
q(t f ) = q f inal , q(t f ) = q f inal (2.10)
onde h(q) ≤ 0 representa os obstáculos e os limites das juntas.
A resolução deste problema passa pela aplicação de métodos de optimização não linear, onde tipica-
mente apenas são satisfeitos os constrangimentos num número fixo de pontos distribuídos ao longo do
intervalo [0, t f ], e onde a representação dos estados e das acções de controlo é feita através da utilização
de parâmetros finitos. Existem três formas de resolver este problema:
Parametrização da trajectória q(t). O problema é solucionado para a trajectória parametrizada directa-
mente. As acções de controlo u em qualquer instante são calculadas através da equação 2.6.
Parametrização da acção de controlo u(t). O problema é solucionado para u(t) directamente, e depois é
necessário integrar a equação 2.6 para determinar (q(t), q(t)).
Parametrização de q(t) e u(t). O número de coeficientes da parametrização é maior visto que q(t) e u(t) têm
de satisfazer as equações da dinâmica 2.6 explicitamente.
A trajectória e/ou acções de controlo podem ser parametrizadas de diversas formas, como por exemplo,
através dos coeficientes dum polinómio no tempo, duma série de Taylor truncada, duma spline, etc. A
escolha da parametrização tem implicações futuras quanto à eficiência do cálculo de q(t) e u(t), bem como
da sensibilidade dos estados e controlo aos respectivos parâmetros, sendo portanto um factor importante na
estabilidade e eficiência da optimização numérica.
14
Este tipo de programação não linear pode ser resolvida de diversas formas incluindo programação quadrática
sequencial (SQP) ou programação dinâmica. Como precauções é necessário que a função objectivo e re-
spectivos constrangimentos sejam suficientemente suaves relativamente aos parâmetros de controlo (2.4),
i.e., pelo menos C 1, normalmente C 2 para que a informação da Hessiana seja utilizada, de forma a acelerar
a convergência. O palpite inicial da solução pode também influenciar bastante a solução final alcançada pelo
optimizador não linear (e.g., LINPACK, SNOPT ou NPSOL), pois este utiliza informação local do gradiente,
podendo fazer com que a solução convirja para um óptimo local.
Para que o problema de controlo não linear seja resolvido pelos respectivos optimizadores é necessário
transformar o problema para a forma de programação não linear. Existem diversas aplicações informáticas
capazes capazes de o fazer, como por exemplo: GPOPS [Rao, Benson, Darby, Patterson, Francolin, Sanders
& Huntington 2010], PROPT [Rutquist & Edvall 2008], OPTRAGEN [Bhattacharya 2006]. Estas aplicações
têm o factor comum de poderem ser utilizadas no ambiente Matlab®.
2.3.3 Controladores
Segundo [Kozlowski, Majchrzak & Michalek 2006] as dificuldades no projecto de controladores para sistemas
não-holonómicos surgem da impossibilidade de integrar os constrangimentos cinemáticos impostos pelo sis-
tema físico. Estes constrangimentos impõem restrições nas velocidades admissíveis, preservando contudo a
sua controlabilidade. Para além disso, a dimensão do espaço de controlo U ⊂ℜm em comparação com o es-
paço de configurações, Q ⊂ℜn com (n > m), causam dificuldades no projecto de um controlador. Apesar dos
problemas mencionados, existem muitas estratégias de controlo com realimentação para modelos cinemáti-
cos não-holonómicos. Ainda assim, alguns problemas importantes, como robustez às limitações da acção
de controlo dos actuadores, afinação intuitiva dos parâmetros do controlador e boa qualidade das acções de
controlo durante o regime transiente continuam a ser problemas abertos e requerem mais investigação.
A abordagem mais intuitiva para o controlo em anel aberto de um sistema não-holonómico, e que permite
atingir qualquer configuração desejada baseia-se no seguinte procedimento,
1. Rodar o robô até ficar alinhado com o segmento de recta que une a configuração inicial (xi , yi ,θi ) à
configuração final (x f , y f ,θ f ),
2. Andar em frente até atingir a posição final (x f , y f ),
3. Rodar novamente o robô até atingir a orientação final θ f .
Sendo u1 a acção de controlo associada ao movimento linear do robô e u2 ao movimento de rotação, com
apenas uma sequência de três acções de controlo u2, u1 e de novo u2 é possível conduzir um robô até a
uma configuração final. Esta abordagem é limitada a estruturas muito simples, como por exemplo um robô
diferencial, em que a intuição geométrica é suficiente.
Uma abordagem mais geral pode ser feita para um robô móvel seguir uma determinada trajectória que
cumpra os constrangimentos não-holonómicos dum determinado robô. Como o modelo cinemático dum
robô não é em geral controlável, é necessário considerar o modelo linearizado do erro entre a trajectória e a
posição real do robô, de forma a resultar um sistema linear invariante no tempo que garanta a controlabilidade
15
do robô [De Luca & Oriolo 1995]. Canudas de Wit, Khennouf, Samson & Sordalen [1993] propõem duas leis
de controlo com base neste modelo, sendo uma linear e outra não linear. Outra abordagem tem por base a
linearização dinâmica da realimentação que consiste no problema de determinar um compensador dinâmico
de realimentação de estados [d’Andréa Novel, Campion & Bastin 1995]. De Luca et al. [2001] compararam
experimentalmente estas duas estratégias de controlo para um robô diferencial e concluíram que o peso
computacional destes métodos é semelhante, assim como o seu desempenho.
Um controlador preditivo de horizonte recidivo foi implementado para seguimento de trajectórias por Gu
& Hu [2006], em que a estabilidade do controlo é garantida pela adição dum termo (estado final) na função
de custo. Este controlador, para além da capacidade de fazer o seguimento de trajectórias tem capacidade
de fazer estabilização do robô em torno de um ponto.
2.4 Detecção e Seguimento de Objectos
O seguimento de objectos encontra-se no domínio da visão computacional e tem diversas aplicações: recon-
hecimento com base em movimento, indexação de vídeo, vigilância, interacção homem-máquina, monitoriza-
ção de tráfego e navegação de robôs móveis [Yilmaz et al. 2006]. Na sua forma mais simples, o seguimento
pode ser definido como um problema de estimação da trajectória de um objecto no plano da imagem à
medida que se movimenta. Esta tarefa pode ser bastante complexa devido a diversos factores,
• Perda de informação devido a projecção do mundo físico tridimensional num plano bidimensional;
• Ruído do sensor de visão;
• Movimento complexo do objecto;
• Natureza não-rígida ou articulada do objecto;
• Formas complexas dos objectos;
• Variações na iluminação do ambiente.
A representação de objectos pode ser feita por intermédio de pontos ou conjunto de pontos, formas ge-
ométricas primitivas (e.g. rectângulo, elipse), silhueta e contorno, modelos de formas articuladas ou modelos
esqueléticos, Figura 2.5. De seguida são apresentados diversos métodos para a sua detecção de acordo
com diferentes características visuais, assim como métodos para o seu seguimento.
2.4.1 Detecção
A selecção das características certas tem um papel crítico no seguimento de objectos. Em geral, a pro-
priedade mais desejada de uma característica visual é a sua singularidade para que objectos relevantes
possam ser facilmente distinguidos no espaço da respectiva característica. São quatro as características
mais utilizadas,
16
Figura 2.5: Representação de objectos. (a) centróide, (b) rectângulo, (c) formas articuladas, (d) contorno, (e) silhueta[Yilmaz et al. 2006].
Cor. A cor aparente de um objecto é influenciada principalmente por dois factores físicos: distribuição do
poder espectral da iluminação e propriedades da reflexividade da superfície do objecto. Existem diver-
sos espaços de cores (RGB, HSV, YCbCr, etc), sendo que a sua escolha depende de cada aplicação.
Arestas. A fronteira de objectos normalmente provoca profundas alterações na intensidade da imagem. A
detecção de arestas é utilizada para evidenciar estas alterações. Uma propriedade importante destas
é que são menos sensíveis a variações de iluminação em relação à cor. Algoritmos que seguem a
fronteira de objectos utilizam normalmente arestas como a característica representativa. Devido à sua
simplicidade e precisão o método mais popular de detecção é o de Canny [1986].
Fluxo Óptico. Campo vectorial de deslocamento que define a translação de cada pixel duma região. É
computado utilizando um constrangimento de brilho que assume a invariância do brilho de pixeis corre-
spondentes em frames diferentes [Horn & Schunck 1981]. É utilizado como característica na segmen-
tação com base em movimento e aplicações de seguimento. A avaliação do desempenho de diversos
métodos de fluxo óptico pode ser encontrada em [Barron, Fileet & Beauchemin 1994].
Textura. É uma medida da intensidade da variação de uma superfície que quantifica propriedades como a
suavidade e regularidade. É necessário um procedimento adicional em relação à cor para gerar os
descritores. Assim como a característica dos cantos é menos sensível a variações de iluminação.
Em geral, muitos algoritmos de seguimento de objectos utilizam uma combinação destas características,
embora de entre todas as características a mais utilizada é a cor. Por exemplo, Phung et al. [2002] utilizam o
espaço de cores Y CbCr para detectar a cor da pele de pessoas. O processo de classificação de cada píxel é
feito com base na distância de Mahalanobis, cujos parâmetros (média e covariância) são estimados através
da aplicação do processo de clustering k-means a um conjunto de imagens.
Detectores de Pontos de Interesse
Detectores de pontos de interesse são utilizados para encontrar pontos de interesse em imagens com uma
textura expressiva. Uma qualidade desejável de um ponto de interesse é a sua invariância a alterações na
iluminação e ponto de vista da câmara. Existem diversos detectores como o operador de Moravec [1979],
detector de Harris & Stephens [1988], detector KLT [Shi & Tomasi 1994] e o detector SIFT [Lowe 2004].
Uma comparação destes métodos foi feita por Mikolajczyk & Schmid [2003] que chegou à conclusão que os
descritores SITF têm um melhor desempenho.
17
Remoção do Fundo
A detecção de objectos também pode ser feita por intermédio da subtracção do fundo da imagem que pode
ser conseguida pela construção do modelo do fundo, seguido de desvios do modelo em cada frame. Gordon,
Darrell, Harville & Woodfill [1999] utilizam esta técnica com base na cor e aumenta a sua robustez com a
utilização de sensores de distância, reduzindo o efeito de problemas clássicos de segmentação (e.g., pontos
com cores semelhantes, sombras)
Segmentação
O objectivo dos algoritmos de segmentação é dividir a imagem em regiões semelhantes e para isso cada
algoritmo lida com dois problemas: definição dum critério para uma boa partição e, procedimento eficiente
para o fazer. Três das técnicas com mais relevo para seguimento são a Mean-Shift Clustering [Comaniciu
& Meer 1999], segmentação da imagem através de grafos [Shi & Malik 2000] e contornos activos [Caselles,
Kimmel. & Sapiro 1999].
Aprendizagem Supervisionada
A detecção de objectos pode ser feita por aprendizagem das diversas vistas do objecto de forma automática,
por intermédio de um mecanismo de aprendizagem supervisionado. Uma vez seleccionadas as caracterís-
ticas, diferentes perspectivas dum objecto podem ser aprendidas utilizando uma abordagem supervisionada
por intermédio de redes neuronais [Rowley, Baluja & Kanade 1998], impulso adaptativo [Viola, Jones &
Snow 2003], árvores de decisão [Grewe & Kak 1995] e support vector machines [Papageorgiou, Oren &
Poggio 1998]. Estes métodos computam uma hipersuperfície que separa uma classe de objectos de outras
classes num espaço de dimensões elevadas.
2.4.2 Seguimento
O objectivo dum algoritmo para seguir objectos é o de construir a sua trajectória ao longo do tempo, apenas
com a localização da sua posição em cada frame de vídeo. Este algoritmo tem dois procedimentos princi-
pais: detectar o objecto; e estabelecer a correspondência entre instâncias do objecto em frames diferentes.
Estes procedimentos podem ser feitos separadamente ou em conjunto, mas em ambos os casos os objec-
tos são representados utilizando a forma e/ou modelos de aparência descritos anteriormente. O modelo
seleccionado para representar os contornos limita o tipo de movimento ou deformação a que este pode ser
sujeito. Por exemplo, se um objecto é representado por um ponto então apenas um modelo de translação
pode ser utilizado; no caso de um objecto ser representado por uma forma geométrica (e.g. elipse) mode-
los paramétricos de movimento, como transformações afins ou projectivas podem ser utilizadas. Com estas
representações pode-se aproximar o movimento de corpo rígido do objecto. Para corpos não-rígidos a rep-
resentação mais descritiva é a silhueta ou o contorno, em que podem ser utilizados modelos paramétricos e
não-paramétricos para especificar o seu movimento. Assim, as representações podem ser divididas em três
grupos,
18
Pontos. Objectos detectados em frames consecutivas são representados por pontos e a associação dos
pontos tem como base o estado anterior (posição e velocidade).
Núcleos. Refere-se à forma e aparência do objecto (e.g. forma elíptica com um histograma associado). O
seguimento de objectos é feito através da computação do movimento do núcleo em frames consec-
utivas. Este movimento é descrito normalmente sob a forma duma transformação paramétrica como;
translação, rotação e transformação afim.
Silhuetas. O seguimento é feito estimando a região onde se encontra o objecto em cada frame. Métodos
para seguimento de silhuetas utilizam a informação codificada dentro da região do objecto, que pode
estar na forma de densidade aparente e modelos de forma (mapas de arestas). Dados os modelos dos
objectos, as silhuetas são seguidas ou por correspondência de forma ou por evolução do contorno.
A correspondência de pontos é um problema complicado principalmente na presença de oclusões, de-
tecções erradas, entradas e saídas de objectos [Veenman, Reinders & Backer 2001]. De uma forma global
os métodos de correspondência de pontos podem ser divididos em duas categorias - métodos determinísti-
cos e métodos estatísticos. Os métodos determinísticos utilizam heurísticas de movimento qualitativo para
constringir o problema de correspondência. Por outro lado, os métodos estatísticos utilizam explicitamente
as medições do objecto tendo em conta incertezas para estabelecer a correspondência. Na Tabela 2.1
encontram-se referências, tanto para métodos determinísticos como para estatísticos. Pormenores sobre o
seguimento de núcleos e silhuetas podem ser consultados em [Yilmaz et al. 2006].
Categoria Trabalho RepresentativoSeguimento de pontos• Métodos determinísticos MGE tracker [Salari & Sethi 1990]
GOA tracker [Veenman et al. 2001]• Métodos estatísticos Filtro de Kalman [Broida & Chellappa 1986]
JPDAF [Bar-Shalom & Foreman 1988]PMHT [Streit & Luginbuhl 1994]
Tabela 2.1: Métodos determinísticos e estatísticos para seguimento de pontos.
2.5 Arquitecturas e Comunicação de Sistemas Robóticos
Esta secção apresenta diversas arquitecturas de sistemas robóticos que hoje em dia são utilizadas, assim
como a comunicação entre os seus diversos constituintes. Pode se afirmar que existe alguma semelhança
entre arquitectura de robôs e engenharia de software, contudo, segundo Kortenkamp & Simmons [2008]
as arquitecturas de robôs têm características muito próprias, como por exemplo, a interacção assíncrona
em tempo-real num ambiente incerto que pode ser dinâmico. Para além deste motivo, muitos sistemas
robóticos respondem em tempos variáveis que podem ir dos milisegundos (controlo) a minutos ou horas
(tarefas complexas). Brooks [1986] divide os requisitos duma arquitectura em quatro pontos:
Objectivos. Frequentemente um robô vai ter múltiplos objectivos em que alguns podem ser conflituosos
entre si. Por exemplo, pode acontecer que um robô tenha de ir para um dado ponto enquanto evita
19
obstáculos locais, ou mais drasticamente, numa ferrovia se soar o apito do comboio torna-se muito
mais importante sair da linha do que examinar o que falta na linha. O sistema de controlo tem de ser
rápido na reacção a objectivos de alta prioridade, e em simultâneo cumprir também os requisitos de
baixo nível (e.g., ao sair da linha o robô tem de manter o seu equilibro para não cair).
Sensores. Os robôs estão normalmente equipados com diversos sensores em que todos têm uma compo-
nente de erro nas suas leituras, muitas vezes não há uma relação analítica directa entre a quantidade
medida e a física, e alguns podem ter uma escala limitada levando à sobreposição de medições. Nes-
tas condições, o robô tem de ser capaz de tomar decisões.
Robustez. O robô deve ser robusto. Quando algum sensor falha, tem de ser capaz de lidar com a situação
e adaptar-se com base nos sensores que se encontram operacionais. Quando o ambiente muda
drasticamente, o robô deve ter um comportamento minimamente adequado, em vez de ficar quieto ou
de vaguear sem objectivo e irracionalmente.
Extensibilidade. À medida que mais sensores e capacidades são adicionadas ao robô, este precisa de
mais poder de processamento; de outro modo as funcionalidades iniciais do robô vão ser prejudicadas.
2.5.1 Arquitecturas de Sistemas Robóticos
Uma das primeiras arquitecturas baseia-se no paradigma sentir-planear-actuar, Figura 2.6. Nesta arqui-
tectura a informação sensorial segue para o modelo existente do ambiente que, por sua vez, é utilizado
no planeamento. Este é um paradigma que rapidamente caiu em desuso por duas razões: primeira, o
planeamento no domínio do mundo real é moroso levando ao bloqueio do robô enquanto não é concluído o
planeamento; segunda e mais importante, a execução do planeamento sem envolver a informação adquirida
pelos sensores é perigosa num mundo dinâmico.
Sensores
Per
cepç
ão
Mod
elaç
ão
Pla
neam
ento
Exe
cuçã
ode
Tare
fas
Con
trol
odo
Mot
or
Actuadores
Figura 2.6: Paradigma sentir-planear-actuar (SPA).
De modo a ultrapassar estes problemas, Brooks [1986] propõe um novo tipo de arquitectura hierárquica
com base em comportamentos que estão definidos em máquinas de estado finitas que se encontram em
níveis com diferentes prioridades e onde é possível a interacção entre elas, Figura 2.7. Cada uma destas
máquinas liga directamente sensores e actuadores e é responsável por um dado comportamento robótico.
Assim, é possível criar múltiplas camadas de comportamentos interactivos para fazer com que os robôs con-
sigam realizar tarefas complexas em ambientes complexos. Como múltiplos comportamentos podem ser
activados num instante de tempo qualquer, é necessário um mecanismo de arbitragem que possibilite habili-
tar um comportamento de maior importância (alto-nível) de modo a fazer o sobrecarregamento do sinal de um
20
Sonar
Vaguear
Sente Força
Colisão
Evitar
Fugir Virar FrenteRobô
Mapa
Força
Orientação Orientação
Orientação
Encoders
Parar
Robô Robô
Figura 2.7: Arquitectura com base em comportamentos [Brooks 1986].
comportamento com menos importância (baixo-nível) [e.g. Connell 1992, Horswill 1993]. O funcionamento
num mundo dinâmico não é assim um incómodo para estes robôs que estão constantemente a reagir à in-
formação sensorial adquirida. Muitas variações desta arquitectura existem, frequentemente com diferentes
mecanismos de arbitragem para combinar a saída dos comportamentos [e.g. Rosenblatt 1997]. Um exemplo
popular de uma arquitectura com base em comportamentos inspirada em agentes biológicos encontra-se de-
scrita por Arkin [1987]. Este autor utiliza um esquema para representar um dado comportamento; a teoria de
esquemas propõe que todo o conhecimento encontra-se organizado por unidades, e dentro destas unidades
de conhecimento, ou schemata, é guardada a informação. Assim, um modelo de esquemas descreve a
interacção entre percepção e acção, e pode ser adaptado com o objectivo de tornar um sistema robótico
altamente sensível ao ambiente percepcionado, Figura 2.8.
Ambiente
Ambiente Actual
Modelo
Memória de curto e longo prazo
Cognição
Planos de Acção
Esquemas de Acção
Direcção
Modificação
Figura 2.8: Ciclo acção-percepção.
Esquemas de acção operando de modo concorrente e independente podem produzir itinerários que re-
flectem a incerteza na detecção de obstáculos. Adicionalmente podem lidar com informação conflituosa
proveniente de diversos sensores com uma estratégia específica. Os esquemas de acção geram vectores
de resposta com base nas saídas dos esquemas perceptuais, que depois são combinados de maneira semel-
hante aos campos potenciais artificiais [Khatib 1986]. Estes esquemas de acção e de percepção, que podem
ser considerados comportamentos robóticos primitivos ou apenas primitivas, foram introduzidos na arquitec-
tura para robôs autónomos (AuRA) [Arkin & Balch 1997], que tem semelhanças biológicas com a navegação
de um sapo, mais concretamente, no controlo dos seus membros na zona da medula espinal.
Contudo, robôs com base em comportamentos cedo chegaram ao limite das suas capacidades devido
21
à crescente complexidade dos objectivos propostos, como por exemplo, minimizar o tempo de realização
duma tarefa. Portanto, os robôs necessitavam das capacidades iniciais de planeamento juntamente com a
resposta reactiva com base em comportamentos. Assim, surgem as arquitecturas de controlo de robôs com
base em camadas.
Um dos primeiros passos na direcção da integração do comportamento reactivo e deliberativo foi dado
por Firby [1987] ao propor o sistema RAP. Este é um sistema com base em pacotes de acção reactiva (RAP),
que são essencialmente processos autónomos que perseguem um objectivo planeado até que este seja
concretizado. Se o sistema tem mais que um objectivo então vão existir processos independentes a tentar
concretizar cada um deles. Firby [1989] apresenta também uma arquitectura com três camadas pela primeira
vez, encontrando-se na camada intermédia o sistema RAP.
Independentemente e concorrentemente Bonasso [1991] fez uma arquitectura que no nivel mais baixo os
comportamentos robóticos são programados na linguagem Rex como circuitos síncronos. Essas máquinas
Rex garantem uma semântica consistente entre os estados internos do agente e os do ambiente. A camada
intermédia é um organizador condicional implementado na linguagem Gapps, que faz a activação e desac-
tivação das habilidades Rex até que as tarefas do robô estejam concluídas. Este organizador baseado em
Gapps é apelativo, porque pode ser sintetizado através de técnicas de planeamento mais tradicionais. Este
trabalho culminou com a arquitectura 3T cujo nome é devido às três camadas interactivas de processos de
controlo - planeamento, organização e controlo - que tem sido utilizada em muitas gerações de robôs. Um
exemplo da sua implementação pode ser consultado em [Bonasso, Kortenkamp, Miller & Slack 1997].
A arquitectura Syndicate extende o modelo 3T para coordenação multirobô [Sellner, Heger, Hiatt, Sim-
mons & Singh 2006]. Nesta arquitectura, cada camada interage não só com as vizinhas, mas com camadas
de outros robôs que se encontram ao mesmo nível. Desta forma o controlo distribuído pode ser projec-
tado em múltiplos níveis de abstracção. Outras arquitecturas para multirobôs encontram-se descritas em
[Parker 2008].
Uma arquitectura distribuída biomórfica com duas camadas foi utilizada pela equipa CAMBADA [Azevedo,
Cunha & Almeida 2007]. Numa camada é feita a coordenação responsável pelos comportamentos globais
da equipa e na outra é feita a percepção e reacção através dos diversos sensores e actuadores distribuídos
pelos membros da equipa, bem como a partilha da informação sobre o estado interno entre agentes e
execução das ordens provenientes da primeira camada. Assim, cada robô é um agente independente que
coordena as suas acções com os seus colegas de equipa através da comunicação e da troca de informação.
O comportamento resultante de cada robô é integrado na estratégia de equipa, resultando assim acções
cooperativas por parte todos os robôs. Isto é conseguido através da atribuição de funções aos agentes
(e.g., avançado, guarda-redes). Cada função tem os seus comportamentos bem definidos e estes definem a
atitude do jogador em campo (e.g., posição no campo, permissões para chutar, etc).
2.5.2 Comunicação entre Componentes duma Arquitectura
Todos os componentes duma arquitectura necessitam de comunicar uns com os outros, tanto para trocar
informação como para enviar ordens. A escolha da forma como estes módulos comunicam - frequentemente
chamado de middleware - é um dos aspectos mais importantes e que mais constrangimentos vai proporcionar
22
no projecto de uma arquitectura para robôs [Kortenkamp & Simmons 2008].
Geralmente grande parte dos problemas e do tempo para depuração no desenvolvimento de arquitec-
turas de sistemas robóticos estão relacionados com a comunicação entre componentes. Adicionalmente,
uma vez que um dispositivo de comunicação é escolhido, torna-se extremamente difícil alterá-lo, fazendo
com que decisões embrionárias persistam por muitos anos. Muitos fazem os seus próprios protocolos de
comunicação, normalmente em cima de sockets Unix, permitindo a personalização de mensagens, embora
desaproveitando a fiabilidade, eficiência e facilidade de manuseio que pacotes de comunicação externos
fornecem. Existem duas abordagens básicas para comunicação: cliente-servidor e publicação-subscrição.
A primeira abordagem é muito popular e baseia-se no facto de que o pedido dum cliente é emparelhado a
uma resposta do servidor, enquanto o paradigma alternativo baseia-se em mensagens transmitidas de modo
assíncrono, em que todos os módulos que previamente subscreveram às mensagens recebem uma cópia.
Com um estilo cliente-servidor, os módulos tipicamente enviam um pedido e depois bloqueiam à espera da
resposta. Se a resposta não é dada então um deadlock pode ocorrer, embora, mesmo que o módulo não
bloqueie, o fluxo de controlo tipicamente fica à espera duma resposta, o que pode levar a comportamen-
tos inesperados. Pelo contrário, sistemas que utilizam o estilo publicação-subscrição tendem a ser mais
robustos, porque sendo assumido pelo módulo que as mensagens chegam assincronamente, o fluxo de con-
trolo tipicamente não espera uma ordem particular para o processamento das mensagens, fazendo com que
mensagens perdidas ou fora de ordem causem menos impacto [Kortenkamp & Simmons 2008].
Cliente-Servidor
Num protocolo entre cliente e servidor os componentes falam directamente um com o outro. Um bom exem-
plo é o protocolo RPC (Remote Procedure Call) em que um componente (o cliente) pode invocar funções e
procedimentos de um outro componente (o servidor). Uma variação actual deste protocolo tem o nome de
CORBA. Este intermediário também permite a um componente invocar métodos de objectos implementados
por outro componente. As invocações dos métodos encontram-se definidas num ficheiro de definição da
linguagem de interface (IDL) que é independente da linguagem. A vantagem encontra-se no facto de que
quando um ficheiro IDL é alterado, todos os componentes que utilizam o respectivo IDL voltam a ser compi-
lados automaticamente. Uma das desvantagens do CORBA é que introduz código adicional nas aplicações.
Alguns competidores tentaram resolver esta questão, como por exemplo o ICE1 que tem a sua própria versão
de um ficheiro IDL de nome SLICE2 [Henning 2004].
A vantagem mais importante de um protocolo cliente-servidor é que as interfaces são previamente
definidas fazendo com que se saiba quando são alteradas. Outra vantagem é que permite uma abordagem
distribuída sem um módulo central para fazer a distribuição de informação. Uma desvantagem é que introduz
atrasos significativos especialmente se muitos componentes necessitam da mesma informação. É de notar
que ambos os intermediários, CORBA e ICE, possuem mecanismos de transmissão chamados de canal de
eventos ou serviço de notificação. Embora a utilização do protocolo CORBA encontre-se em declínio no
mercado eCommerce, hoje-em-dia é utilizado principalmente em sistemas embebidos que necessitam do
1Internet Comunications Engine2Specification Language for ICE
23
determinismo das redes em tempo-real [Henning 2006].
Publicação-Subscrição
Num protocolo publicação-subscrição (broadcast) um componente publica informação à qual qualquer outro
componente pode subscrever. Tipicamente, um processo centralizado encaminha os dados entre o editor e
o subscritor. Numa arquitectura a maioria dos componentes são editores e subscritores. Existem diversas
soluções em termos de middleware para este tipo de protocolo: RTI (Real-Time Inovations), DDS (Data
Distribution Service) ou IPC (Inter-Process Communication). Muitos protocolos estão a convergir na direcção
do XML (Extensible Markup Language) para fazer a definição dos dados publicados, com a conveniência
acrescida de transmitir XML sobre HTTP, o que permite uma interoperabilidade significativa com aplicações
baseadas na Web. Este tipo de protocolos possuem algumas vantagens:
1. Utilização simples e com baixa latência;
2. Especialmente úteis quando é desconhecido o número e o tipo de componentes que vão necessitar de
uma fatia da informação (e.g., múltiplas interfaces homem-máquina);
3. Os componentes não ficam sobrecarregados com pedidos repetidos de informação provenientes de
diversas fontes.
Por outro lado,
1. É difícil de fazer a depuração de problemas, porque a sintaxe da mensagem é codificada de acordo
com as normas da W3C, fazendo com que os problemas apenas sejam revelados no momento de
execução, i.e., quando um componente tenta analisar a mensagem recebida;
2. Não são tão legíveis quando se trata de enviar ordens de um módulo para outro; em vez de evocar
um método explícito ou uma função com parâmetros, uma ordem é lançada fazendo a publicação da
mensagem com a respectiva ordem e parâmetros, sendo depois analisada pelo subscritor;
3. Utilizam muitas vezes um servidor central para enviar as mensagens para todos os subscritores,
fazendo que que este seja um potencial ponto de atrasos e ao mesmo tempo um ponto único de
ruptura global.
Um Web Service é uma aplicação que permite aos seus clientes o acesso às suas funcionalidades
ou serviços através de protocolos normalizados e ao mesmo tempo abertos. Esta abordagem garante a
interligação e interoperabilidade de modo a que a funcionalidade do Web Service seja acedida por virtual-
mente qualquer cliente independentemente da localização, linguagem de programação ou plataforma. Du,
Witkowski & Rückert [2005] desenvolveram uma interface através de Web Services para a operação remota
de um robô móvel. [Christo et al. 2009] extende o conceito para que os próprios agentes robóticos acedam
aos serviços prestados pelos Web Services (e.g., localização global fornecida por outros agentes presentes
no ambiente).
24
2.6 Sistemas em Tempo-Real
De acordo com Brooks [1986] o sistema de controlo para um robô móvel completamente autónomo tem de
realizar muitas tarefas de processamento de informação complexa em tempo-real (RT). Um sistema RT é
qualquer sistema que responde de forma determinística, sendo o tempo um recurso de importância fun-
damental e em que as actividades têm de ser escalonadas e executadas de modo a cumprir requisitos
temporais [Saksena & Selic 1999]. Estes requisitos podem ser classificados de restritos quando um atraso
tem consequências catastróficas para o sistema, ou latos quando um atraso pode ser tolerado pelo sistema.
Figura 2.9: Plataformas Xenomai e RTAI [Barbalace, Luchetta, Manduchi, Moro, Soppelsa & Taliercio 2008].
2.6.1 Plataformas de Desenvolvimento
Muitos sistemas robóticos utilizam plataformas de desenvolvimento em tempo-real como a QNX, LynxOS e
VxWorks [Sousa, Araújo, Nunes, Alves & Lopes 2007]. Embora possuam boas características e suporte,
têm custos elevados, bem como falta de drivers e expansibilidade. Algumas alternativas a estas plataformas
dispendiosas são desenvolvidas pela comunidade open source: RTLinux, RTAI ou Xenomai. Os dois últimos
consistem basicamente num micro-kernel adicionado a um kernel Linux anfitrião, que assim perde o controlo
das interrupções e do processador, Figura 2.9. Esta é uma alternativa atractiva pois não tem qualquer
custo monetário adicional e é possível interagir e aceder a todos os recursos Linux. Para além destes
motivos também é possível fazer o desenvolvimento de uma aplicação em tempo-real utilizando ferramentas
de programação gráfica como o Simulink® ou o Scicos® [e.g. Bucher & Balemi 2005, Bucher & Balemi 2006,
Bucher & Balemi 2008]. [Barbalace et al. 2008] fez uma comparação do desempenho das plataformas open
source com a plataforma VxWorks e concluiu que são alternativas válidas para controlo de sistemas em
tempo-real duro. De seguida são apresentadas algumas aplicações da plataforma RTAI.
O recente desenvolvimento de um sistema de transportes públicos baseou-se em veículos dotados com
capacidades autónomas, como o ilustrado na Figura 2.10. Nestes veículos encontram-se implementados
algoritmos de navegação em C++ numa plataforma RTAI [Pradalier, Hermosillo, Koike, Braillon, Bessière &
25
Figura 2.10: Robô móvel CyCab [Morette, Novales & Vieyres 2008].
Laugier 2005].
Uma plataforma RTAI foi também utilizada num portátil por cada agente da equipa CAMBADA, de forma
a executar funções de controlo de alto-nível e para integrar mais facilmente dispositivos de electrónica de
consumo, como câmaras com protocolos normalizados USB ou Firewire [Azevedo et al. 2009].
Os controladores dos actuadores do robô Robchair, ilustrado na Figura 2.11, têm cada um o seu tempo
de amostragem, peso computacional e constrangimento de tempo. Para garantir a execução de todos os
controladores sem violação dos constrangimentos impostos, Sousa et al. [2007] utilizaram um sistema RT
RTAI, e concluíram que a combinação entre as linguagens C/C++ e o respectivo sistema RT foram produtivas,
estáveis e com bom desempenho. Também é salientado o acesso a um vasto conjunto de recursos como
redes, gráficos e I/O de dispositivos.
Figura 2.11: Robô móvel Robchair [Sousa et al. 2007].
26
Capítulo 3
Metodologias Propostas
Neste capítulo são descritos os métodos propostos e respectivos conceitos teóricos necessários para resolu-
ção dos problemas de localização e de navegação do robô móvel Rasteirinho. O corpo principal encontra-se
dividido em quatro secções. A primeira descreve os avanços efectuados na arquitectura do sistema de com-
putação do robô, bem como o controlador PI implementado no microcontrolador. Na segunda parte, são
abordados os problemas de localização local (hodometria), localização global (iGPS) e sua combinação. O
projecto de trajectórias e dum controlador não linear para fazer o seu seguimento são apresentados depois,
como solução ao problema de navegação dum robô móvel. Por último, é apresentada a arquitectura de
comunicação entre os dois agentes (robô e iGPS) por intermédio de WS.
3.1 Desenvolvimento do Robô Móvel Rasteirinho
3.1.1 Arquitectura do Sistema de Computação do Robô
A estrutura de computação do robô Rasteirinho encontra-se dividida em duas camadas: a de baixo nível e
a de alto nível, Figura 3.1. A camada de baixo nível é responsável pelo controlo em anel fechado do robô
e está embebida num microcontrolador; enquanto que a camada de alto nível pode realizar funções mais
complexas, como o seguimento de trajectórias ou o processamento de imagem, e encontra-se embebida
num PC portátil, pois este tem mais recursos (e.g., computação, memória, etc) e ainda possui interfaces
diversas para comunicação com outros dispositivos e/ou agentes (e.g., Wi-Fi, USB, FireWire, ethernet, RS-
232, etc).
Analisando a estrutura já existente verificou-se que a comunicação existente entre as duas camadas
encontrava-se definida de forma unidireccional, i.e., o controlador de alto nível apenas envia as velocidades
angulares de cada roda para o controlador de baixo nível. Por outro lado, não se encontrava definido um
protocolo que assegurasse a correcta recepção da informação por parte dos portos de ambas as camadas.
Esta arquitectura tinha como propósito minimizar algumas características não lineares do sistema como,
diferenças nos dois motores DC, níveis de bateria diferentes, etc, e assim minimizar o efeito da dinâmica do
robô móvel Carvalho [2008].
27
Figura 3.1: Arquitectura de computação do robô Rasteirinho.
Para estimar a localização do robô por hodometria foi necessário acrescentar mais um sentido na comuni-
cação. Assim, foi desenvolvida uma comunicação bidireccional entre ambas as camadas, com um protocolo
bem definido, Figura 3.1, de modo a dar robustez ao sistema. A metodologia para implementar este tipo
de comunicação no microcontrolador é descrita no Algoritmo 3.1. Resumidamente este algoritmo tem em
consideração que a comunicação é feita via porta série, portanto os caracteres são enviados e recebidos um
a um como um conjunto de 8 bits, sendo posteriormente guardados numa zona de memória rápida (buffer).
Estes caracteres são verificados à chegada até ser encontrado o terminador da mensagem. Se a mensagem
contida no buffer até ao terminador for válida então é actualizada a referência do controlador. Neste momento
é de imediato enviada uma mensagem de resposta para o controlador de alto nível com os valores das ve-
locidades reais de cada roda e referências recebidas. Esta mensagem é depois validada no PC portátil do
mesmo modo que no microcontrolador. Para uma mensagem ser válida tem de ter a estrutura "#MSG/r/n",
em que "MSG" é a mensagem.
Entrada : Velocidades desejadasSaída: Velocidades reaisEnquanto microcontrolador ligado fazer
se interrupção porta série activada entãoler caracter;colocar caracter em buffer;se caracter terminador então
verificar tamanho da mensagem recebida;se tamanho da mensagem == 5 então
actualizar referência (entrada);enviar via porta série velocidades desejadas e reais;reset buffer;
senãoincrementar uma posição ao buffer;
fimsenão
incrementar uma posição ao buffer;fimse buffer > 20 então
reset buffer;fim
fimfim
Algoritmo 3.1 : Algoritmo embebido no microcontrolador para comunicação bidireccional.
Com a comunicação a ser efectuada nos dois sentidos foi possível estimar os parâmetros do modelo de
cada motor do robô móvel, para projecto dum controlador de baixo nível (seguimento de referências) e outro
de alto nível (seguimento de trajectórias) em ambiente de simulação, para posterior implementação.
28
3.1.2 Estimação dos Parâmetros dos Actuadores
O robô móvel Rasteirinho é constituído por dois motores eléctricos que podem ser modelados como um
sistema de segunda ordem se o objectivo for determinar a relação entre a entrada em tensão e a saída em
velocidade angular. De acordo com Dorf & Bishop [2008] a função de transferência que representa esta
relação é,
Φ(s)
V (s)=
KJL
s2 +JR+BL
JL s + BR+K 2
JL
(3.1)
em que Φ(s) é a velocidade angular, V (s) é a tensão aplicada, J e R são a inércia e a resistência do rotor, K
é a constante do binário, L a indutância e finalmente B é constante de atrito do binário.
Para completar a modelação do motor eléctrico foram ainda consideradas duas não linearidades:
1. Acção de controlo confinada ao intervalo [0,12] volts;
2. Cada motor tem o seu atrito estático e dinâmico.
Os parâmetros do sistema de segunda ordem 3.1 foram estimados através da aquisição de dados expe-
rimentais, obtidos através do envio dum comando (tensão pretendida nos motores) para a camada de baixo
nível, que por sua vez devolve a velocidade angular de cada roda à camada de alto nível, Algoritmo 3.2.
Enquanto microcontrolador ligado fazeractuar motores;se interrupção encoders activada então
verificar qual dos encoders activou a porta;incrementar contador de pulsos do respectivo encoder;
fimse interrupção relógio RTCC activada então /* Interrupção responsável pelo tempo de amostragem */
calcular velocidades reais;reset contador de pulsos dos dois encoder;
fimfim
Algoritmo 3.2 : Algoritmo embebido no microcontrolador para aquisição de dados.
O cálculo das velocidades reais de cada roda é efectuado pelo microcontrolador, que recebe a informação
proveniente dos encoders sob a forma de pulsos. Se o número de pulsos for dividido pelo seu tempo de
amostragem, Ts , e multiplicado por uma constante C , é possível calcular-se a velocidade angular de cada
roda, ωd e ωe , em r ad .s−1. O cálculo destas constantes é feito nas seguintes equações,
Ts =255
20M H z256×4×255
= 13.1 ms (3.2)
C =2π
400Ts≈ 1.2
r ad
N .s(3.3)
em que as quantidades envolvidas no cálculo de Ts estão directamente envolvidas com as características do
microcontrolador, e a expressão de C encontra-se relacionada com as propriedades dos encoders.
3.1.3 Controlador Embebido no Microcontrolador
Foi escolhido um controlador PI para controlar cada motor. São dois os motivos: primeiro, ser capaz de
reduzir o erro estacionário em relação à referência; segundo, por não ser necessário um termo derivativo
29
que eventualmente possa vir a causar o escorregamento do robô. O menor peso computacional também foi
tido em conta.
O projecto destes controladores teve em consideração dois requisitos fundamentais:
1. As respostas dos dois motores serem o mais semelhantes possível, de forma a evitar comportamentos
de fase não-mínima verificados por [Mestre 2008];
2. Os dois motores atingirem a referência de forma rápida, mas sem escorregamento das rodas.
Por outro lado, este controlador sendo linear, não vai corresponder sempre da forma projectada devido a, por
exemplo, comportamentos não lineares dos motores e baterias, ou a alterações no peso da carga do robô e
sua distribuição. Com as especificações de projecto em mente foi projectado o controlador discreto, Gc (z),
Gc (z)
Controlador PI
HGP (z)
Motoru(k)
Encoder
Medição
Vd + e(k) Velocidade Actual−
Velocidade Medida
Figura 3.2: Diagrama de blocos do anel de controlo implementado no microcontrolador.
ilustrado no diagrama de blocos da Figura 3.2. O cálculo da consequente acção de controlo, u(k) foi feito via
aproximação rectangular para a frente (Euler), pela seguinte equação às diferenças,
u(k) = u(k −1)+Kp
[
e(k)+T0
Tie(k −1)
]
(3.4)
em que os parâmetros a estimar são KP e Ti respectivamente. Uma estimativa inicial destes parâmetros foi
feita utilizando o método do ganho crítico proposto por Ziegler & Nichols [1942], sendo de seguida realizado
um ajusto fino até serem satisfeitos os requisitos já mencionados. O controlador foi depois implementado no
microcontrolador de acordo com Algoritmo 3.3.
Entrada : Velocidades desejadasSaída: Acção de controloEnquanto microcontrolador está ligado fazer
se interrupção encoders activada entãoverificar qual dos encoders activou a porta;incrementar contador de pulsos do respectivo encoder;
fimse interrupção relógio RTCC activada então /* Interrupção responsável pelo tempo de amostragem */
calcular velocidades reais;calcular acção de controlo (controlador PI);actuar motores;reset contador de pulsos dos dois encoder;
fimfim
Algoritmo 3.3 : Algoritmo embebido no microcontrolador para controlo do robô.
30
3.2 Localização do Robô Rasteirinho
A localização do robô móvel é feita por hodometria com correcções por parte do sistema iGPS. O primeiro
sistema permite estimar a localização por integração das velocidades das rodas do robô. Por outro lado,
o segundo sistema estima a localização global do robô através da utilização duma câmara montada no
tecto. Segue-se a descrição destes dois sistemas e a apresentação do FK como o método para combinar a
informação de ambos os sistemas. Mas antes uma breve observação.
Assunção 3.1. Nesta dissertação assumiu-se que a localização inicial do robô é sempre conhecida no
referencial global devido à existência do sistema iGPS. Para que esta suposição seja verdadeira o robô tem
de se encontrar inicialmente posicionado no campo de visão do iGPS.
y
x
θ
ω
v
P
O
yP
xP
yrxr
d
Figura 3.3: Referenciais global (Ox y) e móvel (P xr yr ).
3.2.1 Hodometria
No robô móvel Rasteirinho encontram-se dois sensores (encoders incrementais) cujo objectivo é fazer a
medição do deslocamento angular de cada roda, para posterior cálculo da respectiva velocidade angular.
Tendo em conta o modelo cinemático do robô e integrando as respectivas velocidades é possível obter o
deslocamento do centróide do robô no referencial global inercial (Ox y), Figura 3.2. O modelo cinemático de
um robô diferencial como o Rasteirinho é dado por,
x
y
θ
= g1(q)v + g2(q)ω=
cosθ
sinθ
0
v +
0
0
1
ω (3.5)
nas coordenadas generalizadas q = (x, y,θ). Este sistema de equações relaciona as velocidades no refer-
encial do robô, (v,ω), com as velocidades no referencial inercial, (x, y , θ). Para além deste modelo, um robô
diferencial deste género é caracterizado por ter constrangimentos não-holonómicos, i.e., constrangimentos
diferenciais não integráveis em relação às velocidades generalizadas. Este constrangimento indica que é
31
impossível ao robô ter velocidade perpendicular ao seu movimento,
x sinθ− y cosθ = 0 (3.6)
A velocidade linear e angular do robô, v e ω, são calculadas pelas equações 3.7 com o conhecimento das
respectivas velocidades angulares de cada roda, Ωd e Ωe .
v =r (Ωd +Ωe )
2, ω=
r (Ωd −Ωe )
d(3.7)
Sabendo v e ω é possível integrar numericamente o modelo cinemático discretizado, de forma a determinar
a postura do robô relativamente ao instante de tempo anterior. Com conhecimento da sua posição global
inicial obtém-se a postura global, (x, y,θ).
3.2.2 Sistema iGPS
No LCAR, foi instalado um sistema iGPS composto por uma câmara comum ligada a um PC, com o objectivo
de estimar a postura (posição e orientação) do robô Rasteirinho ao longo de uma área considerável. Por este
motivo, a câmara foi instalada perto do tecto, enquanto que dois alvos de cores distintas foram colocados
no robô de modo a determinar a sua postura, como ilustrado na Figura 3.4. Embora Carvalho [2008] tenha
desenvolvido um sistema semelhante, o método utilizado para identificação do robô era sensível às condições
de iluminação do ambiente interior. Por este motivo, foi utilizado um método mais robusto para classificação
da cor dos alvos, com base na distância de Mahalanobis proposto por [Christo et al. 2009]. Este método é
descrito de seguida, sendo depois abordado o problema de seguimento dos alvos e por último, o problema
de calibração da câmara. Mas antes duas breves notas sobre a montagem experimental do sistema iGPS.
Assunção 3.2. Ao longo desta dissertação considerou-se que a câmara instalada encontra-se a uma altura
fixa e orientada segundo o seu eixo óptico, Z, perpendicularmente ao chão. Deste modo pode-se desprezar
a orientação da câmara.
Assunção 3.3. O centróide do alvo amarelo, que se encontra sensivelmente sobre as duas rodas motrizes,
representa o centróide do robô. Assim, o sistema iGPS para determinar a localização do robô apenas tem
de seguir o centróide do alvo amarelo. Ambos os alvos em conjunto têm como objectivo estimar a orientação
do robô.
Identificação dos Alvos
A postura do robô pode ser estimada pelo sistema iGPS através da colocação de dois alvos no robô - um
de cor amarelo à frente e outro de cor azul atrás. Assim, numa primeira fase estimaram-se os valores dos
parâmetros de cada modelo de cor do respectivo alvo; e numa segunda fase utilizaram-se estes parâmetros
para o cálculo da distância de Mahalanobis durante a execução do sistema iGPS desenvolvido. A câmara
presente no tecto envia imagens no espaço de cores RGB que depois são convertidas para o espaço YCbCr.
32
Figura 3.4: Representação do Sistema iGPS e do robô móvel Rasteirinho com os respectivos alvos.
Este é um espaço de cores uniforme que descreve uma imagem em termos de brilho (Y ) e de cor (Cb ,Cr )
através da seguinte relação,
Y
Cb
Cr
=
0.2989 0.5866 0.1145
−0.1688 −0.3312 0.5000
0.5000 −0.4184 −0.0816
R
G
B
(3.8)
Os valores dos canais da imagem Cb e Cr vão servir para estimar os parâmetros do modelo da cor de
cada um dos alvos, enquanto que o canal Y não é contabilizado, pois não contém informação sobre a cor.
Os parâmetros necessários para definir o modelo são: a média e a covariância entre os dois canais (Cb ,Cr ),
equações 3.9. Para os estimar foi recolhido experimentalmente um conjunto de Ni amostras de cada conjunto
i = Cb,Cr , representativos de uma região de interesse da imagem, i.e., uma zona onde todos os píxeis
pertencem ao alvo a identificar, x j .
µi ,1
N
N∑
j=1
x j e cov(xC bj , xCr
j ), E [(xC bj −µC b)(xCr
j −µCr )]; (3.9)
Sabendo os valores dos dois parâmetros de cada modelo de cor (média e covariância) utilizou-se o Algoritmo
3.4 para fazer a classificação dos píxeis recolhidos pela câmara. De seguida, são apresentados os métodos
utilizados pelo respectivo algoritmo: a matriz de distâncias de Mahalanobis, o filtro FIR, o filtro de média e a
formação de conjuntos de píxeis.
Matriz de Distâncias de Mahalanobis. A matriz de distâncias de Mahalanobis é calculada da seguinte
maneira,
M(x j ,µi ,ci ), (x j −µi )T c−1i (x j −µi ) (3.10)
33
Entrada : imagem RGB; µik ; cik com i = Cb,Cr e k = al vo1 ,al vo2
Saída: imagem bináriaEnquanto camera estiver ligada fazer
converter imagem RGB para espaço de cores YCbCr;Para cada cork fazer
calcular M(x j ,µi ,ci );aplicar filtro FIR;se M(x j ,µi ,ci ) < Θ então
píxel ∈ a cork ;senão
píxel ∉ a cork ;fimaplicar filtro de mediana;formar conjuntos de píxeis ∈ cork ;Para cada conjuntom , m = 1,2 fazer
se conjuntom ≥ λ píxeis então∃ al vok ;
senãoØ al vok ;
fimfim
fimfim
Algoritmo 3.4 : Algoritmo de visão para detectar de alvos.
onde x j = [Cb;Cr ] representa os dois canais Cb e Cr da imagem adquirida. Quanto menor for esta
distância mais perto estará um píxel do centro do cluster com coordenadas (µC b ,µCr ).
Filtro FIR 2D. Um filtro FIR baseia-se no método da convolução. A ideia básica subjacente neste filtro é
fazer com que uma janela, de tamanho e forma finitos, faça o varrimento da imagem de forma a torná-
la mais suave ou mais aguçada, dependendo dos coeficientes projectados para o filtro. Assim, o valor
final de cada píxel da imagem é a soma pesada do valor inicial dos píxeis pertencentes à janela, em
que os pesos são os coeficientes do filtro atribuídos a cada píxel da própria janela.
Dada uma imagem de dimensão M × N e um filtro h( j ,k) de dimensões J ×K (considerando que as
coordenadas ( j ,k) = (0,0) encontram-se no centro do filtro) então o integral de convolução pode ser
escrito como uma soma finita,
C (m,n) =J−1∑
j=0
K−1∑
k=0
h( j ,k)∗a(m − j ,n−k) (3.11)
em que m = 0,1, . . . , M ; n = 0,1, . . . , N e a operação de convolução é representada por ∗. Desta
operação obtém-se a imagem filtrada.
Filtro de Mediana. Segundo Gonzalez & Woods [2007] o filtro de mediana é o filtro estatístico mais utilizado
no processamento de imagem devido às excelentes características para a remoção de ruído. Como o
próprio nome indica, é utilizada a mediana dos píxeis vizinhos de um determinado píxel, para deter-
minar o seu valor. Entenda-se o conceito de vizinhos como os píxeis pertencentes a um subconjunto
da imagem à excepção do seu centro. Sendo (x, y) a coordenada de um pixel de uma determinada
imagem, Sx y uma vizinhança centrada nesse ponto com tamanho fixo, e g (s, t) o valor do píxel em
coordenadas do subconjunto, é possível definir a imagem filtrada como,
f (x, y) =mediana(s,t )∈Sx y
g (s, t) (3.12)
34
Operações Morfológicas. Ao contrário dos filtros abordados anteriormente para o processamento de im-
agem, em que uma imagem continua uma imagem após o processamento, as operações morfológicas
são capazes de realçar características dando assim "significado" à respectiva imagem, [Gonzalez &
Woods 2007]. Nesta dissertação, a única característica que interessa identificar na imagem são os
alvos que determinam a postura do robô; estes têm geometria circular, portanto podem ser utiliza-
dos elementos estruturais com a forma dum disco, com raio r , para os alvos ficarem com uma forma
definida e suave. Assim, é necessário primeiro efectuar uma operação de dilatação seguida de uma
operação de erosão, ou matematicamente,
A •B = (A⊕B)⊖B (3.13)
em que A é a imagem binária e B é o elemento estrutural escolhido para realizar as operações mor-
fológicas.
Seguimento de um Alvo
Geralmente o seguimento de objectos é feito através dum FK, de modo a lidar com o ruído introduzido pelo
sensor CMOS. Este filtro recursivo estatístico encontra-se descrito com detalhe em [Welch & Bishop 1995].
Nesta dissertação, o estado de cada alvo é representado pela sua posição (x, y) e pela respectiva velocidade
(vx , vy ); portanto estas quatro variáveis são os elementos do vector de estados xk do sistema que se assume
linear. Para o seguimento do centróide de um alvo é necessário ter em consideração que a nova posição
(x, y) é a anterior mais a velocidade (d x,d y) e o ruído associado. Assim, a matriz de transição de estados,
A, é preenchida da forma ilustrada na equação 3.14, enquanto que a matriz de observações, H , tem em
consideração apenas a medição da posição do centróide do alvo.
A =
1 0 1 0
0 1 0 1
0 0 1 0
0 0 0 1
, H =
1 0 0 0
0 1 0 0
(3.14)
A representação em espaço de estados fica,
xk = Axk−1 +wk−1 (3.15)
zk = H xk + vk (3.16)
em que o ruído do processo, wk , e o ruído das observações, vk , seguem uma distribuição Gaussiana N (0,Qk)
e N (0,Rk ).
Calibração da Câmara
O mundo em que vivemos é tridimensional, portanto qualquer ponto no seu espaço pode ser especificado
por três coordenadas (X,Y,Z). Por outro lado, numa imagem, um ponto é representado por apenas duas
35
O
i
j
Plano da
Imag
em
Q = (X ,Y , Z )
q = (x, y, f )Eixo Óptico
kf
Figura 3.5: Representação do modelo duma câmara tipo pinhole simplificado.
coordenadas (x,y), visto que se encontra num plano bidimensional. É possível representar este fenómeno
físico de uma forma muito simples: através do modelo de uma câmara tipo pinhole. Este modelo, utilizado
por [e.g. Silva 2008, Carvalho 2008, Blanco 2009], considera que a luz do cenário é projectada no plano
da imagem da câmara, mas apenas um único raio vindo de um ponto particular da envolvente é que é
projectado. Como resultado a imagem projectada no seu plano encontra-se sempre focada e o seu tamanho
relativamente a um objecto distante é dada apenas por um único parâmetro da câmara: a sua distância
focal, f . Conhecendo esta distância e observando a Figura 3.5 verifica-se pela relação entre triângulos
semelhantes que,x
f=
X
Z,
y
f=
Y
Z(3.17)
Deste modo consegue-se determinar a posição do ponto Q no referencial global (i , j , k), em relação ao
centro de projecção O. De notar que a intersecção do eixo óptico com o plano da imagem tem o nome de
ponto principal. Segundo Bradski & Kaehler [2008] o centro de um sensor CMOS embebido em câmaras
comuns geralmente não se encontra sobre o eixo óptico, sendo necessário introduzir no modelo da câmara
a translação do ponto principal,
x = fx
(
X
Z
)
+cx , y = fy
(
Y
Z
)
+cy (3.18)
Distorção. O modelo utilizado considera que os raios de luz atravessam um pinhole, portanto são muito
poucos os raios adquiridos por unidade de tempo para que se possa formar uma imagem a uma
frequência de amostragem rápida. Este problema é ultrapassado através da utilização de lentes; estas
conseguem fazer convergir mais raios de luz de uma área maior para depois focá-los no sensor da
câmara. Contudo, esta solução introduz distorção na imagem adquirida, que, de acordo com Bradski
& Kaehler [2008] pode ser de dois tipos: radial e tangencial; a distorção radial é devida à forma da
lente, enquanto que a distorção tangencial é devida à lente não ser completamente paralela ao plano
da imagem. Nesta dissertação foi considerada apenas a distorção radial que segundo [Zhang 1999]
é a mais significativa numa câmara comum. Na prática esta distorção é pequena pelo que pode ser
36
caracterizada pelos primeiros dois termos da expansão de Taylor na vizinhança de r = 0 [Heikkilä &
Silven 1997]. De notar que apenas os termos de potência par são considerados devido à simetria em
r do polinómio. Deste modo a função da distorção fica,
xc = x(1+k1r 2 +k2r 4) (3.19)
yc = y(1+k1r 2+k2r 4)
em que r 2 = x2 + y2, (x, y) corresponde à localização inicial do ponto distorcido no plano da imagem e
(xc , yc ) corresponde à localização do ponto corrigido.
Calibração. Depois de abordados os conceitos teóricos fundamentais sobre a modelação de uma câmara
comum, e de serem apresentadas as propriedades intrínsecas e de distorção de uma câmara comum,
é necessário fazer a calibração da câmara utilizada pelo sistema iGPS. Com este objectivo em mente,
utilizou-se a ferramenta Camera Calibration Toolbox for Matlab® desenvolvida por [Bouguet 2008], que
exprime as ideias e metodologias apresentadas em diversas publicações na respectiva área cientifica
[e.g. Brown 1971, Tsai 1987, Heikkilä & Silven 1997, Clarke & Fryer 1998, Sturm & Maybank 1999,
Zhang 1999]. Mais concretamente, são estimados os seguintes parâmetros: distância focal f , centro
óptico c, factores de distorção radial kc , coeficiente de torção αc e a matriz da câmara dada por,
K K =
fx αc fx cx
0 fy cy
0 0 1
(3.20)
O procedimento efectuado foi o seguinte:
1. Colocar um alvo com padrão xadrez no campo de visão da câmara;
2. Fazer aquisição de 20 fotografias, com o alvo em diferentes posições e orientações;
3. Seguir instruções da toolbox já referida;
4. Guardar parâmetros já referidos.
Localização do Alvo. Supondo que um alvo se encontra no campo de visão da câmara, o sistema iGPS
tem agora a capacidade de estimar a sua localização no sistema métrico. Assim, se o centro dum alvo
é detectado no píxel (x, y) e tendo em conta a suposição 3.2, a localização do alvo pode ser estimada
em relação ao referencial global coincidente com a câmara (X0,Y0, Z0) fazendo:
1. Normalizar centróide de acordo com [Bouguet 2008]. Resulta (xn , yn);
2. Para (xn , yn ), calcular r =
√
x2n + y2
n ;
3. Determinar (xc , yc ) através da função de distorção, equações 3.19. Resulta uma nova posição
sem distorção radial, (xd , yd ). k1ek2 são obtidos no processo de calibração (kc );
4. Finalmente a localização métrico do alvo no referencial global, (X0,Y0, Z0), é calculada aplicando
a seguinte equação,
X = xc Z , Y = yc Z , Z = h, (3.21)
37
sendo h a altura da câmara relativamente ao alvo.
3.2.3 Localização Híbrida
O robô móvel pode aproveitar a informação de localização global do sistema iGPS, de forma a corrigir o erro
acumulado devido à natureza do sistema de hodometria. Com este sistema híbrido é possível corrigir erros
de seguimento de trajectórias do robô ou, fazer com que o robô recupere de perturbações externas.
A combinação da informação é feita por um FK para seguimento do erro entre os dois sistemas de
localização (hodometria e iGPS), como descrito pelo Algoritmo 3.5. Para além dos estados de localização
também foram inseridas as velocidades linear e angular do robô, fazendo um total de cinco estados,(
ex
ey eθ v ω)
. As matrizes do processo, A, e de observações, H , são construídas de forma semelhante às
anteriores, utilizadas para seguimento dos alvos na secção 3.2.2.
Para cada instante de amostragem Ts fazerEnviar pedido de localização a WS;Receber informação de iGPS via WS ;se robô visível por sistema iGPS então
Reset integradores cinemáticos da localização;Activar FK;Calcular erro entre de localização entre robô e iGPS;FK realiza procedimento de correcção e previsão do erro;Adicionar erro filtrado a localização do robô por hodometria;
senãoLocalização por hodometria;
fimfim
Algoritmo 3.5 : Algoritmo de relocalização do robô com FK.
3.3 Navegação dum Robô Móvel
Nesta dissertação, o problema de navegação foi dividido em dois sub-problemas: primeiro, projectar uma
trajectória que cumpra o constrangimento não-holonómico inerente ao robô e ao mesmo tempo as limitações
dos actuadores/sensores; segundo, projectar um controlador capaz de fazer o seguimento da trajectórias.
Desta forma, são apresentadas nesta secção as metodologias propostas a estes dois sub-problemas.
3.3.1 Projecto de Trajectórias
É pretendido que um ponto representativo do centróide do robô, (x, y), siga uma trajectória cartesiana
(xd (t), yd (t)), com t ∈ [0,T ]. Relembrando que o modelo cinemático do robô é dado por,
x
y
θ
= g1(q)v + g2(q)ω=
cosθ
sinθ
0
v +
0
0
1
ω (3.22)
de forma a determinar a orientação do robô fica,
θ = AT AN 2(y , x)+kπ, k = 0,1, . . . (3.23)
38
onde AT AN 2 é função inversa da tangente definida nos quatro quadrantes, i.e., definida entre [0,2π]. A
velocidade linear e angular do robô podem ser calculadas por,
vd (t)=±
√
x2d
(t)+ y2d
(t) (3.24)
ωd (t)=yd (t)xd (t)− xd (t)yd (t)
x2d
(t)+ y2d
(t)(3.25)
onde a velocidade angular é obtida derivando a equação 3.23 em ordem ao tempo. Uma propriedade deste
tipo de robôs é que, dada uma configuração inicial e uma trajectória consistente (xd (t), yd (t), xd (t), yd (t)),
existe apenas uma única trajectória associada, qd (t) =(
xd (t), yd (t),θd (t))
que pode ser calculada de um
modo puramente geométrico,
θd (t)= AT AN 2(
yd (t), xd (t))
+kπ, k = 0,1, . . . (3.26)
A trajectória cartesiana pode representar uma circunferência, uma sinusóide, um lemniscata, etc, de uma
forma parametrizada. No capítulo seguinte encontram-se definidas as trajectórias utilizadas. De notar que
as velocidades desejadas para o robô devem ser inferiores aos limites dos actuadores e sensores,
vd ≤ vm ax , ωd ≤ωmax (3.27)
3.3.2 Controlador para Seguimento de Trajectórias
Para que o robô seja capaz de seguir as trajectórias definidas foi necessário implementar um controlador,
para além do que existe no microcontrolador. O estudo da controlabilidade do robô é feita de seguida segundo
De Luca et al. [2001]. Definindo o erro de seguimento em torno da trajectória, qd (t), como q = q − qd e as
variações das acções de controlo como v = v − vd e ω = ω−ωd , é necessário fazer a linearização deste
sistema em torno da trajectória, visto que o modelo cinemático do robô não é controlável. Deste modo fica,
˙q =
0 0 −vd sinθd
0 0 vd cosθd
0 0 0
q +
cosθd 0
sinθd 0
0 0
v
ω
= A(t)q +B(t)
v
ω
(3.28)
Como o sistema linearizado é variante no tempo, uma condição de controlabilidade necessária e suficiente
é que o Gramiano da controlabilidade seja não singular. Contudo, uma análise mais simples pode ser feita
definindo o erro de seguimento dos estados através duma matriz de rotação,
qR =
cosθd sinθd 0
−sinθd cosθd 0
0 0 1
q (3.29)
39
Utilizando a equação 3.28 obtém-se,
˙qR =
0 ωd 0
−ωd 0 vd
0 0 0
qR +
1 0
0 0
0 1
v
ω
(3.30)
Quando vd e ωd são constantes o sistema linear acima torna-se invariante no tempo e controlável, pois a
matriz de controlabilidade,
C =
[
B AB A2B
]
=
1 0 0 0 −ω2d
vdωd
0 0 −ωd vd 0 0
0 1 0 0 0 0
(3.31)
tem característica 3 quando vd e ωd não são nulos. Assim é possível concluir que o sistema cinemático
pode ser localmente estabilizado por realimentação linear em torno de uma trajectória que consiste em
caminhos lineares ou circulares, executados a velocidades constantes. É possível utilizar técnicas de projecto
lineares de modo a obter estabilização local para trajectórias arbitrárias, mas possíveis, i.e., que satisfaçam
o constrangimento não-holonómico.
Visto que é possível fazer com que o robô tenda assimptoticamente para a referência é agora projectado
o controlador linear. Considerando que o erro se encontra definido em relação à orientação do robô num
dado instante de tempo, Figura 3.6, fica,
e1
e2
e3
=
cosθ sinθ 0
−sinθ cosθ 0
0 0 1
xd − x
yd − y
θd −θ
(3.32)
e utilizando a transformação de coordenadas do erro e o modelo cinemático do robô, equação 3.22, resulta
Figura 3.6: Erros de seguimento no referencial do robô [Klancar 2005].
40
o seguinte modelo cinemático do erro,
e =
cose3 0
sin e3 0
0 1
vd
ωd
+
−1 e2
0 −e1
0 −1
v
ω
(3.33)
Considerando que as acções de controlo (v,ω) são compostas pela diferença entre a componente directa e
a componente proveniente da realimentação,
v = vd cose3 −u1 (3.34)
ω=ωd −u2
resulta a seguinte equação,
e =
0 ωd 0
−ωd 0 0
0 0 0
e +
0
sin e3
0
vd +
1 0
0 0
0 1
u1
u2
(3.35)
que linearizada em torno da trajectória de referência permite obter as mesmas equações 3.33 (lineares e
variantes no tempo), mas agora com estado e e acções de controlo,
u1 =−k1 e1 (3.36)
u2 =−k2si g n(vd (t)) e2 −k3 e3
A determinação dos ganhos do controlador (k1,k2,k3) é feita utilizando a equação característica do anel
fechado,
(λ+2ζa)(λ2+2ζaλ+a2), ζ, a > 0 (3.37)
que pode ter valores próprios constantes (um valor próprio negativo real em −2ζa e um par complexo com
uma frequência angular natural a > 0 e coeficiente de amortecimento ζ ∈ (0,1)) se os ganhos das equações
3.36 forem definidos da seguinte forma,
k1 = k3 = 2ζa , k2 =a2 −wd (t)2
|vd (t)|(3.38)
Contudo k2 vai tender para infinito à medida que vd → 0. Para resolver este problema é possível aplicar uma
relação de ganhos fazendo a = a(t)=√
ω2d
(t)+bv2d
(t) de modo a que,
k1 = k3 = 2ζ√
ω2d
(t)+bv2d
(t) , k2 = b|vd (t)| (3.39)
onde o factor b > 0 é um grau de liberdade adicional do controlador. De acordo com a análise de controlabili-
dade feita por De Luca et al. [2001], estes ganhos tendem para zero quando a controlabilidade local em torno
41
da trajectória é perdida, i.e., quando o robô pára. Em termos das acções de controlo originais, esta abor-
dagem leva a um controlador não linear variante no tempo. É de realçar que mesmo que os valores próprios,
λ, sejam constantes com parte real negativa, esta lei de controlo não garante a estabilidade assimptótica do
erro de seguimento dos estados e, porque o sistema é variante no tempo. A lei de controlo força os erros e1 e
e3 a tenderem para zero, mas por outro lado nem sempre isto acontece para e2. Quando o robô se encontra
paralelo à trajectória, e1 = e2 = 0, e2 , 0 e a velocidade de referência vd = 0 o controlador não força e2 → 0,
contudo este erro encontra-se sempre confinado nesta situação [Klancar 2005].
Finalmente as acções de controlo (v,ω) são convertidas em velocidades angulares das rodas através das
seguintes equações,
Ωd =(v +ωd/2)
r, Ωe =
(v −ωd/2)
r(3.40)
3.4 Comunicação entre Agentes
A comunicação entre os dois agentes presentes no ambiente, robô móvel e iGPS, é essencial para a localiza-
ção híbrida do robô. Este encontra-se equipado com encoders para se localizar, mas com o passar do tempo
estes sensores são cada vez menos precisos devido ao acumular de erros [Borenstein et al. 1997]. Assim,
torna-se essencial o sistema iGPS como referência para correcção da posição do robô. A comunicação entre
estes agentes é feita através de WS.
3.4.1 Web Services
Os WS foram desenvolvidos para facilitar a interacção entre aplicações informáticas numa rede, como por
exemplo a internet. A comunicação é feita através de mensagens SOAP, escritas em XML e transportadas
normalmente sobre HTTP, de modo a ultrapassar constrangimentos de segurança ou firewalls. Nestas men-
sagens são descritos os pedidos, bem como o resultado do pedido de um cliente (aplicação).
Para um cliente descobrir um serviço apenas tem de se encaminhar a um repositório UDDI, onde pode
encontrar o serviço que necessita. Por outro lado, uma aplicação que disponibilize um serviço, tem de se
registar previamente nesse repositório. Este processo de procura/registo é feito utilizando mensagens XML
com especificação WSDL desenvolvida pelo W3C. Ver Figura 3.7.
Como vantagens, para além da facilidade de comunicação através de uma rede segura, estes serviços
têm subjacentes tecnologias que são abertas e bastante conhecidas (e.g. HTTP, SOAP, WSDL, UDDI, XML).
O seu desenvolvimento pode ser feito em diversas linguagens de programação (e.g. Java, C++, VB, C#), o
que faz com que as aplicações possam ser feitas para qualquer sistema operativo que tenha o ambiente de
desenvolvimento da linguagem. Outra vantagem baseia-se no facto de que os consumidores de um WS não
necessitam ter conhecimento acerca da plataforma ou linguagem de programação utilizada para implemen-
tar o serviço; apenas necessitam de perceber como enviar e receber mensagens SOAP. Nesta dissertação,
o sistema iGPS, descrito na secção anterior, pode ser visto como um agente capaz de fornecer serviços a
outros agentes, como por exemplo; localizar robôs no seu campo de visão, detectar obstáculos para alertar
um robô que esteja próximo. Para isto ser possível tem de ser estabelecida uma comunicação entre am-
bos. Deste modo, utilizou-se um WS desenvolvido por Christo & Cardeira [2007a], onde se encontram dois
42
Figura 3.7: Diagrama representativo da relação Cliente/Serviço no contexto de WS.
métodos disponíveis: Write_Position e Get_Position. É evidente que o primeiro método vai ser invocado
pelo sistema iGPS para enviar a localização do robô para uma base de dados. O segundo é invocado pelo
robô para actualizar a sua posição global. A adopção deste tipo de serviços permite o encapsulamento da
comunicação entre os agentes, que juntamente com as vantagens descritas acima, facilitam a integração de
novos agentes no meio.
Figura 3.8: Arquitectura de comunicação entre agentes: iGPS e robô Rasteirinho.
3.4.2 Interface Agentes - Web Services
O sistema iGPS, bem como o controlador de alto nível do robô Rasteirinho foram desenvolvidos no software
Matlab®/Simulink®; portanto, foi necessário implementar uma interface entre a aplicação Matlab®e o WS.
Esta interface, ilustrada na Figura 3.9, foi realizada da mesma forma para ambos os agentes, com apenas a
nuance de cada agente invocar o método que corresponde às suas necessidades.
Assim, foi criado um servidor OLE no Matlab® para que um agente possa comunicar com a biblioteca
COM, onde se encontram os métodos disponibilizados pelo WS. Depois, este concretiza a função desejada
43
de acordo com o método invocado pelo agente; no caso do robô, o WS apenas acede a um registo de
posições (RP) para ir buscar o valor da sua localização e depois devolvê-lo, enquanto que no caso do iGPS,
o WS actualiza a posição do robô no RP.
Figura 3.9: Representação da interface Agentes - WS.
44
Capítulo 4
Implementação e Resultados
Neste capítulo são apresentadas implementações e respectivos resultados relativamente à localização do
robô e sua navegação. Na primeira secção encontram-se os resultados de simulação e experimentais do
desenvolvimento do robô, ou seja, são estimados os parâmetros dos modelos dos motores e do controlador
PI. Na secção 4.2 é descrita a implementação do sistema iGPS, dividida em três partes: estimação das
características dos alvos, seguimento e calibração da câmara. Na secção 4.3 são apresentados os resul-
tados relativamente aos dois sistemas de localização, assim como do sistema navegação do robô para três
trajectórias distintas: circunferência, sinusóide e lemniscata. Na secção 4.4 é descrita a implementação do
FK para combinação dos dados dos dois sistemas de localização de forma a corrigir a localização do robô.
São apresentados os resultados para o caso duma trajectória circular.
4.1 Robô Móvel
O protocolo de comunicação (Algoritmo 3.1) e os algoritmos para identificar e controlar o robô (3.2 e 3.3),
foram implementados na linguagem C e depois transformados em hexadecimais pelo compilador CCS, para
finalmente serem programados na memória do respectivo microcontrolador. Uma descrição detalhada das
configurações da porta série do PC, bem como o diagrama I/O do microcontrolador e uma breve explicação do
seu funcionamento, podem ser encontrados no Apêndice A. O código desenvolvido para o microcontrolador
encontra-se no Apêndice D.
De seguida, são estimados os parâmetros da função de transferência dos motores do robô, equação 3.1.
4.1.1 Estimação dos Parâmetros dos Actuadores
A aquisição dos dados experimentais com vista à estimação os parâmetros dos modelos foi feita em três
fases,
1. Variar a tensão nos motores até estes se encontrarem no limite da zona-morta;
2. Aplicar degrau de dois volts;
3. Guardar dados (velocidade angular das duas rodas).
45
Estimaram-se os parâmetros de um modelo ARX de segunda ordem através da toolbox de identificação de
sistemas do Matlab®. Foram obtidas as seguintes funções de transferência,
G(s)d to. =3.492
s2 +39.52s +102.2, G(s)esq. =
7.081
s2 +59.17s +208.6(4.1)
Nas Figuras 4.1(a) e 4.1(b) encontram-se ilustrados o sinal de identificação, as velocidades angulares adquiri-
das pelo microcontrolador e a saída dos modelos identificados. Foram adicionados alguns constrangimentos
à acção de controlo, para a modelação do veículo ficar mais completa: a acção de controlo foi constringida ao
intervalo [0,15] rad/s e considerou-se que existem dois tipos de atrito relativamente aos motores, o estático
e o dinâmico.
Atrito [volts] Motor dto. Motor esq.Estático 1.17 1.05Dinâmico 0.70 0.59
Tabela 4.1: Atrito estático e dinâmico de cada actuador do robô.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
1
2
3
4
5
6
7
8
(a) Motor direito: degrau (−−) (volts), ωr eal (−) (rad/s)ωmodel o (−−−) (rad/s) vs. tempo(s)
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
1
2
3
4
5
6
7
8
(b) Motor esquerdo: degrau (−−)(volts), ωr eal (−), ωmodel o(−−−) (rad/s) vs. tempo (s)
Figura 4.1: Resultados da identificação dos motores do robô.
4.1.2 Controlador Embebido no Microcontrolador
Resultados de Simulação
O controlador PI foi primeiro testado em ambiente de simulação, encontrando-se na Tabela 4.2 os parâmetros
escolhidos KP , Ti e T0 de forma a cumprir as especificações de projecto descritas na secção 3.1.3. Na Figura
4.2 é possível observar-se as respostas de ambos os modelos e respectivas acções de controlo. A simulação
foi realizada em Simulink®.
KP Ti T0
Motor dto. 5 0.1 0.04Motor esq. 3 0.12 0.04
Tabela 4.2: Ganhos do controlador PI implementado em Simulink®.
46
Observando as respostas dos dois motores à referência ω = 5 rad/s, Figura 4.2(a), identificaram-se os
parâmetros indicados na Tabela 4.3. Registaram-se também as acções de controlo em cada motor, ilustradas
na Figura 4.2(b). De notar que estas são suaves e não saturam para as velocidades angulares pedidas.
ts [s] tp [s] MP [%]
Motor dto. 0.28 0.297 20
Motor esq. 0.32 0.493 20
Tabela 4.3: Parâmetros da resposta dos motores (simulação).
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
1
2
3
4
5
6
(a) Resposta dos dois motores com controlador PI: Ωr e f(−−), Ωd (−−−), Ωe (−) (rad/s) vs. tempo (s).
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
(b) Acções de controlo nos motores direito (−−−) e esquerdo(−): Tensão (volts) vs. tempo (s).
Figura 4.2: Resposta dos motores direito e esquerdo devida a acção de controlo com controlador PI projec-tado.
Resultados Experimentais
No LCAR foi testado o controlador projectado no veículo Rasteirinho. Primeiro, foi necessário programar o
microcontrolador e de seguida efectuar uma afinação dos parâmetros do controlador. Assim obtiveram-se os
ganhos da Tabela 4.4. A resposta dos dois motores é ilustrada na Figura 4.3(a) e pode ser definida pelos
KP Ti T0
Motor dto. 6 0.24 0.04Motor esq. 4 0.16 0.04
Tabela 4.4: Ganhos do controlador PI implementado no veículo.
parâmetros Tabela 4.5. Como seria de esperar os dois motores têm comportamentos semelhantes, visto que
foram enviadas referências de velocidade iguais para os motores e o controlador.
Comparando com os parâmetros identificados na simulação é possível verificar que os motores têm na
realidade um tempo de subida e de pico mais longos.
tr [s] tp [s] MP [%] ess[%]
Motor dto. 0.84 1.2 20 20
Motor esq. 0.84 1.08 20 20
Tabela 4.5: Parâmetros da resposta experimental.
Com estas velocidades o robô percorreu o caminho ilustrado na Figura 4.3(b) e 4.4.
47
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
1
2
3
4
5
6
7
8
9
10
(a) Resposta dos motores, direito (−−−) e esquerdo (−), areferência (−−): ω (rad/s) vs. tempo (s)
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5−0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
(b) Trajectória seguida pelo robô: x (−−−), y (−) (m), θ(−−)
(rad) vs. tempo (s).
Figura 4.3: Resposta dos motores do robô a referência de 5 rad/s.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9−0.5
−0.4
−0.3
−0.2
−0.1
0
0.1
0.2
0.3
0.4
0.5
Figura 4.4: Caminho percorrido pelo robô com referência de 5 rad/s: x (m) vs. y (m).
4.2 Sistema iGPS
Os métodos descritos na secção 3.2.2 foram implementados em Simulink® , e como resultado obteve-se o
modelo da Figura B.3. A execução deste modelo permite estimar a localização do robô por intermédio da
identificação de um alvo amarelo e outro azul, como ilustrado na Figura 4.6(a). A identificação dos principais
parâmetros utilizados na identificação dos alvos é descrita de seguida.
4.2.1 Identificação das Propriedades dos Alvos
Foi feita a aquisição de cerca de dez segundos de vídeo no espaço de cores Y CB Cr . A zona de interesse do
vídeo de onde se retirou a informação, (Cb ,Cr ), encontrava-se localizada directamente sobre os píxeis que
contêm os alvos. Os valores estimados da média e covariância destes dois canais de cor, para cada alvo,
encontram-se na Tabela 4.6. Com estes parâmetros, pode-se efectuar o cálculo da distância de Mahalanobis
para cada um dos píxeis do vídeo adquirido, Figura 4.5. Observando esta imagem, é possível verificar que
todos os píxeis se encontram a uma distância inferior a 40, relativamente à média. Este, é um valor que pode
ser utilizado para definir a fronteira, no respectivo espaço de cores, entre os pontos pertencentes ao alvo e
os não pertencentes ao alvo. Como a imagem do vídeo tem algum ruído foi escolhida uma distância mais
curta, que permita reduzir o número de classificações erradas. Depois de diversas observações empíricas,
optou-se pela distância 25 para ambas as cores. O resultado da aplicação desta distância, juntamente com
48
CorMédi a inv(Cov)
Cb Cr inv(Cov1,1) inv(Cov1,2) inv(Cov21 ) i nv(Cov2,2)
Amarelo 92.0 148.8 0.10 0.02 0.02 0.11
Azul 143.0 98.7 0.15 0.16 0.16 0.27
Tabela 4.6: Média e covariância dos canais de cor (Cb ,Cr ) dos dois alvos.
Figura 4.5: Média e distância de Mahalanobis de ambas as cores.
as técnicas de processamento e segmentação de imagem descritas na secção 3.2, permitiram a identificação
dos dois alvos sob a forma binária, Figura 4.6(b).
4.2.2 Seguimento do Robô
O seguimento do robô foi feito através do FK descrito na secção 3.2.2. As matrizes de covariância do ruído
do processo e das medições, w e v , foram determinadas por observação empírica,
w = di ag(
0.5 0.5 0.5 0.5)
, v = di ag(
2 2)
(4.2)
(a) Robô identificado pelo sistema iGPS. (b) Imagem binária resultante da aplicaçãoda distância de Mahalanobis e técnicasde processamento de imagem.
Figura 4.6: Imagem adquirida pelo sistema iGPS com identificação dos dois alvos do robô.
49
(a) (b)
Figura 4.7: Duas das vinte imagens que serviram para calibrar a câmara.
−1 −0.5 0 0.5 1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
x
y
Figura 4.8: Erro de projecção: x (píxel) vs. y (píxel).
4.2.3 Calibração da Câmara
Ao longo do procedimento de calibração da câmara foram utilizadas vinte imagens, das quais, duas encontram-
se ilustradas na Figura 4.7. No fim deste procedimento foram devolvidos os erros de projecção dos cantos do
padrão xadrez, estimados de forma automática. Este é um erro geométrico que corresponde à distância na
imagem, entre o ponto projectado e o medido, e que é utilizado para quantificar o quão bem uma estimativa
de um ponto tridimensional recria a verdadeira projecção do ponto. Verifica-se pela Figura 4.8 que este erro
encontra-se limitado no intervalo ±1 píxel.
Obtiveram-se também os diversos parâmetros da câmara, como o centro da imagem da câmara, cc, em
píxeis, a distância focal e o factor de correcção,
cc =
(
98.4 , 72.9
)
, f c =
(
248.3 , 248.8
)
, kc =
(
−0.2673 , 0.7268
)
(4.3)
A matriz de calibração fica,
K K =
248.3 0 98.4
0 248.8 72.9
0 0 1
(4.4)
Sabendo que a câmara se encontra a uma altura Z = 7.865 m relativamente ao plano dos alvos do robô,
então é possível determinar a localização do robô com base nas propriedades estimadas da câmara, como
descrito na secção 3.2.2.
50
(a) Modelo completo da distorção da câmara identificadodurante calibração. Os símbolos, × e , representamo centro da imagem e a localização do ponto principal.Isolinhas representam conjuntos de pontos com deslo-camentos iguais (píxeis). x (píxel) vs. y (píxel).
(b) Erro radial estimado da distorção da câmara (píxeis). Ossímbolos, × e , representam o centro da imagem e alocalização do ponto principal. x (píxel) vs. y (píxel)
(c) Erro tangencial estimado da distorção da câmara (píx-eis). Os símbolos, × e , representam o centro da im-agem e a localização do ponto principal. x (píxel) vs. y(píxel)
Figura 4.9: Erros total, radial e tangencial da câmara, estimados experimentalmente.
A Figura 4.9(a) mostra o impacto do modelo completo de distorção (radial e tangencial) em cada píxel
da imagem. Cada seta representa o deslocamento efectivo de um píxel induzido pela distorção da lente.
Reparar que os pontos nos cantos superior e inferior esquerdo têm deslocamentos na ordem dos 4.5 píxeis e
nos cantos opostos praticamente não há distorção. Na Figura 4.9(b) é apresentado o impacto da componente
radial da distorção, e verifica-se que é muito semelhante ao modelo total de distorção, excepto no primeiro
quadrante, que devido à contribuição da componente tangencial, anulam-se. A componente tangencial da
distorção é apresentada na Figura 4.9(c), e o deslocamento máximo induzido é de 2 píxeis (no canto inferior
esquerdo).
4.3 Localização e Navegação
Como foi referido no capítulo anterior, a arquitectura do robô móvel encontra-se dividida em duas camadas;
uma assente num PC portátil e outra num microcontrolador. Na secção 4.1 foi abordada a implementação do
controlador da camada de baixo nível. Agora, na camada de alto nível, foi utilizada a plataforma Simulink®
51
para implementar o controlador não linear, descrito na secção 3.3.2. Sendo esta uma ferramenta de sim-
ulação, foi fundamental introduzir o bloco Real-Time, Rouleau [2009], com um factor de escala igual a 1
segundo. Este bloco permite controlar o modo como o tempo de simulação avança, com a finalidade de
realizar a comunicação com o microcontrolador em tempo real aproximado. Resultados experimentais e de
simulação foram obtidos para as seguintes trajectórias: circunferência, sinusóide e lemniscata.
Outro pormenor de implementação, relembrando que a orientação do robô é calculada através da função
AT AN 2, esta repete-se a cada 2π, provocando uma descontinuidade na orientação, e ao mesmo tempo
prejudicando a estabilidade do controlador. Desta forma, torna-se fundamental aplicar o Algoritmo 4.1 no
Simulink®, como ilustrado na Figura 4.10.
O controlador tem apenas dois graus de liberdade, i.e., dois parâmetros que permitem modificar o seu
comportamento, ζ e b. Para as três trajectórias projectadas os parâmetros utilizados encontram-se na Tabela
4.7. As acções de controlo desejadas, vd e ωd , envolvidas na lei de controlo, são calculadas de acordo com
a equação 3.24.
Entrada : OrientaçãoSaída: Orientação corrigidaCalcular declive entre orientação actual e anterior;se |decl i ve| > 5 então
Adicionar 2πsi g n(decl i ve) à orientação;fim
Algoritmo 4.1 : Algoritmo para corrigir orientação do robô.
u2>5
sign
theta _star
1
z
1
k*2*pi
slope
+/− k*2pi
1
2*pi
0
|u|
theta
1
Figura 4.10: Correcção da orientação do robô.
Trajectória ζ b
Circular 0.4 7Sinusoidal 0.7 5Lemniscata 0.7 5
Tabela 4.7: Parâmetros do controlador utilizados nas três trajectórias.
De notar que o erro associado ao seguimento da trajectória encontra-se normalizado de acordo com
[De Luca et al. 2001]. Este é definido como,
en =
√
(ex coseθ)2 + (ey sin eθ)2 (4.5)
Nesta dissertação a localização inicial do robô é sempre conhecida e encontra-se num referencial fixo
52
definido pelo sistema iGPS. Assim, o robô é sempre informado da sua localização global antes de iniciar as
suas tarefas. A configuração inicial do robô foi sempre coincidente com as condições iniciais da trajectória
de forma a não excitar a dinâmica do robô e comprometer a sua estabilidade.
Com o objectivo de comparar os resultados de simulação com os experimentais, primeiro foram realizados
os ensaios experimentais e só depois é que foram executados os modelos de simulação com os mesmos
parâmetros do controlador, sendo esta a ordem pela qual os resultados se encontram ordenados.
Circunferência
A circunferência foi definida pelas seguintes equações paramétricas,
xd (t) = 1.76+0.6cos(ωt), (4.6)
yd (t) = 0.84+0.6sin(ωt),
onde t ∈ [0,16] segundos e ω= 2πt f
rad/s. Esta é uma trajectória com acções de controlo constantes, v e ω, e
por isso o robô não apresenta dificuldades no seu seguimento, como demonstram os seguintes resultados.
Os resultados experimentais desta trajectória encontram-se ilustrados nas Figuras 4.11. Observando a
Figura 4.11(g), verifica-se que a hodometria tem erros muito pequenos (na ordem dos centímetros), que por
vezes não correspondem à realidade, pois observando o caminho percorrido pelo robô segundo o iGPS,
Figura 4.11(a), existe um pequeno erro na direcção radial que não é observável pelo robô, devido a acumu-
lação de erros dos respectivos sensores. Na Figura 4.11(h) os dois erros (posição e orientação) entre os
dois sistemas de localização, já se encontram na ordem dos decímetros. Para além disso a sua diferença
aumentou ao longo do tempo. As acções de controlo v e ω, Figuras 4.11(e) e 4.11(e), são bruscas no inicio
devido à velocidade nula do robô, e depois tendem para a referência, por onde ficam de forma oscilatória.
Os resultados de simulação encontram-se ilustrados nas Figuras 4.12. Verifica-se que o erro de segui-
mento é menor que o experimental. O seguimento da trajectória é semelhante ao experimental, Figuras
4.12(b) 4.12(c) e 4.12(d). As acções de controlo, Figuras 4.12(e) e 4.12(f), permitem o seguimento quase
perfeito da trajectória, embora tenham oscilações muito rápidas em torno das referências, tendo portanto,
dinâmicas um pouco diferentes das verificadas experimentalmente.
Sinusóide
A trajectória sinusóide é definida pelas seguintes equações paramétricas,
xd (t)= 0.31+0.5sin(ωt) (4.7)
yd (t)= 1+ωt
4
onde t ∈ [0,20] segundos, ω= 2πt f
. Esta é uma trajectória que excita o robô com variações rápidas na veloci-
dade das referências, provocando alguns problemas no seu seguimento.
Os resultados experimentais desta trajectória encontram-se ilustrados nas Figuras 4.13. Em relação aos
erros são semelhantes aos da trajectória circular. As acções de controlo v e ω, Figuras 4.13(e) e 4.13(e),
53
estão constantemente a variar, com um bom seguimento por parte do controlador.
Os resultados de simulação encontram-se ilustrados nas Figuras 4.14. O seguimento da trajectória é
semelhante ao experimental, Figuras 4.14(b) 4.14(c) e 4.14(d). As acções de controlo, Figuras 4.12(e) e
4.12(f), permitem o seguimento quase perfeito da trajectória.
Lemniscata
A trajectória lemniscata é definida pelas seguintes equações paramétricas,
xd (t)= 1.31+0.6sin(t/6) (4.8)
yd (t)= 0.99+0.6sin(t/3)
onde t ∈ [0,37.8] segundos. Esta é uma trajectória que de forma persistente excita o robô com alterações
bruscas na velocidade das referências, provocando alguns erros de seguimento.
Os resultados experimentais desta trajectória encontram-se ilustrados nas Figuras 4.15. Observando a
Figura 4.15(g), verifica-se que o erro encontra-se na mesma ordem de grandeza que o anterior, assim como
os dois erros de comparação dos dois sistemas de localização Figura 4.15(h), embora haja uns picos na
orientação devidos a limitações de cálculo.
Os resultados de simulação encontram-se ilustrados nas Figuras 4.15. Verifica-se que a trajectória efec-
tuada é muito semelhante à experimental, Figuras 4.16(b), 4.16(c) e 4.16(d). As acções de controlo seguem
melhor as referências que experimentalmente.
54
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 5 10 15 20 25 300.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 300
0.5
1
1.5
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 301
2
3
4
5
6
7
8
9
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 300
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
(g) Evolução do erro normalizado en (m) vs. tempo(s).
0 5 10 15 20 25 300
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(h) Evolução dos erros entre robô e iGPS: (−) (m),orientação (−−) (rad) vs. tempo (s).
Figura 4.11: Resultados experimentais trajectória circular.
55
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), posição inicial e final ().
0 5 10 15 20 25 300
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 300
0.5
1
1.5
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 300
1
2
3
4
5
6
7
8
9
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 300
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.1
0.2
0.3
0.4
0.5
0.6
0.7
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.005
0.01
0.015
0.02
0.025
0.03
(g) Evolução do erro normalizado: en (m) vs. tempo(s).
Figura 4.12: Resultados de simulação para trajectória circular.
56
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 5 10 15 20 25 300.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 300.2
0.4
0.6
0.8
1
1.2
1.4
1.6
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 30−1.5
−1
−0.5
0
0.5
1
1.5
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 300
0.05
0.1
0.15
0.2
0.25
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.01
0.02
0.03
0.04
0.05
0.06
(g) Evolução do erro normalizado en (m) vs. tempo(s).
0 5 10 15 20 25 300
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(h) Evolução dos erros entre robô e iGPS: posição(−) (m), orientação (−−) (rad) vs. tempo (s).
Figura 4.13: Resultados experimentais trajectória sinusoidal.
57
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), posição inicial e final ().
0 5 10 15 20 25 300
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 300
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 30−1.5
−1
−0.5
0
0.5
1
1.5
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 300
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0.2
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 300
0.005
0.01
0.015
0.02
0.025
0.03
0.035
(g) Evolução do erro normalizado: en (m) vs. tempo(s).
Figura 4.14: Resultados de simulação para sinusóide.
58
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 5 10 15 20 25 30 35 40 45 500.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
2.2
2.4
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 30 35 40 45 500
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 30 35 40 45 50−5
−4
−3
−2
−1
0
1
2
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 5 10 15 20 25 30 35 40 45 500
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30 35 40 45 50−1.5
−1
−0.5
0
0.5
1
1.5
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30 35 40 45 500
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
(g) Evolução do erro normalizado en (m) vs. tempo(s).
0 5 10 15 20 25 30 35 40 45 500
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(h) Evolução dos erros entre robô e iGPS:posição(−) (m), orientação (−−) (rad) vs. tempo(s).
Figura 4.15: Resultados experimentais trajectória oito.
59
0 0.5 1 1.5 2 2.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 5 10 15 20 25 30 35 40 45 500
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 30 35 40 45 500
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 30 35 40 45 50−5
−4
−3
−2
−1
0
1
2
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−).
0 5 10 15 20 25 30 35 40 45 500
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30 35 40 45 50−1.5
−1
−0.5
0
0.5
1
1.5
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 5 10 15 20 25 30 35 40 45 500
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
(g) Evolução do erro normalizado: en (m) vs. tempo(s).
Figura 4.16: Resultados de simulação para oito.
60
4.4 Relocalização
Nesta secção, são apresentados os resultados dos problemas de localização e navegação com o auxílio do
sistema iGPS. A experiência laboratorial tem por base uma trajectória circular idêntica à utilizada na secção
anterior, com a nuance do número de voltas ter aumentado para dez. O objectivo é corrigir o potencial
erro proveniente do sistema de hodometria ao longo das dez voltas, através da combinação das medições
dos dois sistemas de localização e também das velocidades reais do robô. Por sua vez, os parâmetros do
controlador foram mantidos constantes.
Para que fosse possível uma análise comparativa, foram realizados dois ensaios experimentais:
1. A localização do robô é estimada por um FK que combina a informação de localização local (hodome-
tria) com a informação de localização global (iGPS) e com as velocidades actuais do robô (v , ω).
2. A localização do robô é apenas feita pelo sistema de hodometria, como na secção anterior.
4.4.1 Filtro de Kalman
A combinação da informação proveniente dos dois sistemas foi realizada por um FK implementado da forma
ilustrada na Figura 4.17 em Simulink®. A matriz de transição de estados, A, e a matriz de observações, H,
robo*
1
KalmanFilter
Z
Enable
Z
Z_estZ_estZ_estZ_estZ_estZ_est
iGPS visivel
3
iGPS
2
robo
1
Figura 4.17: Relocalização do robô: combinação da informação através de FK.
encontram-se já definidas na secção 3.2. Por outro lado, os ruídos do processo e das observações foram
determinados por observação empírica,
w = di ag(
1 1 1 1 1 1)
, v = di ag(
1 1 1)
(4.9)
4.4.2 Ensaio 1
Os resultados do primeiro ensaio encontram-se na Figura 4.18. Pode-se concluir pela evolução do estado
do robô, (x(t), y(t),θ(t)), que a combinação da informação leva à correcção do erro de hodometria, Figuras
4.18(b), 4.18(c), 4.18(d). Observando o erro normalizado verifica-se que o valor máximo de erro é de 12 cm,
enquanto que o erro dos dois sistemas de localização é no máximo 8 cm, Figuras 4.18(g) e 4.18(h). Por outro
lado, as acções de controlo são muito rápidas, de forma a minimizar o erro de localização, Figuras 4.18(e) e
4.18(f).
61
4.4.3 Ensaio 2
Os resultados do segundo ensaio encontram-se na Figura 4.19. Estes resultados mostram que o robô já
não se encontrava nas mesmas condições que na secção anterior, quando realizou a primeira circunferên-
cia. No inicio do movimento o robô descreveu uma trajectória muito larga, quase saindo da zona do iGPS,
Figura 4.19(a). Este facto por si só explica o porquê de no ensaio anterior, a primeira volta se diferenciar
das restantes, Figura 4.18(a). As restantes voltas deste segundo ensaio decorreram em torno duma circun-
ferência com outro centro, fazendo com que metade de cada volta não seja perceptível ao sistema iGPS,
Figura 4.19(a). Embora as acções de controlo estejam perto das respectivas referências e o erro seja muito
pequeno, Figura 4.19(g), a verdade, é que de acordo com a informação proveniente do sistema iGPS, o erro
normalizado chega a atingir os 1.6 m, Figura 4.19(h).
Analisando estes resultados e comparando com o objectivo inicial de corrigir apenas os erros de hodome-
tria do robô, verificou-se que o sistema de localização híbrido, para além de relocalizar o robô, também tem
o papel de supervisionar o comportamento do robô, pelo seguimento do erro entre os dois sistemas de
localização e das velocidades linear e angular do robô.
62
0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 20 40 60 80 100 120 140 160 1800.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
2.2
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 1800
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 1800
10
20
30
40
50
60
70
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 1800
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 20 40 60 80 100 120 140 160 180−0.2
0
0.2
0.4
0.6
0.8
1
1.2
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 20 40 60 80 100 120 140 1600
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0.2
(g) Evolução do erro normalizado en (m) vs. tempo(s).
0 20 40 60 80 100 120 140 1600
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0.2
(h) Evolução do erro normalizado de seguimentoentre robô e iGPS: erro (m) vs. tempo (s).
Figura 4.18: Resultados experimentais trajectória oito.
63
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(a) Caminho percorrido, x (m) vs. y (m): referência(−−), robô (−), iGPS (−.), posição inicial e final().
0 20 40 60 80 100 120 140 160 1800
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(b) Evolução de x (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 1800
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(c) Evolução de y (m) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 180−10
0
10
20
30
40
50
60
70
(d) Evolução de θ (rad) vs. tempo (s): referência(−−), robô (−), iGPS (−.).
0 20 40 60 80 100 120 140 160 1800
0.05
0.1
0.15
0.2
0.25
0.3
0.35
(e) Evolução de v (m/s) vs. tempo (s):referência(−−), real(−).
0 20 40 60 80 100 120 140 160 1800
0.1
0.2
0.3
0.4
0.5
0.6
0.7
(f) Evolução de ω (rad/s) vs. tempo (s):referência(−−), real(−).
0 20 40 60 80 100 120 140 1600
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
0.2
(g) Evolução do erro normalizado en (m) vs. tempo(s).
0 20 40 60 80 100 120 140 160 1800
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
(h) Evolução do erro normalizado de seguimentoentre robô e iGPS: erro (m) vs. tempo (s).
Figura 4.19: Resultados experimentais trajectória oito.
64
Capítulo 5
Conclusões e Trabalhos Futuros
5.1 Conclusões
Os métodos aplicados nesta dissertação permitiram relocalizar correctamente o robô móvel diferencial,
Rasteirinho, num recinto fechado. A localização local do robô foi delegada ao sistema de hodometria, en-
quanto que a localização global ficou a cargo do sistema iGPS. Um filtro de Kalman foi utilizado para combinar
a informação dos dois sistemas de modo a corrigir falhas inerentes ao sistema de hodometria. O problema
de navegação foi resolvido com a implementação dum controlador não linear capaz de fazer o seguimento
de trajectórias. Foi ainda realizada a integração dos dois agentes (robô e iGPS) na arquitectura SOA desen-
volvida por Christo & Cardeira [2007b], através de uma interface COM desenvolvida entre agentes e Web
Services .
A evolução efectuada na arquitectura de computação do robô, i.e., a comunicação bidireccional entre a
camada de alto nível e a de baixo nível, com um protocolo bem definido, fez com que fosse possível localizar
o robô com base em hodometria, assim como, conferiu-lhe maior estabilidade. O controlador PI melhorou
substancialmente o desempenho do robô para baixas velocidades, permitindo o seu movimento contínuo,
equilibrado e estável, e corrigiu os problemas detectados por [Mestre 2008].
Os resultados de simulação e experimentais demonstraram que o controlador não linear implementado
faz muito bem o seguimento de trajectórias, embora, segundo [Kozlowski et al. 2006] a afinação intuitiva dos
parâmetros do controlador e boa qualidade das acções de controlo durante o regime transiente continuam a
ser problemas abertos e requerem mais investigação.
A aquisição dos modelos dos motores permitiu obter um modelo para simulação do robô. Porém, foi
verificado que os modelos estimados tiveram pouca utilidade para este trabalho experimental. Isto deve-se
a dois motivos: os modelos de segunda ordem apenas representam uma versão simplificada dos motores e;
os modelos foram estimados para um ponto de operação definido pela velocidade angular da roda. Na ver-
dade, este ponto de operação é função de outros parâmetros não lineares, como a diferença de tensão nas
65
baterias. Outro pormenor prende-se com o facto de ambos os motores serem iguais, mas encontrarem-se
montados de forma simétrica, o que faz com que o atrito dinâmico e a folga em cada motor sejam diferentes,
levando a comportamentos erráticos do robô (rotações), aquando de acelerações/desacelerações bruscas.
Este facto explica o comportamento do robô quando sujeito a correcções de localização menos frequentes.
Isto porque, foi verificado no decorrer desta dissertação que não é possível relocalizar o robô com tempos
de amostragem muito elevados, pois teoricamente o erro de localização aumenta, levando a que o robô ul-
trapasse os limites para os quais foi projectado, de forma a corrigir a sua localização. Esta reacção provoca
movimentos menos próprios e expõe de forma clara as limitações do robô.
O sistema iGPS desenvolvido faz a identificação e seguimento do robô de forma excepcional, como é
visível nos resultados experimentais, secção 4.3. A distância de Mahalanobis foi crucial para o bom desem-
penho do sistema de seguimento com filtro de Kalman. A calibração da câmara, por sua vez, foi fundamental
para se comparar a informação dos dois sistemas de localização no mesmo sistema métrico. Apenas foi uti-
lizado o modelo de distorção radial, embora, após calibração se tenha verificado que a distorção tangencial
era mais influente do que inicialmente previsto. Assim foi porque, depois de diversas medições e ensaios
experimentais, se chegou à conclusão que o erro do modelo de distorção utilizado não era crítico para ser
aplicado nesta dissertação.
A informação dos dois sistemas de localização foi relacionada por intermédio de um filtro de Kalman,
de forma a corrigir a postura do robô num recinto fechado. Esta correcção revelou ser uma mais valia,
tanto para o problema de localização, como para o de navegação, visto que, o robô é relocalizado de forma
suave através do seguimento do erro de localização e das velocidades do robô. Esta abordagem foi robusta
o suficiente para ultrapassar os comportamentos não lineares do robô já abordados, de acordo com os
resultados obtidos na secção 4.4.
5.2 Trabalhos Futuros
A localização e navegação de robôs móveis são dois problemas que podem ser tão complexos quanto se
queira. Embora as aplicações sejam mais apelativas, ainda não é possível antever uma aplicação para esta
dissertação, pois ainda são necessários inúmeros passos intermédios. Desta forma, serão abordados os
passos intermédios, e no final serão apresentadas algumas aplicações. Como extensão a esta dissertação,
• No lugar de o microcontrolador enviar as velocidades instantâneas de cada roda, passar a enviar o seu
deslocamento angular. Assim, é necessário estimar de novo os parâmetros dos modelos dos motores,
que segundo Dorf & Bishop [2008] é de terceira ordem. A utilização de um ICD é fundamental.
• Um controlador para seguimento de caminhos ou estabilização de posturas, no lugar do seguimento de
trajectórias. Isto porque, ao se utilizar um sistema de computação não determinístico é mais correcto
não ter em consideração as especificações de tempo do caminho a percorrer.
• Aumentar as capacidades sensoriais do robô (e.g., visão, sensores de distância), sem esquecer a
66
quarta condição de Brooks, secção 2.5, de forma a implementar uma arquitectura SPA, mas com o
intuito de tornar a passagem para arquitectura 3T mais simples, visto que a sua complexidade é maior.
• Fazer o planeamento de caminhos num ambiente com obstáculos estáticos através de algoritmos como
o A∗, o Bug1, Bug2 ou Bug tangente.
• Aumentar a zona supervisionada com câmara ethernet já existente no laboratório.
• O sistema iGPS para além de prestar o serviço de localização, poderia vir a detectar obstáculos, sem
esquecer a quarta condição de Brooks.
• Actualizar Web Services para lidar com concorrência de recursos.
Portanto, o objectivo é tornar o robô cada vez mais autónomo, de modo a conseguir fazer tarefas básicas
como transporte de peças na zona da célula, servir de guia aos alunos do secundário, desligar as luzes do
laboratório ao fim do dia, realizar tarefas como se fossem serviços disponibilizados na internet, ou mesmo,
só para desenvolver ferramentas que possam ser úteis em outros projectos públicos.
67
68
Referências
Arkin, R. [1987], Motor schema based navigation for a mobile robot: An approach to programming by behavior,
em ‘Proceedings of the IEEE’, Vol. 4, International Conference on Robotics and Automation, pp. 264–
271.
Arkin, R.C. & T. Balch [1997], ‘Aura: Principles and practice in review’, Journal of Experimental and Theoretical
Artificial Intelligence 9, 175–189.
Atiya, S. & G.D. Hager [1993], Real-time vision-based robot localization, em ‘Proceedings of the IEEE’, Vol. 9,
Transactions on Robotics and Automation, pp. 785–800.
Azevedo, J.L., M.B. Cunha & L. Almeida [2007], Hierarchical distributed architectures for autonomous mobile
robots: a case study, em ‘Proceedings of ETFA 2007’, 12th IEEE Conference on Emerging Technologies
and Factory Automation, Patras (Grece), pp. 973–980.
Azevedo, J.L., M.B. Cunha, N. Lau, A. Neves, G. Corrente, F. Santos, A. Pereira, L. Almeida, L.S. Lopes, P.
Pedreiras, J. Vieira, D. Martins, N. Figueiredo, J. Silva, N. Filipe & I. Pinheiro [2009], Cambada 2009:
Team description paper, Technical report, RoboCup 2009, Graz, Austria.
Baggio, A. & K. Langendoen [2006], Mobile Ad-hoc and Sensor Networks, Vol. 4325/2006 of Lecture Notes in
Computer Science, Springer Berlin / Heidelberg, capítulo Monte-Carlo Localization for Mobile Wireless
Sensor Networks, pp. 317–328.
Bar-Shalom, Y. & T. Foreman [1988], Tracking and Data Association, Academic Press Inc.
Barbalace, A., A. Luchetta, G. Manduchi, M. Moro, A. Soppelsa & C. Taliercio [2008], ‘Performance compari-
son of VxWorks, Linux, RTAI and Xenomai in a hard real-time application’, IEEE Transactions on Nuclear
Science 55(1), 435–439.
Barron, J., D. Fileet & S. Beauchemin [1994], ‘Performance of optical flow techniques’, International Journal
of Computer Vision 14(1), 43–77.
Barshan, B. & H.F. Durrant-Whyte [1995], Inertial navigation systems for mobile robots, em ‘Proceedings of
the IEEE’, Vol. 3, Transactions on Robotics and Automation, pp. 328–342.
Bekey, G., R. Ambrose, V. Kumar, A. Sanderson, B. Wilcox & Y. Zheng [2006], International assessment of
research and development in robotics, Technical report, World Technology Evaluation Center.
69
Bhattacharya, R. [2006], OPTRAGEN: A MATLAB toolbox for optimal trajectory generation, em ‘Proceedings
of the 45th IEEE’, Conference on Decision and Control, San Diego, CA, EUA, pp. 6832–6836.
Blanco, F. [2009], CT image based 3d reconstruction for computer aided orthopaedic surgery, Dissertação de
Mestrado, Universidade Técnica de Lisboa, Instituto Superior Técnico.
Bonasso, R.P. [1991], Integrating reaction plans and layered competences through synchronous control, em
‘IJCAI’91: Proceedings of the 12th international joint conference on Artificial intelligence’, Morgan Kauf-
mann Publishers Inc., San Francisco, CA, USA, pp. 1225–1231.
Bonasso, R.P., D. Kortenkamp, D.P. Miller & M. Slack [1997], ‘Experiences with an architecture for intelligent,
reactive agents’, Journal of Experimental and Theoretical Artificial Intelligence 9(2), 237–256.
Bonnifait, P.and G. Garcia [1996], A multisensor localization algorithm for mobile robots and its real-time
experimental validation, em ‘Proceedings of the IEEE’, Vol. 2, International Conference on Robotics and
Automation, Minneapolis, Minnesota, pp. 1395 – 1400.
Borenstein, J., H.R. Everett, L. Feng & D. Wehe [1997], ‘Mobile robot positioning: Sensors and techniques’,
Journal of Robotic Systems 14(4), 231–249. artigo convidado.
Bouguet, J.-Y. [2008], ‘Camera calibration toolbox for Matlab®’, ht t p :
//w w w.vi si on.cal tech.edu/boug uet j /cali b_doc/.
Bouguet, J.-Y. & P. Perona [1995], Visual navigation using a single camera, em ‘Proceedings of the 5th
International Conference on Computer Vision’, Cambridge, EUA, pp. 645–652.
Bradski, Gary & Adrian Kaehler [2008], Learning OpenCV - Computer Vision with the OpenCV Library,
O’Reilly, capítulo Camera Models and Calibration, pp. 370–404.
Broida, T. & R. Chellappa [1986], ‘Estimation of object motion parameters from noisy images’, IEEE Transac-
tions on Pattern Analysis and Machine Intelligence 8(1), 90–99.
Brooks, R.A. [1986], ‘A robust layered control system for a mobile robot’, IEEE Journal of Robotics and
Automation RA-2(1), 14–23.
Brown, D.C. [1971], Close-range camera calibration, Symposium on Close-Range Photogrammetry, Urbana,
Illinois.
Bucher, R. & S. Balemi [2005], Scilab/Scicos and Linux RTAI - a unified approach, em ‘Proceeding of the 2005
IEEE’, Conference on Control Applications, Toronto, Canadá, pp. 1121–1126.
Bucher, R. & S. Balemi [2006], ‘Rapid controller prototyping with Matlab/Simulink and Linux’, Control Engi-
neering Practice 14(2), 185–192. Special Section on Advances in Control Education.
Bucher, R. & S. Balemi [2008], CAN-bus based rapid control prototyping system for education laboratories,
em ‘Proceedings of the 17th World Congress’, The International Federation of Automatic Control, Seoul,
Korea, pp. 9761–9766.
70
Byrne, R.H. [1993], Global positioning system receiver evaluation results, Sandia Report SAND93-0827,
Sandia National Laboratories, Albuquerque, NM.
Byrne, R.H., P.R. Klarer & J.B. Pletta [1992], Techniques for autonomous navigation, Sandia Report SAND92-
0457, Sandia National Laboratories, Albuquerque, NM.
Canny, J. [1986], ‘A computational approach to edge detection’, IEEE Transactions on Pattern Analysis and
Machine Intelligence 8(6), 679–698.
Canudas de Wit, C., H. Khennouf, C. Samson & O. Sordalen [1993], Recent Trends in Mobile Robots, Vol. 11
of World Scientific Series in Robotics and Intelligent Systems, World Scientific Publisher, capítulo Non-
linear control design for mobile robots, pp. 121–156.
Cardeira, C. & J. Sá da Costa [2005], A low cost mobile robot for engineering education, em ‘Proceed-
ings of IECON 2005’, 31st Annual Conference of the IEEE Industrial Electronics Society, Raleigh, USA,
pp. 2162–2167.
Carvalho, E. [2008], Localization and cooperation of mobile robots applied to formation control, Dissertação
de Mestrado, Universidade Técnica de Lisboa, Instituto Superior Técnico, Lisboa, Portugal.
Caselles, V., R. Kimmel. & G. Sapiro [1999], Geodesic active contours, em ‘IEEE International Conference
on Computer Vision (ICCV)’, Vol. 2, Computer Society Conference on Computer Vision and Pattern
Recognition, pp. 694–699.
Choset, H. [1996], Sensor Based Motion Planning: The Hierarchical Generalized Voronoi Graph, Tese de
Doutoramento, California Institute of Technology, Pasadena, Califórnia.
Christo, C. & C. Cardeira [2007a], Plug-and-play autonomous mobile robot (p&pamr), em ‘Proceedings of the
IEEE’, International Symposium on Industrial Electronics (ISIE2007), Vigo, Espanha, pp. 3215–3220.
Christo, C. & C. Cardeira [2007b], Service oriented architecture for mobile robot localization, em ‘Proceedings
of ETFA 2007’, IEEE Conference on Emerging Technologies and Factory Automation, Patras, Greece,
pp. 888–891.
Christo, C., E. Carvalho, M.P. Silva & C. Cardeira [2009], Autonomous mobile robots localization with multiples
iGPS Web Services, em ‘Proceedings of 14th IEEE’, Conference on Emerging Technologies and Factory
Automation ETFA 2009, Maiorca, Espanha. CD-ROM.
Clarke, T.A. & J.G. Fryer [1998], The development of camera calibration methods and models, Vol. 16, Black-
well Publishing and the Remote Sensing and Photogrammetric Society, pp. 51–66.
Comaniciu, D. & P. Meer [1999], Mean shift analysis and applications, em ‘IEEE International Conference
on Computer Vision (ICCV)’, Vol. 2, Computer Society Conference on Computer Vision and Pattern
Recognition, pp. 1197–1203.
Connell, J. [1992], Sss: A hybrid architecture applied to robot navigation, em ‘Proceedings of the IEEE’,
International Conference on Robotics and Automation, Nice, França, pp. 2719–2724.
71
Cox, I.J. [1991], ‘Blanche - an experiment in guidance and navigation of an autonomous robot vehicle’, IEEE
Transactions on Robotics and Automation 7(2), 193–204.
Cox, I.J. [1993], ‘A review of statistical data association techniques for motion correspondence’, International
Journal of Computer Vision 10(1), 53–66.
Cox, I.J. & S.L. Hingorani [1996], ‘An efficient implementation of Reid’s multiple hypothesis tracking algorithm
and its evaluation for the purpose of visual tracking’, IEEE Transactions on Pattern Analysis and Machine
Intelligence 18(2), 138–150.
d’Andréa Novel, B., G. Campion & G. Bastin [1995], ‘Control of nonholonomic wheeled mobile robots by state
feedback linearization’, International Journal of Robotics Research 14(6), 543–559.
De Luca, A. & G. Oriolo [1995], Kinematics and Dynamics of Multi-Body Systems, Springer-Verlag, capítulo
Modeling and control of nonholonomic mechanical systems, pp. 277–342.
De Luca, A., G. Oriolo & M. Vendittelli [2001], Articulated and Mobile Robotics for Services and Technology,
Vol. 270 of Lecture Notes in Control and Information Sciences, Springer, capítulo Control of Wheeled
Mobile Robots: An Experimental Overview, pp. 181–226.
Dorf, R. & R. Bishop [2008], Modern Control Systems, 11ª ed., Pearson Prentice-Hall, capítulo Mathematical
Models of Systems, pp. 42–144.
Du, J.L., U. Witkowski & U. Rückert [2005], Teleoperation of a mobile autonomous robot using web services,
em ‘Proceedings of the 3rd International Symposium on Autonomous Minirobots for Research and Edu-
tainment (AMiRE 2005)’, Springer Berlin Heidelberg, pp. 55–60.
Durrant-Whyte, H. & T.C. Henderson [2008], Handbook of Robotics, Springer, capítulo Multisensor Data Fu-
sion, pp. 585–610.
Fernández, I., M. Mazo, J.L. Lázaro, D. Pizarro, E. Santiso, P. Martín & C. Losada [2007], ‘Guidance of
a mobile robot using an array of static cameras located in the environment’, Journal of Autonomous
Robots 23(4), 305–324.
Firby, R.J. [1987], An investigation into reactive planning in complex domains, em ‘Proceedings of the AAAI’,
pp. 202–206.
Firby, R.J. [1989], Adaptive Execution in Complex Dynamic Worlds, Tese de Doutoramento, Yale University,
New Haven.
Fox, D., J. Hightower, L. Liao, D. Schulz & G. Borriello [2003], ‘Bayesian filters for location estimation’, IEEE
Pervasive Computing 2(3), 24–33.
Fox, D., W. Burgard, F. Dellaert & S. Thrun [1999], Monte carlo localization: Efficient position estimation for
mobile robots, em ‘Proceedings of the National Conference on Artificial Intelligence’, pp. 343–349.
Ge, S. & Y. Cui [2000], ‘New potential functions for mobile robot path planning’, IEEE Transactions on Robotics
and Automation 16(5), 615–620.
72
Gonzalez, Rafael C. & Richard E. Woods [2007], Digital Image Processing, 3ªed., Prentice Hall, US, capítulo
Image Enhancement in the Spatial Domain, pp. 75–146.
Gordon, G., T. Darrell, M. Harville & J. Woodfill [1999], Background estimation and removal based on range
and color, em ‘Proceedings of the IEEE/CVPR’, Computer Society Conference on Computer Vision and
Pattern Recognition, Fort Collins, CO, pp. 459–464.
Grewe, L. & A. Kak [1995], ‘Interactive learning of a multiple-attribute hash table classifier for fast object
recognition’, Computer Vision Image Understanding 61(3), 387–416.
Gu, D. & H. Hu [2006], ‘Receding horizon tracking control of wheeled mobile robots’, IEEE Transactions on
Control Systems Technology 14(4), 743–749.
Hada, Y. & K. Takase [2001], Multiple mobile robot navigation using the indoor global positioning system
(igps), em ‘Proceedings of the IEEE/RSJ’, Vol. 2, International Conference on Intelligent Robots and
Systems, pp. 1005–1010.
Harris, C. & M. Stephens [1988], A combined corner and edge detector, em ‘Proceedings of The Fourth Alvey
Vision Conference’, pp. 147–151.
Heikkilä, J. & O. Silven [1997], A four-step camera calibration procedure with implicit image correction, em
‘Proceedings of IEEE’, Conference on Computer Vision and Pattern Recognition, San Juan, Puerto Rico,
pp. 1106–1112.
Henning, M. [2004], ‘A new approach to object-oriented middleware’, IEEE Internet Computing 8(1), 66–75.
Henning, M. [2006], ‘The rise and fall of corba’, ACM Queue 4(5), 28–34.
Horn, B. & B. Schunck [1981], ‘Determining optical flow’, Artificial Intelligence 17, 185–203.
Horswill, I. [1993], Polly: A vision-based artificial agent, em ‘Proceedings of the Eleventh National Conference
on Artificial Intelligence (AAAI-93)’, pp. 824–829.
Hsu, D., J.C. Latombe & R. Motwani [1999], ‘Path planning in expansive configuration spaces’, International
Journal of Computational Geometry and Applications 9(4), 495–512.
Jin, T., J. Lee & S.K. Tso [2004], ‘A new space and time sensor fusion method for mobile robot navigation’,
Journal of Robotic Systems 21(7), 389–400. Wiley Periodicals, Inc.
Kalman, R.E. [1960], A new approach to linear filtering and prediction problems, em ‘Journal of Basic Engi-
neering’, number 82 in ‘D’, Transactions of the ASME, pp. 35–45.
Kamon, I., E. Rimon & E. Rivlin [1998], ‘Tangentbug: A range-sensor-based navigation algorithm’, The Inter-
national Journal of Robotics Research 17(9), 934–953.
Kavraki, L.E., P. Švestka, J.C. Latombe & M.H. Overmars [1996], ‘Probabilistic roadmaps for path planning in
high-dimensional configuration spaces’, IEEE Transactions on Robotics and Automation 12(4), 566–580.
73
Khatib, O. [1986], ‘Real-time obstacle avoidance for manipulators and mobile robots’, The International Jour-
nal of Robotics Research 5(1), 90–98.
Klancar, G. D. Matko, Sašo Blažic [2005], Mobile robot control on a reference path, em ‘Proceedings of the
13th IEEE International Symposium on Intelligent Control’, Mediterranean Conference on Control and
Automation, Limassol, Cyprus, pp. 1343–1348.
Kortenkamp, D. & R. Simmons [2008], Handbook of Robotics, Springer, capítulo Robotic Systems Architec-
tures and Programming, pp. 187–206.
Kozlowski, Krzysztof, Jaroslaw Majchrzak & Maciej Michalek [2006], Robot Motion and Control: Recent Devel-
opments, Lecture Notes in Control and Information Sciences, Springer-Verlag New York, Inc., Secaucus,
NJ, USA, capítulo Posture Stabilization of a Unicycle Mobile Robot - Two Control Approaches, pp. 24–54.
Kümmerle, R., R. Triebel, P. Pfaff & W. Burgard [2008], ‘Monte carlo localization in outdoor terrains using
multilevel surface maps’, Journal of Field Robotics 25(6-7), 346–359.
Lau, B., C. Sprunk & W. Burgard [2009], Kinodynamic motion planning for mobile robots using splines, em
‘Proceedings of the IEEE/RSJ’, International Conference on Intelligent Robots and Systems, St. Louis,
EUA, pp. 2427–2433.
LaValle, S. [1998], Rapidly-exploring random trees: A new tool for path planning, Technical Report 98-11,
Dept. Computer Science, Iowa State University.
Lowe, D.G. [2004], ‘Distinctive image features from scale-invariant keypoints’, International Journal of Com-
puter Vision 60(2), 91–110.
Lozano-Pérez, T. & M.Wesley [1979], ‘An an algorithm for planning collision-free paths among polyhedral
obstacles’, Communication of the ACM 22(10), 560.
Lucas, A. [2009], Mapeamento e localização baseados em mosaicos visuais, Dissertação de Mestrado, Uni-
versidade Técnica de Lisboa, Instituto Superior Técnico, Lisboa, Portugal.
Lumelsky, V. & A. Stepanov [1987], ‘Path-planning strategies for a point mobile automaton moving amidst
unknown obstacles of arbitrary shape’, Algorithmica 2, 403–430.
Mahalanobis, P.C. [1936], On the generalised distance in statistics, em ‘Proceedings of the National Institute
of Sciences of India’, Vol. 2, pp. 49–55.
McGee, L. & S. Schmidt [1985], Discovery of the Kalman filter as a practical tool for aerospace and industry,
em ‘NASA Techmcal Memorandum 86847’, NASA.
Mestre, Nuno [2008], Controlo preditivo híbrido de robôs móveis terrestres para seguimento de pista, Disser-
tação de Mestrado, Universidade Técnica de Lisboa, Instituto Superior Técnico, Lisboa, Portugal.
Microchip [2003], PIC16F87XA Data Sheet, Microchip Technology Inc.
74
Mikolajczyk, K. & C. Schmid [2003], A performance evaluation of local descriptors, em ‘Proceedings of the
IEEE/CVPR’, Vol. 2, Computer Society Conference on Computer Vision and Pattern Recognition, Madi-
son, Wisconsin, pp. 1615–1630.
Moravec, H. [1979], Visual mapping by a robot rover, em ‘Proceedings of the 6th International Joint Confer-
ence on Artificial Intelligence (IJCAI)’, pp. 599–601.
Morette, N., C. Novales & P. Vieyres [2008], Inverse versus direct kinematics model based on flatness and
escape lanes to control cycab mobile robot, em ‘Proceedings of the IEEE/ICRA 2008’, International
Conference on Robotics and Automation, Pasadena, CA, USA, pp. 2240–2245.
Ocana, M., L.M. Bergasa, M.A. Sotelo, J. Nuevo & R. Flores [2005], Indoor robot localization system using
wifi signal measure and minimizing calibration effort, em ‘Proceedings of the IEEE’, Vol. 4, International
Symposium on Industrial Electronics (ISIE), pp. 1545–1550.
Panzieri, S., F. Pascucci & G. Uliv [2001], An outdoor navigation system using gps and inertial platform, em
‘Proceddings of the IEEE/ASME’, International Conference on Advanced Intelligent Mechatronics, Como,
Itália, pp. 8–12.
Papageorgiou, C., M. Oren & T. Poggio [1998], ‘A general framework for object detection’, IEEE International
Conference on Computer Vision (ICCV) pp. 555–562.
Parker, L. [2008], Handbook of Robotics, Springer, capítulo Multiple Mobile Robots Systems, pp. 921–941.
Pedrosa, D. [2001], Sistema de navegação para robôs móveis autónomos, Dissertação de Mestrado, Univer-
sidade Federal do Rio Grande do Norte, Natal, Brasil.
Pedrosa, D., A. Medeiros & P. Alsina [2003], Point-to-point paths generation for wheeled mobile robots, em
‘Proceedings of the 2003 IEEE’, International Conference on Robotics and Automation, Taipei, Taiwan,
pp. 3752–3757.
Phung, S.L., A. Bouzerdoum & D. Chai [2002], A novel skin color model in YCBCR color space and its appli-
cation to human face detection, em ‘Proceedings of the International Conference on Image Processing’,
Vol. 1, pp. 289–292.
Pinho, R., J. Manuel, R. Tavares & M. Correia [2007], ‘Efficient approximation of the mahalanobis distance for
tracking with the kalman filter’, International Journal of Simulation Modelling 6(2), 84–92.
Pradalier, C., J. Hermosillo, C. Koike, C. Braillon, P. Bessière & C. Laugier [2005], ‘The CyCab: a car-like robot
navigating autonomously and safely among pedestrians’, Robotics and Autonomous Systems 50, 51–67.
Rao, A., D. Benson, C. Darby, M. Patterson, C. Francolin, I. Sanders & G. Huntington [2010], ‘Algorithm
902: Gpops, a MATLAB software for solving multiple-phase optimal control problems using the gauss
pseudospectral method’, ACM Transactions on Mathematical Software 37(2), 22.1–22.39.
75
Riedmiller, M. & H. Braun [1993], A direct adaptive method for faster backpropagation learning: The RPROP
algorithm, em ‘IEEE International Conference on Neural Networks’, Vol. 1, San Francisco, CA, EUA,
pp. 586–591.
Rosenblatt, J.K. [1997], Damn: A distributed architecture for mobile navigation, doctoral dissertation CMU-RI-
TR-97-01, Robotics Institute, Carnegie Mellon University.
Rouleau, G. [2009], ‘Real-time subsystem’, http://www.mathworks.com/matlabcentral/fileexchange/21908.
Roumeliotis, S.I. & G.A. Bekey [1997], An extended Kalman filter for frequent local and infrequent global
sensor data fusion, em ‘Proceedings of the Sensor Fusion and Decentralized Control in Autonomous
Robotic Systems (SPIE)’, Pittsburgh, Pennsylvania, USA, pp. 11–22.
Rowley, H., S. Baluja & S. Kanade [1998], ‘Neural network-based face detection’, IEEE Transactions on
Pattern Analysis and Machine Intelligence 20(1), 23–38.
Rutquist, P. & M. Edvall [2008], PROPT: MATLAB optimal control software, Technical report, TOMLAB Opti-
mization Inc., Pullman, WA, EUA.
Saksena, M. & B. Selic [1999], ‘Real-time software design - state of the art and future challenges’, IEEE
Canadian Review pp. 5–8.
Salari, V. & I. Sethi [1990], ‘Feature point correspondence in the presence of occlusion’, IEEE Transactions
on Pattern Analysis and Machine Intelligence 12(1), 87–91.
Santos, J. [2008], Multi-robot cooperative object localization, Dissertação de Mestrado, Universidade Técnica
de Lisboa, Instituto Superior Técnico, Lisboa, Portugal.
Sellner, B., F. Heger, L. Hiatt, R. Simmons & S. Singh [2006], ‘Coordinated multi-agent teams and sliding
autonomy for large-scale assembly’, Proceedings of the IEEE - Special Issue on Multi-Robot Systems
94(1), 1425 – 1444.
Shi, J. & C. Tomasi [1994], Good features to track, em ‘Proceedings of the IEEE/CVPR’, Computer Society
Conference on Computer Vision and Pattern Recognition, pp. 593–600.
Shi, J. & J. Malik [2000], ‘Normalized cuts and image segmentation’, IEEE Transactions on Pattern Analysis
and MAchine Intelligence 22(8), 888–905.
Silva, P. [2008], Controlo visual de robôs manipuladores: Utilizando um sistema de visão estéreo, Dissertação
de Mestrado, Universidade Técnica de Lisboa, Instituto Superior Técnico.
Sousa, A.J., P.J. Costa, A.P. Moreira & A. Carvalho [2005], Self localization of an autonomous robot: Using
an ekf to merge odometry and vision based landmarks, em ‘Proceedings of ETFA 2005’, 10th IEEE
International Conference on Emerging Technologies and Factory Automation, pp. 227–234.
Sousa, P., R. Araújo, U. Nunes, L. Alves & A.C. Lopes [2007], Real-time architecture for mobile assistant
robots, em ‘Proceedings of the IEEE’, International Conference on Emerging Technologies and Factory
Automation (ETFA 2007), Patras, Greece, pp. 965–972.
76
Streit, R. & T. Luginbuhl [1994], Maximum likelihood method for probabilistic multihypothesis tracking, em
O. E.Drummond, ed., ‘Signal and Data Processing of Small Targets’, Vol. 2235, SPIE, Orlando, FL, USA,
pp. 394–405.
Sturm, P.F. & S.J. Maybank [1999], On plane-based camera calibration: A general algorithm, singularities,
applications, em ‘Proceedings of the IEEE’, Vol. 1, International Conference on Computer Vision, p. 666.
Sukkarieh, S., E.M. Nebot & H.F. Durrant-Whyte [1999], A high integrity imu/gps navigation loop for au-
tonomous land vehicle applications, em ‘Proceedings on IEEE’, Vol. 15, Transactions on Robotics and
Automation, pp. 572–578.
Thrun, S., M. Beetz, M. Bennewitz, W. Burgard, A.B. Creemers, F. Dellaert, D. Fox, D. Hahnel, C. Rosenberg,
N. Roy, J. Schulte & D. Schulz [2000], Probabilistic Algorithms and the Interactive Museum Tour-Guide
Robot Minerva 19(1), 972–999.
Thrun, S., M. Bennewitz, W. Burgard, A.B. Cremers, F. Dellaert, D. Fox, D. Haehnel, C. Rosenberg, N. Roy, J.
Schulte & D. Schulz [1999], Minerva: A second generation mobile tour-guide robot, em ‘Proceedings of
the IEEE’, International Conference on Robotics and Automation (ICRA).
Thrun, S., M. Montemerlo, H. Dahlkamp, D. Stavens, A. Aron, J. Diebel, P. Fong, J. Gale, M. Halpenny, G.
Hoffmann, K. Lau, C. Oakley, M. Palatucci, V. Pratt, P. Stang, S. Strohband, C. Dupont, L.E. Jendrossek,
C. Koelen, C. Markey, C. Rummel, J. van Niekerk, E. Jensen, P. Alessandrini, G. Bradski, B. Davies, S.
Ettinger, A. Kaehler, A. Nefian & P. Mahoney [2006], ‘Winning the DARPA Grand Challenge’, Journal of
Field Robotics 23(9), 661–692.
Tsai, P., L. Wang, F. Chang & T. Wu [2004], Systematic backstepping design for B-spline trajectory tracking
control of the mobile robot in hierarchical model, em ‘Proceedings of the IEEE’, International Conference
on Networking, Sensing and Control, Taipei, Taiwan, pp. 713–718.
Tsai, R.Y. [1987], ‘A versatile camera calibration technique for high accuracy 3d machine vision metrology
using off-the-shelf tv cameras and lenses’, IEEE Journal of Robotics and Automation 3(4), 323–344.
Veenman, C.J., M.J. Reinders & E. Backer [2001], ‘Resolving motion correspondence for densely moving
points’, IEEE Transactions on Pattern Analysis and Machine Intelligence 23(1), 54–72.
Viola, P., M. Jones & D. Snow [2003], Detecting pedestrians using patterns of motion and appearance, em
‘Proceedings of the Ninth IEEE International Conference on Computer Vision’, IEEE Computer Society,
Washington, DC, USA, pp. 734–741.
Welch, G. & G. Bishop [1995], An introduction to the Kalman filter, Technical Report TR 95-041, University of
North Carolina, Chapel Hill, USA.
Yilmaz, A., O. Javed & M. Shah [2006], ‘Object tracking: A survey’, ACM Computing Surveys 38(4), 45.
Zhang, Z. [1999], Flexible camera calibration by viewing a plane from unknown orientations, em ‘Proceed-
ings of the IEEE’, 7th International Conference on Computer Vision (ICCV’99), IEEE Computer Society,
Grécia, pp. 666–673.
77
Ziegler, J.G. & N.B. Nichols [1942], Optimum settings for automatic controllers, Vol. 64, Trans. ASME, pp. 759–
768.
78
Apêndice A
Descrição do Robô Rasteirinho
O robô Rasteirinho é um veículo composto por duas rodas motrizes actuadas independentemente e por outra
roda que apenas providência estabilidade à estrutura. Este tipo de robô é fácil de controlar e que é capaz de
virar sobre o seu próprio eixo, o que lhe confere maior mobilidade para espaços interiores, onde tem maior
aplicação.
Assunção A.1. Ao longo desta dissertação o movimento do robô, Rasteirinho é considerado suficientemente
lento, de modo a tracção longitudinal e a força lateral exercida nos pontos de contacto do veículo com o chão
não excedam o coeficiente de atrito estático, i.e., o escorregamento entre as rodas do veículo e a superfície
de contacto durante todo o movimento do robô é nulo.
A suposição A.1 implica que o deslocamento de cada roda é proporcional à variação do seu ângulo de
rotação e ao seu raio, equação A.1.
x =φr (A.1)
O raio das rodas e a distância que as separa são respectivamente,
r = 0.0375 m , d = 0.3 m (A.2)
A.1 Configuração da Porta Série do PC
Na camada de alto nível da arquitectura do robô, encontra-se um PC portátil que comunica com o microcon-
trolador através de uma porta série virtual configurada da forma ilustrada na Tabela A.1.
A.2 Diagrama I/O do Microcontrolador
O microcontrolador PIC 16F876A é responsável por fazer o controlo do robô e por enviar os valores das
velocidades angulares de cada roda para a camada de alto nível. O seu esquema I/O do encontra-se ilustrado
na figura A.1. Uma descrição mais detalhada pode ser encontrada no manual Microchip [2003].
79
Propriedades da Comunicação
baude rate 9600Data bits 8Parity NãoStop bits 1Flow control Não
Capacidade do buffer
bytes recebidos 1024bytes enviados 1024Latência 1ms
Timeouts
Leitura (mínimo) 0msEscrita (mínimo) 0ms
Tabela A.1: Configuração da porta COM do PC.
Figura A.1: Diagrama I/O do microcontrolador PIC 16F876A.
A.3 Modelos dos Motores
A função de transferência do modelo de cada motor é,
G(s)d to =3.492
s2 +39.52s +102.2, G(s)esq =
7.081
s2 +59.17s +208.6(A.3)
−120
−100
−80
−60
−40
−20
Mag
nitu
de (
dB)
10−1
100
101
102
103
−180
−135
−90
−45
0
Fas
e (d
eg)
Frequency (rad/sec)
(a) Motor direito.
−120
−100
−80
−60
−40
−20
Mag
nitu
de (
dB)
10−1
100
101
102
103
−180
−135
−90
−45
0
Pha
se (
deg)
Frequency (rad/sec)
(b) Motor esquerdo.
Figura A.2: Diagrama de Bode dos modelos identificados.
80
−40 −35 −30 −25 −20 −15 −10 −5 0−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Eixo Real
Eix
o Im
agin
ário
(a) Motor direito.
−60 −50 −40 −30 −20 −10 0−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Eixo Real
Eix
o Im
agin
ário
(b) Motor esquerdo.
Figura A.3: Pólos da função de transferência dos motores DC.
81
82
Apêndice B
Modelos Simulink
Neste apêndice são apresentados os modelos gerais Simulink® para localização e navegação do robô,
B.1 Robô
Trajectória
v
w
x
y
theta PIC
Wd
We
Wd
We
Cinemática
Wd
We
X
Y
Theta
vd
wd
e
theta
vc
wc
w_D
w_E
controlador
Figura B.1: Modelo Simulink®para seguimento de trajectórias (simulação).
83
Web Service
RS232
Trajectória
v
w
x
y
theta protocoloSaturação
Cinemática
Wd
We
iGPS
posicao
iGPS
Serial Send
COM4Data
COM4
Data
Status
Serial Configuration
COM49600
8,none ,1
U Y
Real Time
vd
wd
e
theta
vc
wc
w_D
w_E
controlador
double
Figura B.2: Modelo Simulink®para seguimento de trajectórias (experimental).
84
B.2 Sistema iGPS
Câmara
píxeis2mm
Web Service
píxeis2mm
XY Theta do Robô
c_amarelo
c_azul
CentróidesClassificação
Distância de MahalanobisProcessamento
de Imagem
Real Time
KalmanFilter
ZZZ Z_estZ_estZ_estZ_estZ_estZ_est
KalmanFilter
ZZZ Z_estZ_estZ_estZ_estZ_estZ_est
Logitech Qui ...RGB24_160x120
input 1
Figura B.3: Modelo Simulink® do sistema iGPS (experimental).
85
86
Apêndice C
Robotica 2009
A prova de condução autónoma da competição Robótica2009 contou com a presença da equipa Rasteirinho.
O material utilizado foi:
• Robô Rasteirinho;
• Duas câmaras;
• Dois sensores infravermelhos.
O cérebro do rasteirinho encontra-se divido em duas zonas:
• Zona de aquisição de referências para seguimento da pista;
• Máquina de estados
Figura C.1: Zonas de interesse da imagem.
C.1 Detecção de Linha e Passadeira
A imagem aquirida pela webcam, no espaço de cores RGB, foi dividida em três zonas de interesse para
diminuir o tempo de processamento, como se encontra ilustrado na Figura C.1. A detecção da linha para
seguimento de pista foi feita através da análise da cor do canal vermelho nas respectivas zonas 2 e 3. Se
o tamanho do conjunto de píxeis encontrados estivesse contido no intervalo desejado, o centróide deste
87
conjunto servia então de comparação com a referência. Se houvessem dois centróides de área nestas duas
zonas, seria então detectada a passadeira.
C.2 Reconhecimento do Estado do Semáforo
A distinção das cores presentes nos semáforos foi feita utilizando a distância de Mahalanobis. Considerando
o espaço de cores Y CbCr , desprezou-se o Y (luminosidade) e calculou-se a média e co-variância de Cb e
Cr .
(a) Imagem do semáforo adquirida pela webcam. (b) Aplicando distância de Mahalanobis
Figura C.2: Filtro para reconhecer cores do semáforo.
C.3 Detecção e Desvio de Obstáculos
Para a detecção de obstáculos utilizou-se um sensor infravermelho instalado na frente do rasteirinho; ao
detectar o obstáculo, o estado do veículo é alterado de modo a desencadear uma sequência de operações
que permitem o contorno do obstáculo em anel aberto.
C.4 Detecção e Seguimento na Zona de Obras e Túnel
Para detecção e seguimento na zona de obras e túnel utilizou-se um segundo sensor infra-vermelho, instal-
ado também na frente do veículo, mas com uma inclinação de 45 graus, de modo a detectar a parede vertical
do túnel e a superfície da fita da zona de obras. O seguimento foi feito de acordo com a distância do sensor
à fita e à parede do túnel.
C.5 Zona de Estacionamento
A zona de estacionamento encontra-se localizada depois da zona dos semáforos. Depois de o contador de
voltas indicar que o número de voltas foi concluído e o sinal do semáforo indicar o estacionamento, então
desencadeia-se uma sequência de operações, em anel aberto, que levam o veículo móvel rasteirinho a parar
dentro da zona pretendida.
88
processamento de imagem
imagem
u
vel _nominal
passadeira
passadeira1
clock
clockWebcam
QuickCamRGB24_160 x120
input 1
Unit Delayz
1
Rate Transition 2
Rate Transition 1
Motores
Esq
DirMOTOR
0.01349 z+0.01201
z −1.681z+0.70612
Chart
u
vel _nominal
passadeira
clock
verde
passadeira1
u1
vel _nominal1
camera2
Camera Semaforo
Out1
Figura C.3: Diagrama de blocos construído em Simulink.
89
90
Apêndice D
Microcontrolador
Neste apêndice encontra-se o código C desenvolvido, que permitiu identificar e controlar o robô Rasteirinho.
D.1 Aquisição de Dados através de PIC (linguagem C)
#include <16F876A . h>
#device ICD=TRUE
#device adc=8
#use fast_io (b ) / / _inputs=PIN_b4 , PIN_b5 , PIN_b6 , PIN_b7 )
#use delay ( c lock=20000000)
#fuses NOWDT , HS , NOPUT , NOPROTECT , DEBUG , BROWNOUT , NOLVP , NOCPD , NOWRT
#use rs232 ( baud=9600 ,parity=N , xmit=PIN_C6 , rcv=PIN_C7 , bits=8)
/ / Global vars 115200
#byte Portb = 6
/ / Counters
signed int32 counter_D=0;
signed int32 counter_E=0;
/ / Real velocity of the wheels
signed int32 vel_D=0;
signed int32 vel_E=0;
/ / Simulink velocity orders
signed int32 vel_in_D =0 ,
signed int32 vel_in_E=0;
/ / PWM out
signed int32 pwm_out_D , pwm_out_E ;
signed int32 value , valueanterior , valueRoda2 , valueanteriorRoda2 , valor ;
int1 TIMERFLAG=0;
#include <math . h>
/ / Buffer definitions
#define MAX_MSG_SIZE 20
char CURRENT_COMMAND [ MAX_MSG_SIZE ] ;
unsigned int CURRENT_COMMAND_LEN = 0 ;
/ / * * * * * * * * * WRITE_SERIAL − SERIAL PORT WRTIE TO SIMULINK * * * * * * * * * * * * * * * * *void write_serial ( )
printf ( " #%c%c%c%c \ r \ n " , vel_D , vel_E , vel_in_D , ve l_ in_E ) ;
91
/ / * * * * * * * * * WRITE_PWM − PWM out * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *void write_pwm ( )
set_pwm1_duty ( ( unsigned int16 ) 10*vel_in_D ) ;
set_pwm2_duty ( ( unsigned int16 ) 10*vel_in_E ) ;
/ / * * * * * * * * * DO_COMMAND − UPDATE DESIRED VELOCITIES * * * * * * * * * * * * * * * * * * * * * *void doCommand ( )
/ / i f order from simulink is ok , update velocity references
i f ( CURRENT_COMMAND_LEN==5 && CURRENT_COMMAND [0 ]== 'D ' && CURRENT_COMMAND [2 ]== 'F ' )
write_serial ( ) ;
vel_in_D= CURRENT_COMMAND [ 1 ] ;
vel_in_E= CURRENT_COMMAND [ 3 ] ;
/ / Buffer rese t
memset ( CURRENT_COMMAND , 0 , MAX_MSG_SIZE ) ;
CURRENT_COMMAND_LEN = 0 ;
/ / CURRENT_STATE = STATE_STAND_BY ;
/ / * * * * * * * * * INT_RDA − SERIAL PORT INTERRUPTION * * * * * * * * * * * * * * * * * * * * * * * * * * *#int_rda
void serial_isr ( )
char ch ;
ch=getc ( ) ;
/ / i f buffer is f u l l , then rese t buffer
i f ( CURRENT_COMMAND_LEN == MAX_MSG_SIZE )
memset ( CURRENT_COMMAND , 0 , MAX_MSG_SIZE ) ;
CURRENT_COMMAND_LEN = 0 ;
/ / i f terminator is not received , save i n f o in buffer
i f ( ch != ' \ n ' )
CURRENT_COMMAND [ CURRENT_COMMAND_LEN ] = ch ;
CURRENT_COMMAND_LEN++;
/ / otherwise check i f there´s another terminator ( there are two terminators )
e lse
i f ( CURRENT_COMMAND_LEN >=1)
/ / i f there are 2 terminators , then change STATE_COMMAND
i f ( CURRENT_COMMAND [ CURRENT_COMMAND_LEN−1]== ' \ r ' )
/ / CURRENT_STATE = STATE_COMMAND ;
doCommand ( ) ;
e lse
CURRENT_COMMAND [ CURRENT_COMMAND_LEN ] = ch ;
CURRENT_COMMAND_LEN++;
/ / Ts f o r angular velocity calculus
/ / Ts = 255/(20e6 / 4 / 2 5 6 ) = 0.0131 ms
/ / Ts ( SIMULINK ) = 3*0.0131 = 0.0393 = 0.04
/ / * * * * * * * * * INT_RTCC − REAL VELOCITY CALCULUS * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#org 0x1000 , 0x11FF DEFAULT
#INT_RTCC
void clock_isr ( )
/ / vel = counter * 2 p i /400 /Ts ( PIC ) = counter *1.1991
vel_D = ( counter_D *6 ) / 5 ;
92
vel_E = ( counter_E *6 ) / 5 ;
TIMERFLAG=1;
/ / * * * * * * * * * INT_RB − ENCODERS INTERRUPTION * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#int_RB
void RB_isr ( void )
/ / read encoder A
valor=input_b ( ) &0x80 ;
i f ( valor != valueanterior ) ++counter_D ;
valueanterior=valor ;
/ / read encoder B
valueRoda2=input_b ( ) &0x20 ;
i f ( valueRoda2 != valueanteriorRoda2 ) ++counter_E ;
valueanteriorRoda2=valueRoda2 ;
/ / * * * * * * * * * MAIN − PI CONTROLLER CALCULUS * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#org DEFAULT
void main ( )
setup_adc_ports ( AN0_AN1_AN3 ) ;
setup_adc ( ADC_CLOCK_INTERNAL ) ;
setup_timer_2 ( T2_DIV_BY_4 , 255 , 1) ; / / 7 6 Hz ou 38Hz
setup_ccp1 ( CCP_PWM ) ;
setup_ccp2 ( CCP_PWM ) ;
SET_TRIS_B (0x0F ) ;
SET_TRIS_C (0xF0 ) ;
output_bit ( PIN_C3 , 0 ) ;
set_pwm2_duty ( 0 ) ;
output_bit ( PIN_C0 , 0 ) ;
set_pwm1_duty ( 0 ) ;
set_tris_b (0xF0 ) ;
port_b_pullups ( TRUE ) ;
delay_us (10 ) ;
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_256 ) ;
set_timer0 ( 0 ) ;
enable_interrupts ( INT_RTCC ) ;
enable_interrupts ( INT_RB ) ; / / turn on port b interrupt on change
enable_interrupts ( int_rda ) ;
enable_interrupts ( GLOBAL ) ;
printf ( " ta vivo " ) ;
WHILE ( TRUE )
/ / controller is done every Ts = Ts_pic = 0.0131s
i f ( TIMERFLAG==1)
disable_interrupts ( INT_RB ) ;
disable_interrupts ( INT_RTCC ) ;
counter_D=0;
counter_E=0;
write_pwm ( ) ; / / PWM out
clear_interrupt ( INT_RB ) ;
clear_interrupt ( INT_RTCC ) ;
set_timer0 ( 0 ) ;
enable_interrupts ( INT_RTCC ) ;
enable_interrupts ( INT_RB ) ;
TIMERFLAG=0;
93
D.2 Controlador PI (linguagem C)
#include <16F876A . h>
#device ICD=TRUE
#device adc=8
#use fast_io (b ) / / _inputs=PIN_b4 , PIN_b5 , PIN_b6 , PIN_b7 )
#use delay ( c lock=20000000)
#fuses NOWDT , HS , NOPUT , NOPROTECT , DEBUG , BROWNOUT , NOLVP , NOCPD , NOWRT
#use rs232 ( baud=9600 ,parity=N , xmit=PIN_C6 , rcv=PIN_C7 , bits=8)
#byte Portb = 6
/ / COUNTERS
signed int32 counter_D=0;
signed int32 counter_E=0;
/ / Real velocity of the wheels
signed int32 vel_D=0 , vel_E=0;
/ / Simulink velocity orders
signed int32 vel_in_D =0 , vel_in_E=0;
/ / velocity e r ro r
signed int32 erro_D , erro_E , erro_ant_D = 0 , erro_ant_E = 0 ;
/ / PWM out
signed int32 pwm_out_D , pwm_out_E ;
/ / portB state variables
signed int32 value , valueanterior , valueRoda2 , valueanteriorRoda2 , valor ;
int1 TIMERFLAG=0;
/ / controller variables
signed int32 int_D = 0 , int_ant_D = 0 , int_E = 0 , int_ant_E = 0 ;
signed int32 Gc_D = 0 ,Gc_E = 0 ;
signed int32 Kp_D=6 , Ki_D=1 , Kp_E=4 , Ki_E=1;
/ / Buffer definitions
#define MAX_MSG_SIZE 20
signed int32 CURRENT_COMMAND [ MAX_MSG_SIZE ] ;
unsigned int CURRENT_COMMAND_LEN = 0 ;
#include <math . h>
/ / * * * * * * * * * WRITE_SERIAL − SERIAL PORT WRTIE TO SIMULINK * * * * * * * * * * * * * * * * *void write_serial ( )
printf ( " #%c%c%c%c \ r \ n " , ( unsigned i n t 8 ) ( vel_D ) , ( unsigned i n t 8 ) ( vel_E ) , ( unsigned i n t 8 ) ( ve l_ in_D ) , ( unsigned ←-
i n t 8 ) ( ve l_ in_E ) ) ;
/ / * * * * * * * * * WRITE_PWM − PWM out * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *void write_pwm ( )
set_pwm1_duty ( ( unsigned int16 ) pwm_out_D ) ;
set_pwm2_duty ( ( unsigned int16 ) pwm_out_E ) ;
/ / * * * * * * * * * DO_COMMAND − UPDATE DESIRED VELOCITIES * * * * * * * * * * * * * * * * * * * * * *void doCommand ( )
/ / i f order from simulink is ok , update velocity references
i f ( CURRENT_COMMAND_LEN==5 && CURRENT_COMMAND [0 ]== 'D ' && CURRENT_COMMAND [2 ]== 'F ' )
write_serial ( ) ;
vel_in_D= CURRENT_COMMAND [ 1 ] ;
vel_in_E= CURRENT_COMMAND [ 3 ] ;
/ / Buffer rese t
94
memset ( CURRENT_COMMAND , 0 , MAX_MSG_SIZE ) ;
CURRENT_COMMAND_LEN = 0 ;
/ / * * * * * * * * * INT_RDA − SERIAL PORT INTERRUPTION * * * * * * * * * * * * * * * * * * * * * * * * * * *#int_rda
void serial_isr ( )
char ch ;
ch=getc ( ) ;
/ / i f buffer is f u l l , then rese t buffer
i f ( CURRENT_COMMAND_LEN == MAX_MSG_SIZE )
memset ( CURRENT_COMMAND , 0 , MAX_MSG_SIZE ) ;
CURRENT_COMMAND_LEN = 0 ;
/ / i f terminator is not received , save i n f o in buffer
i f ( ch != ' \ n ' )
CURRENT_COMMAND [ CURRENT_COMMAND_LEN ] = ch ;
CURRENT_COMMAND_LEN++;
/ / otherwise check i f there´s another terminator ( there are two terminators )
e lse
i f ( CURRENT_COMMAND_LEN >=1)
/ / i f there are 2 terminators , then change STATE_COMMAND
i f ( CURRENT_COMMAND [ CURRENT_COMMAND_LEN−1]== ' \ r ' )
doCommand ( ) ;
e lse
CURRENT_COMMAND [ CURRENT_COMMAND_LEN ] = ch ;
CURRENT_COMMAND_LEN++;
/ / Ts f o r angular velocity calculus
/ / Ts = 255/(20e6 / 4 / 2 5 6 ) = 0.0131 ms
/ / Ts ( SIMULINK ) = 3*0.0131 = 0.0393 = 0.04
/ / * * * * * * * * * INT_RTCC − REAL VELOCITY CALCULUS * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#org 0x1000 , 0x11FF DEFAULT
#INT_RTCC
void clock_isr ( )
/ / vel = counter * 2 p i /400 /Ts ( PIC ) = counter *1.1991
vel_D = ( counter_D *6 ) / 5 ;
vel_E = ( counter_E *6 ) / 5 ;
TIMERFLAG=1;
/ / * * * * * * * * * INT_RB − ENCODERS INTERRUPTION * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#int_RB
void RB_isr ( void )
/ / read encoder A
valor=input_b ( ) &0x80 ;
i f ( valor != valueanterior ) ++counter_D ;
valueanterior=valor ;
/ / read encoder B
valueRoda2=input_b ( ) &0x20 ;
i f ( valueRoda2 != valueanteriorRoda2 ) ++counter_E ;
valueanteriorRoda2=valueRoda2 ;
/ / * * * * * * * * * MAIN − PI CONTROLLER CALCULUS * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
95
#org DEFAULT
void main ( )
setup_adc_ports ( AN0_AN1_AN3 ) ;
setup_adc ( ADC_CLOCK_INTERNAL ) ;
setup_timer_2 ( T2_DIV_BY_4 , 255 , 1) ; / / 7 6 Hz ou 38Hz
setup_ccp1 ( CCP_PWM ) ;
setup_ccp2 ( CCP_PWM ) ;
SET_TRIS_B (0x0F ) ;
SET_TRIS_C (0xF0 ) ;
output_bit ( PIN_C3 , 0 ) ;
set_pwm2_duty ( 0 ) ;
output_bit ( PIN_C0 , 0 ) ;
set_pwm1_duty ( 0 ) ;
set_tris_b (0xF0 ) ;
port_b_pullups ( TRUE ) ;
delay_us (10 ) ;
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_256 ) ;
set_timer0 ( 0 ) ;
enable_interrupts ( INT_RTCC ) ;
enable_interrupts ( INT_RB ) ; / / turn on port b interrupt on change
enable_interrupts ( int_rda ) ;
enable_interrupts ( GLOBAL ) ;
printf ( " ta vivo " ) ;
WHILE ( TRUE )
/ / controller is done every Ts = Ts_pic = 0.0131s
i f ( TIMERFLAG==1)
disable_interrupts ( INT_RB ) ;
disable_interrupts ( INT_RTCC ) ;
/ / control f o r right motor
erro_D = ( vel_in_D−vel_D ) ;
int_D = Ki_D *erro_ant_D + int_ant_D ;
Gc_D = Kp_D *erro_D + int_D ;
i f ( Gc_D >1024) pwm_out_D = 1024;
e lse i f ( Gc_D<0) pwm_out_D=0;
e lse pwm_out_D = Gc_D ;
erro_ant_D = erro_D ;
int_ant_D = int_D ;
counter_D=0;
/ / control f o r left motor
erro_E = ( vel_in_E−vel_E ) ;
int_E = Ki_E *erro_ant_E + int_ant_E ;
Gc_E = Kp_E *erro_E + int_E ;
i f ( Gc_E > 1024) pwm_out_E = 1024;
e lse i f ( Gc_E < 0) pwm_out_E=0;
e lse pwm_out_E = Gc_E ;
erro_ant_E = erro_E ;
int_ant_E = int_E ;
counter_E=0;
write_pwm ( ) ; / / PWM out
set_timer0 ( 0 ) ;
enable_interrupts ( INT_RTCC ) ;
enable_interrupts ( INT_RB ) ;
TIMERFLAG=0;
96