ricardo artigas langer

168
RICARDO ARTIGAS LANGER ESTUDO E IMPLEMENTAÇÃO DE MÉTODOS PARA PLANEJAMENTO DE TRAJETÓRIAS E CONTROLE DE ROBÔS MÓVEIS NÃO HOLONÔMICOS CURITIBA Agosto, 2007

Upload: others

Post on 17-Nov-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RICARDO ARTIGAS LANGER

RICARDO ARTIGAS LANGER

ESTUDO E IMPLEMENTAÇÃO DE MÉTODOS PARA PLANEJAMENTO DE TRAJETÓRIAS E CONTROLE DE ROBÔS MÓVEIS NÃO

HOLONÔMICOS

CURITIBA Agosto, 2007

Page 2: RICARDO ARTIGAS LANGER

RICARDO ARTIGAS LANGER

ESTUDO E IMPLEMENTAÇÃO DE MÉTODOS PARA PLANEJAMENTO DE TRAJETÓRIAS E CONTROLE DE ROBÔS MÓVEIS NÃO

HOLONÔMICOS

Documento apresentado ao Programa de PósGraduação em Engenharia de Produção e Sistemas da Pontifícia Universidade Católica do Paraná como requisito parcial para a obtenção do título de Mestre em Engenharia de Produção e Sistemas

Orientador:

Gustavo Henrique da Costa Oliveira

Co orientador:

Leandro dos Santos Coelho

Pontifícia Universidade Católica do Paraná PUCPR

CURITIBA Agosto, 2007

Page 3: RICARDO ARTIGAS LANGER

I

AGRADECIMENTOS

Gostaria de registrar aqui meus profundos agradecimentos ao meu orientador, Prof. Gustavo Henrique da Costa Oliveira, e ao meu co-orientador, Prof. Leandro dos Santos Coelho, pela inspiração, amizade e constante disponibilidade que proporcionaram durante todo o curso de mestrado. São professores que vão além das obrigações profissionais do magistério, revelando-se pessoas iluminadas pelo idealismo da excelência na profissão que abraçaram. Seus profundos e comprovados conhecimentos técnicos são coroados por suas elevadas qualidades morais.

Agradeço aos meus pais que sempre me proporcionaram todos os recursos necessários para que eu trilhasse meu caminho acadêmico com segurança. Em especial, a minha mãe, pessoa maravilhosa que muito contribuiu, inclusive em caráter técnico, para que este trabalho fosse concluído. Obrigado pelo seu carinho, paciência e compreensão dedicados durante toda a minha vida.

Deixo também o meu muito obrigado: Ao meu amigo-irmão Ivan cujas conversas, sessões de videogame e risadas

mantiveram, e ainda mantém, a minha sanidade. A minha irmãzinha Carol que me auxiliou em diversas tarefas, abrindo mão de parte

do seu tempo e possibilitando que eu me dedicasse com mais afinco a este trabalho de mestrado.

Aos meus amigos e companheiros de profissão Tiago e Gelson, meu muito obrigado pelo incentivo.

Ao Mestre Lee por ter contribuído imensamente na construção de quem sou hoje. Aos amigos de treino Daniel, David e Akira, por me mostrarem constantemente que

sempre podemos nos superar. Aos meus sócios Walter e Gustavo que já a alguns anos possibilitam inestimável troca

de conhecimentos técnicos. Finalmente, agradeço aos meus familiares e amigos que me apoiaram nesta jornada

rumo ao meu aperfeiçoamento intelectual.

Page 4: RICARDO ARTIGAS LANGER

II

RESUMO

Este trabalho apresenta um estudo no campo da robótica móvel abordando diversos tópicos da disciplina, objetivando controlar remotamente robôs móveis tais como AGVs (Automatic Guided Vehicles), empilhadeiras e outros utilitários de transporte industrial, através da realimentação de informação visual proveniente de uma câmera aérea. Para isso, são estudados métodos para planejar uma trajetória evitando obstáculos no ambiente, controlando a sua posição e orientação na superfície de trabalho, através de um sistema de visão computacional. Ao longo do trabalho são discutidas e comparadas quatro principais vertentes de algoritmos para realizar o planejamento de trajetórias de robôs móveis: (i) uma topologia utilizando algoritmos genéticos; (ii) campos potenciais artificiais; (iii) um método consagrado na literatura para buscas enumerativas chamado A*; e (iv) os algoritmos tipo Bug. Finalmente, um novo algoritmo é apresentado chamado de K Bug, cujas principais características são o baixo custo computacional, o tratamento vetorial do ambiente e a maximização da utilização da informação disponível. Três metodologias de controle são implementadas para fazer com que o robô percorra a trajetória planejada, sendo elas: (i) um controlador PID, (ii) um controlador baseado em lógica fuzzy; e (iii) um controlador preditivo baseado em modelo. Um robô móvel terrestre não holonômico com tração diferencial é utilizado como plataforma de testes e um sistema de simulação é programado para validar os controladores e planejadores de trajetórias. O trabalho propõe ainda um desacoplamento entre as variáveis de entrada do robô, permitindo o uso de controladores monovariáveis independentes. Usando um modelo de robô móvel construído e acionado com um kit Lego todo o sistema é implementado em tempo real, sendo controlado pela plataforma LabVIEWTM, da National Instruments, que está integrada ao hardware de acionamento Lego pela porta serial e à câmera por uma placa de aquisição de imagens do mesmo fabricante. Todo o processo de reconhecimento de padrões para a identificação do robô na imagem também é apresentado. Ao final do trabalho, tem-se duas plataformas completas de estudo e validação de algoritmos para robôs móveis totalmente em linguagem de alto nível, uma sendo em simulação e outra em tempo real. As etapas de resultados mostram as diferentes trajetórias geradas e percorridas pelos algoritmos estudados, ressaltando os diversos graus de otimização conseguidos.

Palavras chave: robótica móvel, planejamento de trajetórias, controle.

Page 5: RICARDO ARTIGAS LANGER

III

ABSTRACT

This work presents a study in the field of the mobile robotics, approaching several topics within this context, intending to remotely control mobile robots such as AGVs (Automatic Guided Vehicles), pilers and other industrial transport vehicles through the feedback of visual information proceeding from an aerial camera. To accomplish this goal, several methods are studied to plan the trajectory preventing collisions with the obstacles in the environment, controlling its position and orientation in the work surface through a computational vision system. Throughout the work, four mobile robots path planning algorithms are presented and compared: (i) a topology using genetic algorithms; (ii) artificial potential fields; (iii) a literature consecrated method for enumerativas searches call A*; and (iv) the Bug algorithms. Finally, a new algorithm is presented called K Bug, whose main characteristics are the low computational cost, the vectorial treatment of the environment and the maximization of the available information usage. Three methodologies of control are implemented to make robot s path tracking: (i) a Proportional-Integral-Derivative controller, (ii) a controller based on fuzzy logic; and (iii) a model based predictive controller. A wheeled terrestrial nonholonomic mobile robot with differential traction is used as test platform and a simulation system is programmed to validate the controllers and trajectory planners. The work still considers a robot model with decoupled inputs, allowing the use of independent single input single output controllers. Using a model of mobile robot constructed and driven with a LEGO kit, the entire system is implemented and tested in real time, being controlled by the LabVIEWTM platform, from National Instruments, which is integrated to the hardware drives through the serial port and to the camera by an image acquisition board from the same manufacturer. All the process of patterns recognition to identify the robot in the image also is presented. At the conclusion of the work, two complete platforms to study and validate algorithms for mobile robots in high level language are available, one in simulation and another in real time. The results show the different trajectories planned and tracked by the mobile robot for the studied algorithms, pointing out the diverse degrees of optimization obtained.

Key words: mobile robotics, path planning, control.

Page 6: RICARDO ARTIGAS LANGER

IV

SUMÁRIO

Agradecimentos..................................................................................................p.I Resumo..............................................................................................................p.II Abstract............................................................................................................ p.III Lista de Figuras.............................................................................................. p.VII Lista de Tabelas................................................................................................ p.X Lista de Siglas................................................................................................. p.XI Lista de Símbolos......................................... .......................................... p.XII Capítulo 1 Introdução ........................................................................................ 1 1.1 Motivação......................................................................................................................... 1 1.2 Robótica móvel ................................................................................................................ 3

1.2.1 Tipos e Classificações ..................................................................................................... 5 1.2.2 Sensores........................................................................................................................... 5 1.2.3 Comportamento e Navegação.......................................................................................... 6

1.3 Modelo do Robô móvel tipo CART................................................................................. 8 1.4 A Concepção do Sistema em Malha Fechada ................................................................ 11

1.4.1 O LabVIEWTM............................................................................................................... 13 1.5 Contribuições da Dissertação ......................................................................................... 13 1.6 Estrutura da Dissertação................................................................................................. 14 Capítulo 2 Planejamento da Trajetória de Robôs Móveis em Ambiente

Conhecido......................................................................................... 17 2.1 Introdução....................................................................................................................... 17 2.2 Algoritmos Genéticos (AGs).......................................................................................... 21

2.2.1 Principais Conceitos sobre AGs .................................................................................... 22 2.2.2 Algoritmos Genéticos para Planejamento de Trajetórias .............................................. 25 2.2.3 Resultados ..................................................................................................................... 26 2.2.4 Considerações Finais sobre os Algoritmos Genéticos para Planejamento de Trajetórias

de Robôs Móveis ........................................................................................................... 28 2.3 Campos Potenciais Artificiais (APFs)............................................................................ 29

2.3.1 Principais Conceitos sobre APFs................................................................................... 29 2.3.2 Equacionamento do Campo Potencial........................................................................... 31 2.3.3 Resultados ..................................................................................................................... 33 2.3.4 Considerações Finais sobre os APFs ............................................................................. 35

2.4 Algoritmo A* ................................................................................................................. 36 2.4.1 Principais conceitos do A* ............................................................................................ 36

2.4.1.1 Pseudo código do Algoritmo A* (Rich, 1998) ...................................................... 38 2.4.2 A* para o Planejamento de Trajetórias.......................................................................... 39

2.4.2.1 Segmentação do Ambiente Utilizando Grafos de Visibilidade............................... 39 2.4.3 Resultados ..................................................................................................................... 41 2.4.4 Considerações Finais sobre o A* .................................................................................. 42

2.5 Algoritmos tipo Bug e o Método K Bug........................................................................ 43 2.5.1 Algoritmos tipo Bug...................................................................................................... 44 2.5.2 O algoritmo K Bug........................................................................................................ 46

2.5.2.1 O K Bug quando toda a Informação sobre o Ambiente é Conhecida..................... 47 2.5.3 Pseudo código do K Bug.............................................................................................. 50 2.5.4 Resultados ..................................................................................................................... 53 2.5.5 Considerações Finais sobre o K Bug ............................................................................ 54

Page 7: RICARDO ARTIGAS LANGER

V

2.6 Conclusões Sobre os Métodos de Planejamento de Trajetórias..................................... 56 Capítulo 3 Controle da Trajetória através de Controle Fuzzy ......................... 59 3.1 Introdução....................................................................................................................... 59

3.1.1 Controle Fuzzy............................................................................................................... 61 3.2 Motivação....................................................................................................................... 65 3.3 Descrição do Controlador............................................................................................... 66

3.3.1 Posição de Destino ........................................................................................................ 66 3.3.2 Planejamento da Trajetória............................................................................................ 67 3.3.3 Cálculo dos Erros .......................................................................................................... 67 3.3.4 Amostragem da Trajetória ............................................................................................. 67 3.3.5 Controlador.................................................................................................................... 69 3.3.6 Transformação de Coordenadas .................................................................................... 75 3.3.7 Transformação dos Sinais de Controle.......................................................................... 75

3.3.7.1 Aumento da Ponderação sobre a Correção do Erro Angular .................................. 76 3.3.8 Sistema .......................................................................................................................... 77 3.3.9 Reconhecimento de imagens ......................................................................................... 77 3.3.10 Câmera........................................................................................................................... 77

3.4 Formulação de um Controlador PID para Comparação com o Controlador Fuzzy ....... 78 3.5 Resultados em Simulação............................................................................................... 79

3.5.1 A Interface de Simulação .............................................................................................. 79 3.5.2 Trajetórias Percorridas pelo Robô em simulação .......................................................... 81

3.5.2.1 Controlador PID...................................................................................................... 82 3.5.2.2 Controlador Baseado em Lógica Fuzzy .................................................................. 86

3.6 Considerações Finais...................................................................................................... 90 Capítulo 4 Controle de Trajetória através de Controle Preditivo.................... 91 4.1 Introdução....................................................................................................................... 91 4.2 Motivação....................................................................................................................... 93

4.2.1 Controle Preditivo Aplicado a Robótica Móvel ............................................................ 94 4.3 Implementação do controlador MPC ............................................................................. 96

4.3.1 Modelo de Previsão ....................................................................................................... 96 4.3.2 Função de Custo ............................................................................................................ 99

4.3.2.1 Referências Futuras................................................................................................. 99 4.3.3 Obtenção da Lei de Controle ....................................................................................... 101

4.4 Resultados em Simulação............................................................................................. 102 4.5 Considerações Finais sobre o Controlador Preditivo ................................................... 106 Capítulo 5 Experimento em Tempo Real ...................................................... 107 5.1 Descrição Geral do Sistema ......................................................................................... 108

5.1.1 Sistema de Acionamento dos Motores ........................................................................ 110 5.1.2 Sistema de Comunicação Serial Via Rádio ................................................................. 111 5.1.3 Sistema de Reconhecimento de Imagens..................................................................... 112

5.2 Estimação do Modelo Real do Robô............................................................................ 118 5.3 Resultados Experimentais ............................................................................................ 122

5.3.1 Controlador PID .......................................................................................................... 122 5.3.1.1 Ambiente 1............................................................................................................ 122 5.3.1.2 Ambiente 2............................................................................................................ 124

5.3.2 Controlador Baseado em Lógica Fuzzy ....................................................................... 125 5.3.2.1 Ambiente 1............................................................................................................ 126 5.3.2.2 Ambiente 2............................................................................................................ 127

5.3.3 Controlador Preditivo .................................................................................................. 128 5.3.3.1 Ambiente 1............................................................................................................ 128 5.3.3.2 Ambiente 2............................................................................................................ 130

Capítulo 6 Conclusões e Trabalhos Futuros.................................................. 131

Page 8: RICARDO ARTIGAS LANGER

VI

6.1 Conclusões ................................................................................................................... 131 6.2 Trabalhos Futuros......................................................................................................... 133 Bibliografia....................................................................................................... 135 Lista de Anexos ................................................................................................ 142

Page 9: RICARDO ARTIGAS LANGER

VII

LISTA DE FIGURAS

FIGURA 1 AGV USADO NAS FÁBRICAS DA VOLVO. FONTE: (CURIE, 1999). ......................... 2 FIGURA 2 STANFORD CART. FONTE: (CURIE, 1999). .............................................................. 4 FIGURA 3 EXEMPLO DE UM ROBÔ DIFERENCIAL ...................................................................... 8 FIGURA 4 PROPOSTA DA IMPLEMENTAÇÃO EM TEMPO REAL. ................................................ 12 FIGURA 5 AMBIENTE DECOMPOSTO USANDO C SPACES........................................................ 18 FIGURA 6 TIPOS DE AMBIENTES............................................................................................. 21 FIGURA 7 OPERADORES DE SELEÇÃO, CRUZAMENTO E MUTAÇÃO. ...................................... 23 FIGURA 8 ESTRATÉGIAS DE CRUZAMENTO. ........................................................................... 24 FIGURA 9 CICLO DE DADOS EM UM ALGORITMO GENÉTICO CANÔNICO.................................. 24 FIGURA 10 TRAJETÓRIA ENCONTRADA PELO ALGORITMO GENÉTICO. ................................... 27 FIGURA 11 EVOLUÇÃO DO FITNESS DO MELHOR INDIVÍDUO (A) E DA MÉDIA DA POPULAÇÃO

(B) EM FUNÇÃO DO NÚMERO DE GERAÇÕES COM A SELEÇÃO POR ROLETA........................ 27 FIGURA 12 MELHORES TRAJETÓRIAS ENCONTRADAS PELO AG.............................................. 28 FIGURA 13 ELABORAÇÃO DOS CAMPOS POTENCIAIS. ............................................................. 29 FIGURA 14 CÁLCULO DA RESULTANTE.................................................................................. 30 FIGURA 15 PROCESSO DE TRIANGULARIZAÇÃO POR CORTA ORELHAS . ............................ 32 FIGURA 16 FUNÇÃO DE REPULSÃO RESULTANTE DE UM TRIÂNGULO..................................... 32 FIGURA 17 OBSTÁCULOS TRIANGULARIZADOS (A) E APF RESULTANTE (B).......................... 33 FIGURA 18 TRAJETÓRIA GERADA PELO ALGORITMO.............................................................. 34 FIGURA 19 TRAJETÓRIAS GERADAS ATRAVÉS DE CAMPOS POTENCIAIS. ................................ 34 FIGURA 20 PROBLEMA DOS MÍNIMOS LOCAIS. FONTE: (CHENNEY, 2005)............................. 35 FIGURA 21 EXEMPLO DO UMA BUSCA PELA MELHOR ESCOLHA. FONTE: (RICH, 1998).......... 37 FIGURA 22 CONSTRUÇÃO DOS GRAFOS DE VISIBILIDADE. FONTE: (CHENNEY, 2005). .......... 40 FIGURA 23 PROCESSO DE OFFSET

OBSTÁCULO ORIGINAL EM VERMELHO E EM AZUL A

FIGURA AMPLIADA............................................................................................................ 41 FIGURA 24 TRAJETÓRIA ENCONTRADA PELO A*. .................................................................. 41 FIGURA 25 TRAJETÓRIAS ENCONTRADAS PELO A*................................................................ 42 FIGURA 26 TRAJETÓRIA GERADA PELO ALGORITMO BUG2 PROPOSTO POR LUMELSKY E

STEPANOV........................................................................................................................ 44 FIGURA 27 TRAJETÓRIA GERADA PELO ALGORITMO VISBUG PROPOSTO POR LUMELSKY E

SKEWIS............................................................................................................................. 45 FIGURA 28 COMPARAÇÃO ENTRE UMA TRAJETÓRIA GERADA PELO VISBUG (EM VERMELHO),

O DISTBUG (EM PRETO) E O BUG2 (EM VERDE)................................................................ 46 FIGURA 29 TRAJETÓRIA GERADA PELO ALGORITMO K BUG. ............................................... 47 FIGURA 30 AMBIENTE DIVIDIDO EM TRÊS ÁREAS. ................................................................ 48 FIGURA 31 AMBIENTE NOVAMENTE DIVIDIDO EM TRÊS ÁREAS

PASSO 2. ............................ 49 FIGURA 32 TRAJETÓRIA FINAL. ........................................................................................... 49 FIGURA 33 TRAJETÓRIA SENDO GERADA PELO MÉTODO K BUG PASSO A PASSO. .................. 52 FIGURA 34 TRAJETÓRIA GERADA PASSO A PASSO PELO K BUG EM UM AMBIENTE

COMPLEXO. ...................................................................................................................... 53 FIGURA 35 TRAJETÓRIAS GERADAS PELO ALGORITMO K BUG.............................................. 54 FIGURA 36 COMPARAÇÃO ENTRE UMA TRAJETÓRIA GERADA PELO K BUG (VERDE) E PELO

A* (VERMELHO) PARA O AMBIENTE 3. ............................................................................. 54

Page 10: RICARDO ARTIGAS LANGER

VIII

FIGURA 37 EXEMPLO DE UM AMBIENTE EM QUE A TRAJETÓRIA GERADA PELO K BUG NÃO É

ÓTIMA. ............................................................................................................................. 55 FIGURA 38

WATT GOVERNOR. O TORQUE GERADO PELO PESO DAS BOLAS É EQUILIBRADO

PELO TORQUE GERADO PELA ROTAÇÃO DO EIXO (ROUTLEDGE, 1900).............................. 60 FIGURA 39 DIAGRAMA EM BLOCOS BÁSICO DE UM FLC. FONTE: (SHAW ET AL., 1999). ....... 62 FIGURA 40 EXEMPLOS DE TRAJETÓRIAS CONSEGUIDAS COM UM CONTROLADOR LINEAR E

BASEADO EM LÓGICA FUZZY. ............................................................................................ 65 FIGURA 41 DIAGRAMA EM BLOCOS DO SISTEMA REALIMENTADO COM CONTROLE FUZZY. .... 66 FIGURA 42 CÁLCULO DOS ERROS DE CONTROLE. .................................................................. 67 FIGURA 43 REFERÊNCIAS DE TRAJETÓRIA. ............................................................................ 68 FIGURA 44 TRAJETÓRIA INTERPOLADA. ................................................................................ 68 FIGURA 45 TRAJETÓRIA INTERPOLADA, REFERÊNCIAS COMUTADAS POR PROXIMIDADE. ...... 69 FIGURA 46 ERROS PARA O CONTROLADOR FUZZY.................................................................. 71 FIGURA 47 PROCESSO DE FUZZIFICAÇÃO............................................................................... 73 FIGURA 48 FUNÇÕES DE PERTINÊNCIA PARA OS ERROS EM X E EM Y. .................................... 74 FIGURA 49 FUNÇÕES DE PERTINÊNCIA PARA O ERRO DE ORIENTAÇÃO. ................................. 74 FIGURA 50 FUNÇÕES DE PERTINÊNCIA PARA A VELOCIDADE ANGULAR................................. 74 FIGURA 51 FUNÇÕES DE PERTINÊNCIA PARA A VELOCIDADE LINEAR. ................................... 75 FIGURA 52 DIAGRAMA EM BLOCOS DO SISTEMA REALIMENTADO UTILIZANDO CONTROLE

PID. ................................................................................................................................. 79 FIGURA 53 PAINEL FRONTAL DO SIMULADOR........................................................................ 80 FIGURA 54 FUNÇÕES DE PERTINÊNCIA FUZZY. FONTE: (NGUYEN E WALKER, 2000)............. 80 FIGURA 55 AMBIENTE DE CONFIGURAÇÃO DO CONTROLADOR FUZZY. .................................. 81 FIGURA 56 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O CONTROLADOR PID COM

COMUTAÇÃO DE WAYPOINTS POR TEMPO. .......................................................................... 82 FIGURA 57 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O CONTROLADOR PID

COM COMUTAÇÃO DE WAYPOINTS POR TEMPO. .................................................................. 83 FIGURA 58 REFERÊNCIAS, ORIENTAÇÕES DO ROBÔ E SINAIS DE CONTROLE GERADOS PELO

CONTROLADOR PID COM COMUTAÇÃO DE WAYPOINTS POR TEMPO................................... 84 FIGURA 59 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O CONTROLADOR PID COM

COMUTAÇÃO DE WAYPOINTS POR DISTÂNCIA..................................................................... 84 FIGURA 60 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O CONTROLADOR PID

COM COMUTAÇÃO DE WAYPOINTS POR DISTÂNCIA............................................................. 85 FIGURA 61 REFERÊNCIAS, ORIENTAÇÕES E SINAIS DE CONTROLE GERADOS PELO

CONTROLADOR PID COM COMUTAÇÃO DE WAYPOINTS POR DISTÂNCIA............................. 85 FIGURA 62 TRAJETÓRIA DE ESTACIONAMENTO COM O CONTROLADOR FUZZY. ...................... 86 FIGURA 63 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O FLC COM COMUTAÇÃO DE

WAYPOINTS POR TEMPO. .................................................................................................... 87 FIGURA 64 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O FLC COM

COMUTAÇÃO DE WAYPOINTS POR TEMPO. .......................................................................... 87 FIGURA 65 REFERÊNCIAS, ORIENTAÇÃO E SINAIS DE CONTROLE GERADOS PELO FLC COM

COMUTAÇÃO DE WAYPOINTS POR TEMPO. .......................................................................... 88 FIGURA 66 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O FLC COM COMUTAÇÃO DE

WAYPOINTS POR DISTÂNCIA. .............................................................................................. 88 FIGURA 67 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O FLC COM

COMUTAÇÃO DE WAYPOINTS POR DISTÂNCIA..................................................................... 89 FIGURA 68 REFERÊNCIAS, ORIENTAÇÃO E SINAIS DE CONTROLE GERADOS PELO FLC COM

COMUTAÇÃO DE WAYPOINTS POR DISTÂNCIA..................................................................... 89 FIGURA 68 DESENHO ESQUEMÁTICO DO ROBÔ MÓVEL CONSIDERANDO A NOVA VARIÁVEL

DE CONTROLE. .................................................................................................................. 97

Page 11: RICARDO ARTIGAS LANGER

IX

FIGURA 69 ERROS CONSIDERADOS PARA O CÁLCULO DAS REFERÊNCIAS FUTURAS DO

CONTROLADOR PREDITIVO. ............................................................................................ 100 FIGURA 70 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O CONTROLADOR PREDITIVO NO

ENSAIO 1. ....................................................................................................................... 103 FIGURA 71 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O CONTROLADOR

PREDITIVO NO ENSAIO 1.................................................................................................. 103 FIGURA 72 REFERÊNCIAS ANGULARES, ORIENTAÇÃO E SINAIS DE CONTROLE GERADOS PELO

CONTROLADOR PREDITIVO NO ENSAIO 1......................................................................... 104 FIGURA 73 TRAJETÓRIA PERCORRIDA E PLANEJADA PARA O CONTROLADOR PREDITIVO NO

ENSAIO 2. ....................................................................................................................... 104 FIGURA 74 REFERÊNCIAS E POSIÇÕES INSTANTÂNEAS DO ROBÔ PARA O CONTROLADOR

PREDITIVO NO ENSAIO 2.................................................................................................. 105 FIGURA 75 REFERÊNCIAS ANGULARES, ORIENTAÇÕES E SINAIS DE CONTROLE GERADOS

PELO CONTROLADOR PREDITIVO NO ENSAIO 2. ............................................................... 105 FIGURA 76 ESQUEMA DO HARDWARE UTILIZADO. ................................................................ 108 FIGURA 77 FOTO DA PLACA DE ACIONAMENTO DO ROBÔ. ................................................... 109 FIGURA 78 FOTOS DO ROBÔ CONSTRUÍDO COM LEGO........................................................ 109 FIGURA 79 FORMA DE ONDA PULSADA................................................................................ 110 FIGURA 80 MODULAÇÃO POR LARGURA DE PULSO.............................................................. 111 FIGURA 81 IMAGEM COM RUÍDOS E DEPOIS DE FILTRADA. FONTE: (CASACURTA ET AL.,

1998). ............................................................................................................................ 113 FIGURA 82 PADRÕES SENDO DESTACADOS EM UMA IMAGEM. FONTE: (CASACURTA ET AL.,

1998). ............................................................................................................................ 113 FIGURA 83 FIGURA PADRÃO PARA O RECONHECIMENTO DO ROBÔ. ..................................... 115 FIGURA 84 ROBÔ SENDO RECONHECIDO NA IMAGEM. ......................................................... 116 FIGURA 85 IMAGEM CAPTURADA PELA CÂMERA AÉREA...................................................... 116 FIGURA 86 OBJETOS CLAROS DESTACADOS DA IMAGEM. .................................................... 117 FIGURA 87 RECONHECIMENTO DE PADRÕES CIRCULARES. .................................................. 117 FIGURA 88 PADRÕES CIRCULARES RECONHECIDOS. ............................................................ 118 FIGURA 89 PROCEDIMENTO PARA ESTIMAR AS VELOCIDADE DOS MOTORES. ...................... 119 FIGURA 90 RESPOSTA AO DEGRAU DOS MOTORES DO ROBÔ. ............................................... 120 FIGURA 91 COMPARAÇÃO ENTRE O SISTEMA REAL E O MODELO ESTIMADO. ....................... 121 FIGURA 92 LINEARIDADE DO SISTEMA. ............................................................................... 121 FIGURA 93 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO CONTROLADOR PID PARA O

AMBIENTE 1.................................................................................................................... 123 FIGURA 94 POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O CONTROLADOR

PID EM TEMPO REAL PARA O AMBIENTE 1...................................................................... 123 FIGURA 95 SINAIS DE CONTROLE PARA O CONTROLADOR PID EM TEMPO REAL PARA O

AMBIENTE 1.................................................................................................................... 123 FIGURA 96 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO CONTROLADOR PID PARA O

AMBIENTE 2.................................................................................................................... 124 FIGURA 97 POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O CONTROLADOR

PID EM TEMPO REAL PARA O AMBIENTE 2...................................................................... 124 FIGURA 98 SINAIS DE CONTROLE PARA O CONTROLADOR PID EM TEMPO REAL PARA O

AMBIENTE 2.................................................................................................................... 124 FIGURA 99 - FUNÇÕES DE PERTINÊNCIA PARA OS ERROS EM X E Y UTILIZADAS NO

CONTROLADOR EM TEMPO REAL..................................................................................... 125 FIGURA 100 - FUNÇÕES DE PERTINÊNCIA PARA A VELOCIDADE ANGULAR CONTROLADOR EM

TEMPO REAL. .................................................................................................................. 125

Page 12: RICARDO ARTIGAS LANGER

X

FIGURA 101 - FUNÇÕES DE PERTINÊNCIA PARA OS ERROS EM X E Y UTILIZADAS NO

CONTROLADOR EM TEMPO REAL..................................................................................... 126 FIGURA 102 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO FLC PARA O AMBIENTE 1.... 126 FIGURA 103 POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O FLC EM

TEMPO REAL NO O AMBIENTE 1....................................................................................... 127 FIGURA 104 SINAIS DE CONTROLE PARA O FLC EM TEMPO REAL PARA O AMBIENTE 1. ...... 127 FIGURA 105 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO FLC PARA O AMBIENTE 2.... 127 FIGURA 106 POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O FLC EM

TEMPO REAL PARA O AMBIENTE 2................................................................................... 128 FIGURA 107 SINAIS DE CONTROLE PARA O PELO FLC EM TEMPO REAL PARA O AMBIENTE 2.128 FIGURA 108 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO CONTROLADOR PREDITIVO

PARA O AMBIENTE 1. ...................................................................................................... 129 FIGURA 109

POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O CONTROLADOR

PREDITIVO EM TEMPO REAL PARA O AMBIENTE 1............................................................ 129 FIGURA 110 SINAIS DE CONTROLE PARA O CONTROLADOR PREDITIVO EM TEMPO REAL PARA

O AMBIENTE 1................................................................................................................. 129 FIGURA 111 TRAJETÓRIA PERCORRIDA EM TEMPO REAL PELO CONTROLADOR PREDITIVO

PARA O AMBIENTE 2. ...................................................................................................... 130 FIGURA 112 POSIÇÃO ATUAL E REFERÊNCIAS EM FUNÇÃO DO TEMPO PARA O CONTROLADOR

PREDITIVO EM TEMPO REAL PARA O AMBIENTE 2............................................................ 130 FIGURA 113 SINAIS DE CONTROLE PARA O CONTROLADOR PREDITIVO EM TEMPO REAL PARA

O AMBIENTE 2................................................................................................................. 130

Page 13: RICARDO ARTIGAS LANGER

XI

LISTA DE TABELAS

TABELA 1 EXEMPLO DE UMA POPULAÇÃO, CODIFICAÇÃO E FITNESS. .................................... 23 TABELA 2 DESEMPENHO DO ALGORITMO GENÉTICO. ............................................................ 27 TABELA 3 COMPARAÇÃO ENTRE OS MÉTODOS DE PLANEJAMENTO DE TRAJETÓRIAS............. 58 TABELA 4 TABELAS ASSOCIATIVAS DO CONTROLADOR FUZZY. ............................................. 72 TABELA 5 GANHOS UTILIZADOS PARA O CONTROLADOR PID EM SIMULAÇÃO. ..................... 82 TABELA 6 COMPARAÇÃO ENTRE OS CONTROLADORES PID E FUZZY IMPLEMENTADOS.......... 90 TABELA 7 COMANDOS DADOS AO ROBÔ.............................................................................. 112 TABELA 8 GANHOS UTILIZADOS PARA O CONTROLADOR PID EM SIMULAÇÃO. ................... 122

Page 14: RICARDO ARTIGAS LANGER

XII

LISTA DE SIGLAS

AG

Algoritmo Genético

AGV

Automatic Guided Vehicle

APF

Artificial Potencial Field

CAD

Computer Aided Drawing CCD

Charge Coupled Device DC

Direct Current FLC

Fuzzy Logic Controller GPC

Generalized Predictive Controller GPS

Global Positioning System LED

Light Emitting Diode MIMO

Multiple Input, Multiple Output PC

Personal Computer PID

Proporcional, Integral e Derivativo PWM

Pulse Width Modulation RAM

Random Access Memory RMS

Root Mean Square SISO

Single Input, Single Output SMPA

Sense Model Plan Act USB

Universal Serial Bus

Page 15: RICARDO ARTIGAS LANGER

XIII

LISTA DE SÍMBOLOS

X(t), Y(t) : posição do robô com relação aos eixos X e Y

(t)

: orientação do robô (ângulo com o eixo X)

F : função que descreve a dinâmica e cinemática do robô

Vr(t) : tensão elétrica aplicada ao motor direito, valor eficaz

Vl(t) : tensão elétrica aplicada ao motor esquerdo, valor eficaz

Tr : constante de tempo do motor direito [ segundos ]

Tl : constante de tempo do motor esquerdo [ segundos ]

Kr : ganho do motor direito [ radianos / ( Volts x segundo ) ]

Kl : ganho do motor esquerdo [ radianos / ( Volts x segundo ) ]

ql(t) : velocidade angular do eixo do motor esquerdo [ rad/s ]

qr(t) : velocidade angular do eixo do motor direito [ rad/s ]

R : metade da distância entre as rodas ou raio do carro [ metros ]

r : metade do diâmetro das rodas ou raio da roda [ metros ]

: o número de características de cada indivíduo

)(tak

: k ésimo indivíduo da população na geração t

P(t) : população na geração t

( )(tak ) : fitness do k ésimo indivíduo da população na geração t

))((' }{ tPrcp : operação de cruzamento sobre a população na geração t usando a probabilidade

pc de ocorrer

))((' }{ tam kpm

: operação de mutação sobre o k ésimo indivíduo da população na geração t

usando a probabilidade pm de ocorrer

))((' tPs : operação de seleção sobre a população na geração t

T : número máximo de gerações

f : fitness suficientemente otimizado

t : operador de tempo em número de gerações

N : número de nós (incluindo o ponto de início e destino)

Xi, Yi : coordenadas do nó i (considerando i =1 o nó inicial)

i : distância percorrida dentro de um obstáculo por um segmento entre o nó i e o

nó seguinte

: fator de penalidade

Page 16: RICARDO ARTIGAS LANGER

XIV

|| rF

: módulo da força de repulsão

d : distância euclidiana do ponto atual até o centro círculo circunscrito ao triângulo

que origina a força de repulsão

Rrmáx : ganho no raio da força de repulsão

Rc : raio do círculo circunscrito ao triângulo que origina a força de repulsão

Mr : ganho no módulo da força repulsiva

h : fator de decaimento da força repulsiva

F

: força resultante

Ma : ganho da força de atratividade

aF

: força de atratividade

irF ,

: força de repulsividade gerada pelo triângulo i atuando sobre o ponto considerado

rmáxF

: força de repulsividade, irF , , de maior módulo atuando sobre o ponto considerado

n : número do nó atual

f(n) : custo atribuído ao nó n

g(n) : custo para partir do nó inicial e atingir o nó n

h (n) : estimativa do custo para partir do nó n e atingir o nó objetivo

rm : coeficiente angular da reta rm

rm : coeficiente linear da reta rm

ij : coeficiente angular da reta que contém a aresta i do objeto j

ij : coeficiente linear da reta que contém a aresta i do objeto j

Xc : coordenada no eixo das abscissas do ponto onde ocorre a intersecção das retas

Yc : coordenada no eixo das ordenadas do ponto onde ocorre a intersecção das retas

QL(t) : velocidade linear em regime permanente[ m/s ]

Q (t) : velocidade angular do robô [ rad/s ]

Vl1 : valor calculado pelo controlador para o motor esquerdo [ Volts ]

Vr1 : valor calculado pelo controlador para o motor direito [ Volts ]

Vl2 : valor que será efetivamente enviado para o motor esquerdo [ Volts ]

Vr2 : valor que será efetivamente enviado para o motor direito [ Volts ]

VMÀX : tensão máxima suportada pelos motores [ Volts ]

QL : velocidade linear [ m/s ]

Q

: velocidade angular do robô [ rad/s ]

EL : erro linear [ m ]

E

: erro angular [ rad ]

Page 17: RICARDO ARTIGAS LANGER

XV

t : intervalo de amostragem [ s ]

k : tempo discreto

w(k + j|k) : referências futuras

(k + j|k) : previsões das saídas do sistema

u(k + j|k) : incrementos do sinal de controle

: ponderação sobre os esforços de controle

Ny : horizonte de previsão da saída

Nu : quantidade de incrementos do sinal de controle considerados na otimização

w L(k + j|k) : referências futuras de deslocamento [m]

w (k + j|k) : referências futuras de orientação [ rad ]

[Xd(k), Yd(k)] : waypoint atual com relação aos eixos X e Y [ m ]

M : número de instantes de amostragem considerados no ensaio;

L : comprimento do carro

V

: norma II do vetor V é definida como sendo a raiz quadrada do somatório dos

quadrados de todos os seus elementos.

Page 18: RICARDO ARTIGAS LANGER

1

Capítulo 1 Introdução

Com a crescente necessidade de aumento de produtividade e entrega de produtos finais com

qualidade uniforme, a indústria está cada vez mais adotando soluções automatizadas. Atualmente, a

maioria das atividades automatizadas na manufatura é realizada por máquinas especializadas,

projetadas para cumprirem atividades pré-determinadas. Assim sendo, a robótica, com a utilização de

braços manipuladores robotizados, atingiu o seu ápice gerando um mercado de mais de dois bilhões

de dólares por ano no mundo (Pazos, 2002).

Preso a uma determinada posição no processo produtivo, manipuladores robóticos podem atuar

com grande velocidade e precisão apropriadas para realizar tarefas como soldagem ponto e pintura.

Na indústria eletrônica, por exemplo, manipuladores colocam componentes com precisão sobre-

humana, tornando realidade equipamentos sofisticados tais como os telefones celulares e os laptops.

Mas apesar deste sucesso, estes robôs comerciais possuem uma desvantagem: a falta de

mobilidade. Um manipulador possui um volume de trabalho limitado ao local onde ele está fixado. A

falta de flexibilidade e o alto custo destes sistemas têm aumentado a procura por alternativas mais

flexíveis e de baixo custo (Fu et al., 1987).

Em contraste com os manipuladores, um robô móvel pode percorrer o parque fabril aplicando

suas funcionalidades onde quer que seja útil. Assim, o campo da robótica móvel vem ganhando força

e destaque em diversas aplicações, tais como: polir superfícies, patrulhar áreas, desativar bombas,

cortar a grama, fazer tours em museus, guiar pessoas em supermercados, transportar materiais, buscar

minas terrestres, localizar destroços submarinos, entre outros (Siegwart e Nourbakhsh, 2004).

1.1 Motivação

A robótica móvel é um tópico desafiante por diversas razões. Primeiramente, transformar um

computador sobre rodas em uma máquina inteligente, capaz de identificar características do ambiente,

medir grandezas físicas, reconhecer padrões, construir mapas, aprender com a experiência requer

conhecer diversas áreas do conhecimento humano. A engenharia e a ciência da computação são as

Page 19: RICARDO ARTIGAS LANGER

2

principais áreas que tratam da robótica móvel. Quando surgem questões referentes ao comportamento

inteligente, a psicologia e a filosofia oferecem hipóteses e algumas respostas (Nehmzow, 2000).

Em segundo lugar, os robôs móveis são o mais próximo que se pode chegar na criação de

agentes inteligentes. Por séculos as pessoas têm interesse em construir máquinas que possam pensar e

tomar decisões baseadas no ambiente que as cercam. Para satisfazer este objetivo, a pesquisa em

robótica móvel tem intensificado o uso de inteligência artificial, a fim de capacitar os robôs para

mimetizar o comportamento dos seres vivos.

Em terceiro lugar está o fato de que já se encontram aplicações de robótica móvel em diversas

áreas, tais como na manufatura, no transporte e armazenamento de materiais (Santos, 2001), na

medicina realizando assistência de deficientes físicos (Takahashi et al., 2004), em aplicações militares

no desarmamento de minas terrestres e explosivos (Mclurkin, 1995), em jogos de computador

(Littman et al., 1994) e na exploração espacial (NASA, 1997). Em Asami (1994) e Schraff (1994),

por exemplo, os robôs de serviços são apresentados como uma área emergente de pesquisa e

aplicação. Como um exemplo mais específico pode-se citar Mandow et al. (1996), onde é descrito um

robô móvel autônomo para aplicação em agricultura, objetivando substituir o trabalhador humano em

atividades inóspitas em estufas, tais como a pulverização com inseticidas.

A indústria automobilística, que utiliza na maioria das vezes robôs manipuladores, já está

empregando robôs móveis. Nova geração de AGVs (Automatic Guided Vehicles) da VOLVO,

mostrado na Figura 1, são usados para transportar blocos de motores de uma estação de montagem

para outra. Eles são guiados por um fio elétrico instalado no chão. Há cerca de 4000 AGVs apenas

nas fábricas da VOLVO.

Figura 1 AGV usado nas fábricas da VOLVO. Fonte: (Curie, 1999).

Os mesmos algoritmos usados para planejar trajetórias de robôs móveis também são utilizados

em jogos eletrônicos. Esta indústria, a de jogos eletrônicos, movimenta mais dinheiro no mundo do

que a indústria cinematográfica, ultrapassando, em 2005, mais de 17 bilhões de dólares por ano

(Comitê de Promoção da Indústria de Desenvolvimento de Jogos Eletrônicos no Brasil, 2006).

Atualmente, a robótica autônoma móvel também vem assumindo um importante papel no

desenvolvimento de pesquisas em inteligência artificial. Existem tópicos, nesta área, que são de

Page 20: RICARDO ARTIGAS LANGER

3

fundamental importância, por exemplo: manutenção da localização do robô, planejamento de

trajetórias e navegação.

Por outro lado, o desenvolvimento de sistemas de controle para robôs móveis autônomos tem

se mostrado um desafio até os dias atuais. Diferentes abordagens para o projeto de sistema de controle

para robôs móveis autônomos têm sido utilizadas em diversas áreas de pesquisa. No entanto, os robôs

móveis autônomos ainda não causaram impacto em aplicações domésticas, principalmente devido à

falta de um sistema de controle robusto, confiável e flexível que permita que estes robôs operem em

ambientes desconhecidos e habitados por seres humanos.

Para poder navegar em um dado ambiente, um robô precisa ser capaz de determinar sua

localização (posição e orientação). Estimativas de posição relativamente precisas podem ser obtidas

integrando as informações cinemáticas do robô com os seus sensores de velocidade e direção

(encoders). Mas o acúmulo de erro pode levar a níveis inaceitáveis de discrepância, prejudicando de

forma significativa o desempenho do sistema de controle e navegação. Para se corrigir este problema

pode-se usar sensores que não acumulam erros com o decorrer da trajetória, tais como sonares e

câmeras. Dentre os dispositivos sensores que vêm sendo cada vez mais usados em robótica móvel

estão os sistemas de aquisição de imagens através de câmeras de vídeo (Asami, 1994; Dudek e

Jenkin, 2000; Gomide e Rodrigues, 1994; Righes, 2004).

Após a sua localização ser determinada, o robô deve utilizar as informações provenientes de

seus sensores e planejar a sua trajetória de forma a evitar obstáculos e atingir o seu objetivo. Nesta

etapa devem ser analisadas as dimensões do robô, as posições e geometrias dos obstáculos, a

possibilidade dos obstáculos se moverem durante a trajetória do robô e a otimização da trajetória

segundo critérios pré estabelecidos. Com a trajetória planejada, um sistema de controle é responsável

por fazer com que o robô a percorra, levando em consideração sua dinâmica e a velocidade do

movimento.

1.2 Robótica móvel

A seguir, tem-se um histórico resumido da robótica móvel destacando alguns aperfeiçoamentos

do último século.

Os primeiros robôs móveis surgiram durante a 2a Guerra Mundial como resultado das pesquisas

em novos campos da ciência da computação e cibernética. Esses primeiros robôs eram, na maioria das

vezes, bombas voadoras que usavam sistemas de orientação e controle por radar para detonar apenas

a uma determinada distância do alvo. Os foguetes V1 e V2 tinham um primitivo sistema de piloto

automático e foram os predecessores dos mísseis balísticos continentais atuais (Keramas, 1999).

Page 21: RICARDO ARTIGAS LANGER

4

Em 1948, Grey Walter construiu Elmer e Elsie, dois robôs móveis que se assemelhavam a

tartarugas. Oficialmente eles foram chamados de Machina Speculatrix, pois estes robôs estavam

programados para explorar o ambiente através de sensores luminosos.

Mais de uma década depois, a Universidade John Hopkins desenvolveu o Beast, em 1961. Este

robô usava um sonar para se guiar e quando suas baterias estavam se esgotando ele procurava uma

tomada de energia elétrica e se carregava sozinho. Alguns anos depois, em 1969, surgiu o Mowbot,

que foi o primeiro robô que automaticamente cortava a grama.

Em 1970, foi construído o Stanford Cart, mostrado na Figura 2. Era um robô capaz de seguir

uma linha desenhada no chão usando uma câmera. Este robô tinha uma conecção de rádio para um

computador central que efetuava o processamento das imagens.

Figura 2 Stanford Cart. Fonte: (Curie, 1999).

Na mesma época o Instituto de Pesquisa de Stanford também estava desenvolvendo o Shakey.

Este robô, com movimentos trêmulos, era capaz de raciocinar sobre as suas ações, interpretando os

comandos dados por seus operadores.

Após alguns anos, a União Soviética explorou a superfície da Lua com o Lunokhod 1. Em

1976, a NASA enviou duas espaçonaves não tripuladas a Marte.

Em 1990, Joseph Engelberger, juntamente com alguns colegas, projetou o Helpmate, o

primeiro robô autônomo para auxiliar em atividades hospitalares. Seis anos depois, a NASA enviou

para Marte o robô Sojourner. Este robô era teleoperado da Terra, mas possuía um sistema de evasão

de perigo que o permitia navegar pelo ambiente desconhecido de forma autônoma.

A Sony introduziu o Aibo em 1999, um cachorro robótico capaz de ver, andar e interagir com

os seres humanos.

A robótica móvel no início do século XXI foi marcada pelo aparecimento dos robôs

humanóides. Em 2005 a HONDA terminou quase três décadas de desenvolvimento produzindo o

Asimo, um robô humanóide de 1,5m de altura que é capaz de correr e subir escadas, algo nunca antes

alcançado (Honda, 2000).

Page 22: RICARDO ARTIGAS LANGER

5

1.2.1 Tipos e Classificações

O campo da robótica móvel pode ser dividido segundo diferentes topologias possíveis para os

robôs, suas formas de locomoção e navegação. Quanto à forma de locomoção os robôs móveis

classificam-se em quatro tipos: terrestres, aquáticos, aéreos e espaciais (Dudek e Jenkin, 2000).

Os robôs terrestres são aqueles que caminham sobre o chão usando uma superfície sólida e a

gravidade. Estes robôs geralmente possuem rodas, mas há também os que caminham, escalam, se

arrastam ou usam esteiras para se locomover. Robôs aquáticos operam tanto na superfície da água

quanto sob a água. Os robôs aéreos, em sua maioria, mimetizam os aviões e pássaros. Robôs espaciais

são desenvolvidos para operarem em micro gravidade, próprios para a exploração espacial.

Os robôs terrestres com rodas podem ser construídos a partir de diversas topologias, podendo

ou não ser holonômicos. A característica de ser holonômico deve-se ao fato do robô ser capaz de

atingir certas posições imediatamente adjacentes a sua posição atual, sem a necessidade de realizar

manobras complexas. Esta característica é raramente observada em robôs móveis que utilizam rodas,

a menos que todas as suas rodas possuam esterçamento independente.

Um outro critério usado para classificar robôs móveis não está na sua construção física, mas

sim na maneira com que ele interage com outros robôs. Robôs móveis podem ser projetados para

atuarem de forma solitária ou construídos especificamente para trabalharem em conjunto como, por

exemplo, nas competições de futebol de robôs (Brand et al., 2002).

1.2.2 Sensores Na robótica, são empregados diversos tipos de sensores que informam ao robô detalhes sobre o

ambiente em que ele está inserido. Estes sensores podem ser ativos ou passivos. Sensores ativos são

aqueles que emitem energia e analisam as perturbações que esta energia gera sobre o ambiente.

Sensores passivos são aqueles que apenas realizam observações do ambiente sem modificá lo. Os

tipos de sensores mais empregados em robôs móveis são sensores de choque (bumbers), sensores

infravermelhos, sensores do tipo sonar, sensores do tipo radar, sensores Laser, sensores baseados em

satélites (GPS

Global Positioning System), bússolas, odômetros e sensores baseados em visão

(Dudek e Jenkin, 2000; Heinen, 2000).

Os sensores de visão obtêm uma grande quantidade de dados. Para o processamento desses

dados, normalmente é necessário um hardware dedicado para análise e processamento destes dados.

Com um sensor CCD (Charge Coupled Device), o robô pode amostrar o ambiente onde está inserido

cerca de 30 vezes por segundo, obtendo imagens, coloridas ou em tonalidades de cinza, com uma

resolução variável dependendo do CCD utilizado.

Com as imagens obtidas, técnicas de processamento de imagens como reconhecimento de

padrões, detecção de bordas, análise de cores, etc, podem ser aplicadas para se extrair informações

sobre o ambiente. Usando-se duas câmeras, pode-se até reconstruir o ambiente em três dimensões.

Page 23: RICARDO ARTIGAS LANGER

6

Isso permite que a distância entre o robô e um objeto possa ser determinada. Este processo é

conhecido por estereoscopia. Entretanto, a reconstrução de ambientes acarreta um alto custo

computacional e está sujeita a problemas de oclusão e imprecisão (Silva, 2001).

Com relação a sua disposição, os sensores podem ser internos ou externos. Os sensores internos

são aqueles localizados no próprio robô e por isso se movem juntamente com o mesmo. Em oposição,

os sensores externos são fixos ao ambiente ou em algum outro sistema móvel e observam o

movimento do veículo. Além desta classificação, os sensores podem fornecer um conhecimento local,

que é usado para determinação das características internas do robô (ex.: velocidade e posição dos

motores), ou um conhecimento global que provê informação dos estados do robô em relação ao

ambiente (ex.: velocidade e posição do robô) (Abidi e Gonzales, 1992).

Os sensores visuais podem, portanto, ser também internos ou externos (Horn, 1986). Quando as

câmeras estão localizadas no robô, este usa conhecimentos prévios e marcas visuais para localizar-se

no ambiente (Ma et al., 1999; Sujan et al., 2006). De maneira similar, as câmeras externas são usadas

para observar o movimento do robô e informar a sua localização. A principal diferença neste caso, é

que o processamento da imagem não está no veículo, mas em um segundo computador que toma

algumas decisões e as transmite ao robô, muitas vezes denominado agente. O controle dos robôs é

feito, então, de forma externa e, quando não existe além do sistema visual um processamento e

sensoriamento local, este se torna uma tarefa não trivial (Ma et al., 1999). Atualmente, esta

configuração tem sido encontrada em aplicações onde se deseja obter robôs de baixo custo ou que não

podem conter carga (Zhang e Ostrowski, 1999).

1.2.3 Comportamento e Navegação Para que um robô móvel autônomo possa navegar com sucesso através de um ambiente, ele

deve ser capaz de tomar decisões baseadas nas informações provenientes de seus sensores. O

comportamento do robô pode ser classificado em três tipos: sistemas deliberativos, reativos ou

híbridos (Siegwart e Nourbakhsh, 2004; Nehmzow, 2000).

Os sistemas de controle deliberativos usam o modelo SMPA (Sense Model Plan Act). O robô

recebe, através de seus sensores, informações sobre o ambiente onde está inserido. Baseado nestes

dados o robô constrói um modelo do ambiente para que possa gerar um plano de ação. Estes sistemas

possuem a desvantagem de necessitar a construção de um modelo preciso do ambiente.

Por outro lado, os sistemas de controle reativos não possuem uma representação do ambiente

onde estão inseridos e funcionam sob o princípio dos sistemas sensoriais motores, ou seja, sentem e

agem. Baseados no princípio da reatividade, isto é, na suposição de que, em sistemas dinâmicos

complexos, comportamentos inteligentes podem emergir a partir da interação de comportamentos

simples. Neste caso, existem vários processos que concorrem entre si. Cada processo recebe dados de

seus sensores e alguns desses processos podem inibir outros, dependendo das prioridades de cada um.

Page 24: RICARDO ARTIGAS LANGER

7

Há também sistemas híbridos que incorporam características deliberativas e reativas de forma a

conseguir uma melhora no desempenho (Siegwart e Nourbakhsh, 2004; Nehmzow, 2000).

A classificação entre deliberativo ou reativo refere-se ao comportamento do robô quanto à

tomada de decisões locais, de forma a evitar obstáculos e determinar a sua posição em um dado

ambiente. Para que um robô seja capaz de ir de um ponto a outro, é necessário também determinar o

caminho a ser percorrido até o objetivo. Com estas informações, o robô poderá planejar e executar a

tarefa de se deslocar até um local específico. Este conjunto de condições e ações é chamado de

navegação (Heinen, 2000). A navegação robótica pode ser dividida em três grupos: global, local e

híbrida.

Na navegação global, o robô planeja o caminho que irá percorrer baseado no seu

posicionamento absoluto em relação ao mapa de um ambiente.

Na navegação local, a posição é sempre relativa a objetos (estáticos ou em movimento) do

ambiente. O robô então avança no seu caminho evitando tais obstáculos.

A navegação visual pode ser enquadrada tanto como global quanto local. Se a câmera estiver

instalada externamente ao robô será uma navegação global. Se a câmera estiver instalada no robô a

informação será relativa a pontos de referência contidos em uma seqüência de imagens. Esta

seqüência de imagens descreverá uma determinada área do ambiente onde o robô está inserido.

Samsom et al. (1990) apresentam diversos aspectos e dificuldades encontrados no projeto de

sistemas de controle para robôs com rodas, não holonômicos, em espaço cartesiano. Aracil et al.

(2005) menciona a utilização de robôs móveis em ambiente indoor com realimentação de informação

visual.

Os trabalhos supracitados são exemplos de duas principais dificuldades encontradas para que

um robô móvel atinja o seu destino e evite obstáculos. O primeiro problema consiste em fazer com

que o robô móvel parta de um ponto específico e atinja um outro ponto com uma determinada

orientação. O segundo problema decorre do fato de que cada um dos pontos que o robô percorrerá

deve ser planejado a priori, a fim de evitar os obstáculos e atender a todas as condições de otimização

(Harden, 1997). Resumindo, é necessário um planejamento de trajetória que gere pontos

intermediários e um controle de movimento para que se faça cumprir tais pontos.

Para o planejamento da trajetória existem duas vertentes: planejamento em um ambiente

estático ou dinâmico (Paula, 2004). Denomina-se ambiente estático quando os obstáculos não

apresentam qualquer movimento, permanecendo imóveis durante todo o trajeto do robô móvel.

Enquanto que no ambiente dinâmico os obstáculos se movem, necessitando que o processo de

planejamento de trajetória seja recalculado dinamicamente durante o percurso do robô. Em qualquer

um dos casos, o ambiente pode ser conhecido por completo, por meio de câmeras ou de um

mapeamento realizado a priori, ou apenas parcialmente, necessitando o robô possuir sensores locais

como infravermelho e/ou ultra som.

Page 25: RICARDO ARTIGAS LANGER

8

1.3 Modelo do Robô móvel tipo CART

A plataforma de testes utilizada neste trabalho é de um robô móvel denominado tipo cart. Esta

topologia consiste em duas rodas montadas em um eixo comum e controladas por motores

individuais. Este modelo de robô possui duas rodas de tração independentes, paralelas e uma terceira

roda para sustentação. Também conhecida por tração diferencial, esta topologia é não holonômica,

pois o robô não pode se mover no sentido do eixo das rodas. Pode-se ver um exemplo de um robô

diferencial na Figura 3(a) com uma representação esquemática do seu acionamento na Figura 3(b).

Cada um dos motores recebe sinais de controle independentes, em função da velocidade desejada para

cada um. A orientação e velocidade linear do veículo são controladas através destas velocidades.

Figura 3 Exemplo de um robô diferencial

Assim sendo, para se controlar o robô no plano cartesiano é suficiente controlar a sua posição

em relação aos eixos X e Y e mais o ângulo da sua orientação. Desta forma, tem-se o sistema MIMO

(Multiple Input, Multiple Output) apresentado na equação (1.1), contendo duas entradas, e três saídas.

))(),(())(),(),(( tVtVFttYtX lr

(1.1)

onde:

X(t), Y(t) : posição do robô com relação aos eixos X e Y;

(t)

: orientação do robô (ângulo com o eixo X);

F : função que descreve a dinâmica e cinemática do robô;

Vr(t) : tensão elétrica aplicada ao motor direito, valor eficaz;

Vl(t) : tensão elétrica aplicada ao motor esquerdo, valor eficaz.

Para o robô andar em linha reta é necessário imprimir velocidades iguais em módulo e de

mesmo sentido para ambos os motores. Para que o robô gire sobre o seu eixo são colocadas

velocidades iguais e de sentidos opostos. Para a realização de curvas são usadas combinações desses

casos.

Page 26: RICARDO ARTIGAS LANGER

9

Com o intuito de adicionar a informação sobre a dinâmica do robô faz-se necessária uma

elaboração de um modelo matemático detalhado. Para isso, parte-se das equações que descrevem o

comportamento dos motores que impulsionam o robô. A função de transferência de um motor DC

pode ser aproximada por um sistema de primeira ordem como sendo (Franklin et al., 1990):

)(1

)( sVTs

Ksq

(1.2)

considerando:

K : ganho do motor [ radianos / ( Volts x segundo ) ];

T : constante de tempo do sistema [segundos];

V(s) : tensão elétrica aplicada ao motor [ Volts ];

q(s) : velocidade angular do eixo do motor [ rad/s ].

Escrevendo a equação (1.2) na forma de equações diferenciais para cada um dos motores

obtém-se:

tVTKtqTtq

tVTKtqTtq

rr

rr

rr

ll

ll

ll

1

1

º

º

(1.3)

sendo que:

Tr : constante de tempo do motor direito [ segundos ];

Tl : constante de tempo do motor esquerdo [ segundos ];

Kr : ganho do motor direito [ radianos / ( Volts x segundo ) ];

Kl : ganho do motor esquerdo [ radianos / ( Volts x segundo ) ].

Assim, um modelo que inclui tanto a cinemática quando a dinâmica de primeira ordem dos

motores do robô pode ser equacionada como:

tVTKtqTtq

tVTKtqTtq

tqR

rtq

R

rt

tqtr

tqtr

ty

tqtr

tqtr

tx

rr

rr

rr

ll

ll

ll

lr

lr

lr

1

122

)(sen2

)(sen2

)(cos2

)(cos2

º

º

º

º

º

(1.4)

sendo:

ql(t) : velocidade angular do eixo do motor esquerdo[ rad/s ];

qr(t) : velocidade angular do eixo do motor direito[ rad/s ];

Vl(t) : tensão elétrica aplicada ao motor esquerdo[ Volts ];

Vr(t) : tensão elétrica aplicada ao motor direito [ Volts ];

Page 27: RICARDO ARTIGAS LANGER

10

R : metade da distância entre as rodas ou raio do carro [ metros ];

r : metade do diâmetro das rodas ou raio da roda [ metros ].

Que em notação de espaço de estados resulta em:

tq

tq

t

ty

tx

C

t

ty

tx

tV

tVB

tq

tq

t

ty

tx

A

tq

tq

t

ty

tx

r

l

T

r

l

r

l

r

l

)(

)(

)(

)(

)(

º

º

º

º

º

(1.5)

sendo:

00100

00010

00001

0

0

00

00

00

10000

0100022

000

sen2

sen2

000

cos2

cos2

000

T

r

r

l

l

r

l

C

TK

TKB

T

T

R

r

R

r

rr

rr

A

Como o objetivo é simular o sistema em um ambiente computacional, o equivalente discreto da

equação (1.5) é necessário, sendo apresentado na equação (1.6), considerando um segurador de ordem

zero.

kq

kq

k

ky

kx

C

k

ky

kx

kV

kV

kq

kq

k

ky

kx

kq

kq

k

ky

kx

r

l

T

r

l

r

l

r

l

)(

)(

)(

)(

)(

1

1

1

1

1

(1.6)

Page 28: RICARDO ARTIGAS LANGER

11

Considerando:

r

l

rl

rl

rl

Tt

Tt

Tt

rTt

l

Tt

rTt

l

Tt

rTt

l

e

e

eR

rTe

R

rT

ekrT

ekrT

ekrT

ekrT

0000

0000

12

12

100

12

)(sen1

2)(sen

010

12

)(cos1

2)(cos

001

r

l

rl

rl

rl

Tt

r

Tt

l

rT

t

rr

lT

t

ll

rT

t

rr

lT

t

ll

rT

t

rr

lT

t

ll

eK

eK

TeTtR

KrTeTt

R

Kr

TeTtkrK

TeTtkrK

TeTtkrK

TeTtkrK

10

01

22

2)(cos

2)(sen

2)(cos

2)(cos

00100

00010

00001TC

1.4 A Concepção do Sistema em Malha Fechada

No presente trabalho, as variáveis que realimentam os controladores são a posição do robô sob

os eixos X e Y e a sua orientação, que são as variáveis de saída da equação (1.1).

No caso de robôs que usam rodas, o sistema mais simples para determinação da posição é a

odometria, que é a estimativa da distância percorrida medindo-se o quanto as rodas giraram. Apesar

deste sistema ser conceitualmente simples, existem algumas complicações. Dentre elas pode-se citar o

deslizamento lateral, escorregamento da roda no sentido do movimento e as diferenças de rugosidade

do solo. Estes fatores influenciam diretamente na precisão da medição (Dudek e Jenkin, 2000). Tais

incertezas podem ser resolvidas usando uma câmera aérea para medir a posição do robô. Neste

contexto, é necessário manter o robô dentro do raio de visão da câmera, mas os benefícios trazidos

pelo sistema de visão computacional superam os inconvenientes da limitação da área do movimento.

Neste trabalho os testes dos algoritmos de planejamento de trajetórias e controle são realizados

tanto em simulação quanto em tempo real. Na implementação em tempo real utilizou-se um protótipo

Page 29: RICARDO ARTIGAS LANGER

12

de robô móvel não holonômico construído com um kit LEGO MindstormTM. O robô construído é

desprovido de odômetros e a realimentação da sua posição e orientação no ambiente é feita através de

uma câmera aérea. Desta maneira as informações sobre a atitude do robô e o ambiente são conhecidas

em todos os instantes.

A concepção do projeto para implementação em tempo real é representada na Figura 4.

Uma câmera adquire 30 imagens por segundo do robô juntamente com o ambiente em que este

está inserido. As imagens são digitalizadas por uma placa de aquisição de imagens da National

Instruments. Com as imagens no computador, a posição do robô é determinada através de um

programa de reconhecimento de padrões projetado especificamente para identificar o robô construído.

Em tempo real, estes dados são processados por um algoritmo de planejamento de trajetórias. Um

controlador digital envia pela porta serial os sinais para o motor esquerdo e direito. Estes sinais são

enviados por um transmissor de rádio freqüência acoplado à porta serial para um receptor no robô.

Um circuito micro processado no robô recebe essas informações e aplica cada um dos sinais nos

motores utilizando uma modulação por largura de pulsos.

Figura 4 Proposta da implementação em tempo real.

Através da realimentação de informação visual proveniente de uma câmera aérea é possível

controlar remotamente AGVs, empilhadeiras e outros utilitários de transporte industrial. Esta

abordagem, que utiliza câmeras externas aos robôs, permite que poucas câmeras controlem vários

robôs. Assim sendo, não é necessário incluir nestes as câmeras, sistemas de processamento de

imagens e computadores para processar sofisticados algoritmos de controle e planejamento de

trajetórias. Os AGVs podem ser construídos com menos tecnologia embarcada, diminuindo-se o

custo.

Page 30: RICARDO ARTIGAS LANGER

13

1.4.1 O LabVIEWTM

O ambiente de programação usado, tanto nos testes em simulação quanto na implementação em

tempo real, é o LabVIEWTM da National Instruments. A linguagem de programação que o

LabVIEWTM usa é chamada de linguagem G.

Quando surgiu, em 1986, o LabVIEWTM era voltado principalmente para instrumentação

virtual e prototipagem rápida, sendo usado pelas indústrias para solucionar necessidades casuais de

softwares customizados para o uso interno. Com a popularização do programa no meio industrial o

compilador foi aperfeiçoado e hoje contém uma linguagem de programação completa, capacitada

principalmente nas áreas de aquisição e processamento de sinais, análise das medições e apresentação

dos dados, com alta flexibilidade, interface amigável com o usuário e de alta confiabilidade (Bishop,

2003).

Neste trabalho, o LabVIEWTM é utilizado devido a sua capacidade de interagir com

dispositivos de hardware, tornando possível a utilização de uma única linguagem em todo o escopo

do projeto. Desde os algoritmos de planejamento de trajetórias até os de processamento e aquisição de

imagens estão codificados em LabVIEWTM, tornando a programação mais homogênea e dispensando

diversas linguagens dentro do mesmo projeto. A única parte do sistema que não está programado em

LabVIEWTM é o processador que vai acoplado ao robô, programação esta desenvolvida em linguagem

C.

1.5 Contribuições da Dissertação

No decorrer deste trabalho de dissertação são apresentados métodos para planejar a trajetória

de um robô móvel não holonômico, com tração diferencial, de forma que este evite os obstáculos do

ambiente através de um sistema de visão computacional. São apresentadas e comparadas quatro

vertentes de algoritmos para realizar o planejamento de trajetórias de robôs móveis: (i) uma topologia

utilizando algoritmos genéticos; (ii) um método da classe de campos potenciais artificiais; (iii) um

método consagrado na literatura para buscas enumerativas, o A*; e (iv) um algoritmo tipo Bug. Um

novo algoritmo chamado de K Bug aqui é proposto. As principais características deste novo método

são o baixo custo computacional, o tratamento vetorial do ambiente e a maximização da utilização da

informação disponível. Uma análise comparativa entre todos os métodos é apresentada sendo que

dois deles são escolhidos para a implementação em tempo real.

Três metodologias de controle são implementadas para fazer com que o robô percorra a

trajetória planejada, sendo elas: (i) controle PID (Proporcional, Integral e Derivativo), (ii) controle

baseado em lógica Fuzzy; e (iii) controle preditivo baseado em modelo. Para que os controladores

PID e Fuzzy possam ser sintonizados mais facilmente faz-se um desacoplamento entre as variáveis de

Page 31: RICARDO ARTIGAS LANGER

14

entrada do robô, permitindo o uso de controladores monovariáveis independentes. Uma nova base de

regras para o controlador baseado em lógica Fuzzy é proposta de forma a ser capaz de estacionar o

robô com uma orientação final controlada. Para o controlador preditivo, foi desenvolvida uma

modelagem alternativa para o robô, diferente dos modelos clássicos não lineares apresentados na

literatura. Este novo modelo incorpora a referência do movimento, tornando-se linear.

Usando um modelo de robô móvel construído e acionado com um kit LEGO todo o sistema é

implementado em tempo real, sendo controlado pela plataforma LabVIEWTM, da National

Instruments, que está integrada ao hardware de acionamento Lego pela porta serial e à câmera por

uma placa de aquisição de imagens do mesmo fabricante. Todo o processo de reconhecimento de

padrões para a identificação do robô na imagem também é apresentado.

Ao final do trabalho, tem-se duas plataformas completas para o estudo e validação de

algoritmos para robôs móveis em linguagem de alto nível, sendo uma em simulação e outra em tempo

real. Considerando uma aplicação acadêmica, essas plataformas são um recurso útil para o ensino de

robótica móvel, onde os pesquisadores e alunos podem simular e visualizar diferentes combinações

de algoritmos de controle e planejamento de trajetórias. O sistema construído é modular o suficiente

para possibilitar a alteração de suas configurações originais, substituindo-se, por exemplo, o robô

móvel por um outro modelo de dinâmicas diferentes.

1.6 Estrutura da Dissertação

A dissertação está dividida em seis capítulos.

O Capítulo 2 descreve quatro diferentes abordagens para planejar a trajetória de um robô móvel

no plano cartesiano, de forma que este atinja o ponto de destino evitando obstáculos e atendendo a

determinadas condições de otimização. O primeiro método é uma especialização de um algoritmo

genético voltado para o planejamento de uma trajetória em um ambiente conhecido. Nessa abordagem

são geradas várias possíveis soluções para o problema e estas são combinadas de forma inspirada na

evolução natural descrita por Darwin.

O segundo método é o de Campos Potenciais Artificiais (Artificial Potencial Fields

APF).

Existem diversas topologias em diferentes graus de complexidade de APFs. Neste trabalho será feita

uma implementação clássica do método, explorando o conceito básico que o rege.

Em seguida, é estudada uma especialização de um algoritmo de busca em grafos conhecido

como A*. Este algoritmo realiza uma busca enumerativa em um grafo e, segundo uma determinada

heurística, sempre produz o resultado ótimo. Esta característica torna o método adequado para

comparar o grau de otimização dos demais métodos de planejamento de trajetórias.

Page 32: RICARDO ARTIGAS LANGER

15

Finalmente, uma família de algoritmos baseados no comportamento de insetos é estudada,

chamada de algoritmos tipo Bug. Três algoritmos desta família são apresentados, mostrando a

evolução do aperfeiçoamento das trajetórias geradas pelos algoritmos. As primeiras versões do

método são mais robustas e garantem a convergência para uma trajetória válida (Lumelsky e

Stepanov, 1987; Lumelsky e Skewis , 1990). As versões mais modernas geram trajetórias mais curtas,

porém a convergência não é garantida para qualquer ambiente (Kamon e Rivlin, 1997). Analisando

estas características, em conjunto com as vantagens e desvantagens apresentadas para os demais

algoritmos de planejamento de trajetórias, uma nova abordagem inspirada nos algoritmos tipo Bug é

proposta, sendo denominada K Bug. Este algoritmo visa maximizar a utilização da informação sobre

o ambiente disponível, garantir a convergência e diminuir o custo computacional em relação aos

demais métodos. Para cada um dos métodos apresentados no capítulo 2, são apresentados testes em

simulação considerando ambientes com diferentes obstáculos. Para a implementação em tempo real,

são escolhidos dois algoritmos. O A* pelo fato de garantir a convergência para o caminho ótimo e o

K Bug que resulta em trajetórias semelhantes às produzidas pelo A*, mas com um custo

computacional menor. Ambos possuem custos computacionais factíveis para a implementação em

tempo real caracterizada por curtos intervalos de amostragem.

No Capítulo 3 é apresentado um controlador baseado em lógica fuzzy capaz de fazer com que

um robô móvel percorra as trajetórias planejadas no capítulo anterior. Um controlador baseado em

lógica fuzzy é adotado devido a sua capacidade de gerar comportamentos não lineares durante o

percurso do robô. A base de regras do controlador foi elaborada de forma a possibilitar que o robô

estacione no ponto de destino com uma orientação pré determinada. Neste mesmo capítulo também é

descrito um controlador PID multivariável. Este controlador tem como objetivo fornecer uma base de

comparação para o controlador fuzzy. Outra contribuição deste capítulo consiste em um método para a

comutação dos waypoints durante a trajetória do robô. Isso foi necessário devido a dois fatos: (i) os

algoritmos de planejamento de trajetórias geram uma seqüência de pontos no plano cartesiano

(chamados de waypoints) que devem ser atingidos em ordem pelo robô e (ii) para calcular as

referências dos controladores deve-se determinar em todos os instantes de tempo para qual dos

waypoints o robô está se dirigindo. Ao final do capítulo são mostradas experiências em simulação

comparando o desempenho e características do controlador baseado em lógica fuzzy com o

controlador PID.

No Capítulo 4 será tratada uma segunda metodologia de controle da trajetória do robô móvel,

um controlador preditivo. Ao contrário do que acontece com o controlador baseado em lógica fuzzy,

que é sintonizado através da experiência do operador, nesta metodologia os sinais de controle são

calculados resolvendo-se um problema de otimização, baseado em um modelo linear adotado para

representar o robô. Assim o controlador, assumindo que o modelo linear é uma boa aproximação para

o modelo real, prevê o comportamento do robô e encontra qual é a seqüência de sinais de controle que

atende a algumas condições de otimização. Por conseguinte, este controlador, chamado de

Page 33: RICARDO ARTIGAS LANGER

16

controlador preditivo baseado em modelo, necessita de um modelo interno para estimar o

comportamento do robô. O modelo descrito na equação (1.6) representa o robô com precisão

suficiente, mas não é um modelo linear. Fato este comprovado pela dependência da matriz de

transformação de estados ( ) pela orientação do robô ( ), que também é um dos estados do modelo.

Algoritmos de controle preditivo baseados em modelos não lineares requerem um elevado custo

computacional que, muitas vezes, não é compatível com aplicações de robótica caracterizadas por

curtos períodos de amostragem. Para resolver este problema, um outro modelo é equacionado de

forma linear. Neste novo modelo é inserido a informação sobre a distância que o robô se encontra até

o ponto de destino, reduzindo para quatro o número de variáveis de estado e eliminando a

dependência da matriz de transformação de estados pela orientação do robô. Neste mesmo capítulo

também é apresentado o equacionamento do controlador a fim de que este possa ser reconfigurado

para atender a qualquer modelo. Ao final do capítulo são mostradas experiências em simulação,

comparando o desempenho e características do controlador preditivo com o controlador PID.

No Capítulo 5 é feito um estudo de caso com uma implementação em tempo real. São descritos

a construção do protótipo, o projeto da eletrônica embarcada no robô e o protocolo de comunicação

serial usado para enviar os sinais de controle. Um processo de identificação é aplicado para obter os

parâmetros dos motores. Estes parâmetros são usados em testes em simulação considerando algumas

não linearidades do modelo, como por exemplo, a zona morta dos motores.

A realimentação da posição e orientação do robô é feita através de uma câmera aérea. Por esse

motivo, o processo de reconhecer o robô na imagem do ambiente deve ser feito entre os instantes de

amostragem. Todos as etapas para a filtragem da imagem, identificar os padrões da imagem do robô e

calcular a sua posição e orientação no plano cartesiano estão descritos neste capítulo. Como

resultados são apresentadas algumas trajetórias percorridas em ambientes com e sem obstáculos

usando diferentes combinações de algoritmos de planejamento e controle da trajetória.

As conclusões serão abordadas no Capítulo 6, juntamente com as perspectivas de futuras

pesquisas.

Page 34: RICARDO ARTIGAS LANGER

17

Capítulo 2 Planejamento da Trajetória de

Robôs Móveis em Ambiente Conhecido

2.1 Introdução

Em robótica móvel, tanto as tarefas simples, como partir de uma origem e atingir um destino,

quanto as complexas, como realizar cooperação entre robôs, necessitam de algum tipo de

planejamento para o movimento a ser executado, seja este feito a priori ou durante o próprio

movimento.

O planejamento de trajetórias é uma das tarefas importantes em robótica móvel, principalmente

para aplicações que envolvem robôs móveis inteligentes e/ou autônomos. De acordo com (Harden,

1997), o problema do planejamento da trajetória consiste em fazer com que um robô móvel parta de

uma origem determinada e atinja o seu destino evitando obstáculos durante o percurso e atendendo a

uma ou várias condições de otimização, tais como, gerar caminhos mais curtos ou com o menor

tempo de percurso.

Para que uma trajetória possa ser determinada, uma representação apropriada do ambiente

deve ser construída. Uma representação comumente utilizada é a decomposição em espaço composto

(Composite Space ou C space) (Mahjoubi et al., 2006). A Figura 5(a) mostra um exemplo da

aplicação deste método em um ambiente. O objeto preto representa um obstáculo enquanto o fundo

branco representa regiões livres. A Figura 5(b) apresenta a divisão do ambiente em células e a Figura

5(c) mostra o mapa resultante.

A decomposição através de C space é considerado um método de simples implementação,

porém, gera uma representação numérica do ambiente, o que acarreta problemas de precisão e custo

computacional proporcional ao tamanho da imagem.

Existem também outras formas mais elaboradas de decompor numericamente um ambiente

com obstáculos, tais como, diagrama de Voronoi e decomposição em células. Nestas decomposições,

os centros das células são utilizados para gerar a trajetória do robô. O diagrama de Voronoi possibilita

Page 35: RICARDO ARTIGAS LANGER

18

gerar trajetórias que tendem a ser distantes dos obstáculos e longe do caminho ótimo. Ou seja, a

técnica maximiza a segurança do trajeto quanto a impedir as colisões do robô com os obstáculos. Na

decomposição em células o espaço livre é representado por uma coleção de células que não se

interceptam, cuja união é igual ao espaço livre (Heinen, 2000; Latombe, 1991; Siegwart e

Nourbakhsh, 2004).

Figura 5 Ambiente decomposto usando C Spaces.

Outros métodos de representar o ambiente, de forma que a conectividade do espaço livre é

representada por uma rede de curvas unidimensionais, são chamados de Roadmap. Dentre estes

métodos destacam-se o Roadmap probabilístico, o Random Rapid Trees, Freeway, o Silhouette e os

grafos de visibilidade. Nestes métodos não é realizada uma divisão por células, o ambiente é tratado

vetorialmente (Latombe, 1991; Siegwart e Nourbakhsh, 2004).

Após o ambiente ser decomposto é necessário aplicar um algoritmo que encontre a seqüência

de células que o robô deve percorrer para que este, partindo da origem, possa atingir o destino de

forma factível. Neste processo podem ser inseridos vários critérios de otimização, como distanciar-se

ao máximo dos obstáculos, percorrer a trajetória mais rapidamente ou com o menor percurso possível.

As principais dificuldades na determinação de trajetórias ótimas são devidas ao fato de que os

métodos analíticos são complexos para serem utilizados em tempo real e os métodos de busca

enumerativos são muito afetados pelo tamanho do espaço de busca.

Independente do método de representação do ambiente utilizado e do algoritmo de

planejamento de trajetória empregado, pode-se classificar o planejamento de trajetórias de robôs

móveis em dois tipos: (i) planejamento de trajetória em ambiente dinâmico, que permite um robô

móvel responder a situações inesperadas enquanto engajado no procedimento de resolução do

problema, isto é, o sistema é capaz de produzir um novo caminho em resposta a mudanças

ambientais, e (ii) planejamento de trajetória em ambiente estático, que permite ao robô móvel mover-

se em um ambiente conhecido a priori (Tu e Yang, 2003; Ferrentinos et al., 2002; Paula, 2004).

Em ambientes estáticos, o espaço de trabalho (mapa do ambiente) é conhecido e a trajetória

pode ser gerada antes do robô iniciar o percurso. Neste caso, o planejamento da trajetória pode ser

restrito, no caso de existirem obstáculos, ou irrestrito, caso o percurso até o destino esteja

desobstruído (Latombe, 1991).

Page 36: RICARDO ARTIGAS LANGER

19

Dentre os métodos mais utilizados para realizar o planejamento da trajetória estão os métodos

de busca heurística. Estes métodos baseiam-se em uma função heurística para buscar uma solução em

um grafo orientado, grafo este que é gerado pelos métodos de decomposição do ambiente (Rich,

1998; Kambhampati e Davis, 1986). Para isto utilizam-se listas encadeadas para decompor o

ambiente, como, por exemplo, com grafos de visibilidade. Um algoritmo de busca heurística pode

então ser usado para encontrar o melhor caminho. Entretanto, tais métodos possuem um alto custo

computacional principalmente em ambientes dinâmicos. Em 1968 foi introduzido por Hart et al. o

algoritmo denominado A* (A Estrela) que até os dias de hoje é considerado como o método de busca

heurística de maior eficácia, pois, segundo a heurística adotada, sempre o melhor caminho é

encontrado, o que o torna um bom ponto de partida para comparações com as trajetórias geradas por

métodos novos. As suas desvantagens estão no fato de que o ambiente deve ser decomposto e

organizado de forma a possibilitar a busca, aumentado ainda mais o seu já elevado custo

computacional (Hart et al., 1968; Rich, 1988; Bender, 1996).

Para o caso do planejamento de trajetórias, o ambiente é representado por um conjunto de

localizações chamadas de waypoints, conectados uns aos outros como em uma teia de aranha,

compondo um grafo. Tomando-se um dos waypoints como o ponto de origem e um outro para o

destino, o algoritmo encontra a menor distância que liga ambos os pontos pesquisando caminhos

intermediários (Nareyek, 2004).

Também pode-se utilizar algoritmos de otimização estocásticos, como os algoritmos genéticos,

encarando o problema de determinar uma trajetória factível como um problema de otimização

(Mahjoubi et al., 2006; Almeida, 2005). Os algoritmos genéticos são uma família de modelos

computacionais inspirados na evolução natural de Darwin. Numa utilização mais abrangente do

termo, um algoritmo genético é qualquer modelo baseado em população que utiliza operadores de

seleção, recombinação e mutação para gerar novos pontos amostrais em um espaço de busca. Tais

algoritmos podem ser usados para resolver equações de várias variáveis e problemas de otimização de

parâmetros (Goldberg, 1994; Goldberg, 1989). Uma vez que determinar uma trajetória de um robô

pode ser encarado como um problema de estabelecer um conjunto de pontos (variáveis) que desviam

de obstáculos e minimizam distâncias (condições), os algoritmos genéticos constituem-se em uma

escolha para a sua solução (Sierakowaki et al., 2004). As desvantagens mais impeditivas para esta

família de métodos estão no alto custo computacional e no fato de não existir garantias de que uma

solução será encontrada.

Para gerar trajetórias dispensando a etapa de decomposição do ambiente pode-se empregar a

técnica dos campos potenciais artificiais, onde o robô é tratado como uma partícula sob a influência

de forças de atração e repulsão (Silveira et al., 1997; Heinen, 2000; Khosla e Volpe, 1988; Krogh,

1984). Este método consiste em definir uma função sobre o espaço livre que possua um mínimo

global no local do destino. Assim, o destino emite um campo atrativo e os obstáculos emitem um

campo repulsivo. O somatório destas duas forças resulta no chamado campo potencial artificial. Este

Page 37: RICARDO ARTIGAS LANGER

20

método, apesar de poder ser aplicado tanto em ambientes estáticos quanto em dinâmicos, resulta em

somente uma solução de trajetória que pode não ser a ótima (mais curta) mesmo em um ambiente

estático (Tsuji et al., 2002; Agirrebeitia et al., 2005; Nilsson, 1969; Lin et al., 1999).

Os algoritmos tipo Bug também dispensam a decomposição do ambiente, sendo que a sua

versão mais simples garante encontrar uma trajetória válida em qualquer ambiente, indiferentemente à

sua complexidade ou número de obstáculos (Lumelsky e Stepanov, 1987; Lumelsky e Skewis , 1990;

Kamon e Rivlin, 1997).

Finalmente, pode-se aplicar algoritmos que visam suavizar as trajetórias independente do

método escolhido para o seu planejamento, utilizando alguma técnica de interpolação, como por

exemplo, splines (Mahjoubi et al., 2006; Almeida, 2005).

Neste trabalho as experimentações reais são feitas usando-se uma câmera aérea que fornecerá

as posições tanto dos obstáculos quando do robô em todos os instantes. Desta forma, o planejamento

da trajetória pode ser feito antecipadamente caso o ambiente permaneça estático. Para uma

movimentação em um ambiente dinâmico o algoritmo de planejamento deve ser rápido o suficiente

para recalcular toda a trajetória ou alterá la continuamente durante o movimento do robô.

Quatro diferentes abordagens são descritas neste capítulo para planejar a trajetória de robôs

móveis em ambientes estáticos: (i) uma topologia utilizando algoritmos genéticos, (ii) campos

potenciais artificiais, (iii) um método consagrado na literatura para buscas enumerativas chamado A*

e (iv) os algoritmos tipo Bug.

Ao final, é proposto um novo método denominado K Bug. Este método não garante a solução

ótima, entretanto visa maximizar o aproveitamento da informação sobre o ambiente buscando

contornar os obstáculos um a um, levando em consideração seus aspectos geométricos. Apesar de ser

proposto para ambientes estáticos, seu baixo custo computacional em comparação com os outros

métodos faz com que possa ser recalculado sempre que ocorrem modificações no ambiente.

No decorrer do capítulo, os métodos de planejamento de trajetórias estudados são testados

sobre quatro diferentes ambientes para estudos comparativos, todos com obstáculos estáticos. Tais

ambientes foram escolhidos de forma a facilitar a visualização das limitações e vantagens de cada um

dos métodos, em ordem crescente de complexidade.

A Figura 6(a) mostra um ambiente com três obstáculos convexos. A Figura 6(b) mostra um

ambiente com apenas um obstáculo, mas este é côncavo possuindo uma forma em U , conhecida na

literatura por causar instabilidade em alguns métodos de planejamento de trajetórias. Um ambiente

complexo, contendo diversos obstáculos irregulares está exibido na Figura 6(c). Com o intuito de

simular uma condição mais próxima do real, um ambiente com a forma de um escritório foi escolhido

e encontra-se na Figura 6(d). Todos os ambientes foram decompostos em formas poligonais fechadas

e toda a informação passada para os algoritmos é feita vetorialmente.

Page 38: RICARDO ARTIGAS LANGER

21

Figura 6 Tipos de ambientes.

Este capítulo está estruturado da seguinte forma:

Na seção 2.2 é apresentado um algoritmo genético (AG) adaptado para o planejamento de

trajetórias para um robô móvel. Na seção 2.3 é discutida uma versão clássica do método de campos

potenciais artificiais. O método A*, utilizado para buscar um caminho ótimo em um mapa

segmentado por um grafo de visibilidade, é apresentado na seção 2.4 . Na seção 2.5 é proposto um

novo algoritmo para o planejamento de trajetórias de robôs móveis chamado de K Bug. Finalmente,

na seção 2.6 , um resumo é discutido levantando as principais vantagens e desvantagens de cada um

dos métodos.

2.2 Algoritmos Genéticos (AGs)

Os algoritmos genéticos (AGs) têm sido utilizados em uma ampla gama de problemas de

otimização de parâmetros (Goldberg, 1989; Bäck e Schwefel, 1997). Com aplicações desde

elaboração de cronogramas escolares e otimização de designs de residências até organização de

ordens de produção em linhas automobilísticas e no projeto de turbinas de aviões comerciais.

Page 39: RICARDO ARTIGAS LANGER

22

Recentemente, a robótica tem usado tais algoritmos no planejamento de trajetórias de robôs móveis

dentro do ambiente fabril quando o espaço de busca é grande ou mesmo complexo (Tu e Yang, 2003;

Xiao et al., 1997; Yao et al., 1999).

Descreve-se, a seguir, uma adaptação do método de algoritmos genéticos para determinar e

otimizar a trajetória de um robô móvel.

2.2.1 Principais Conceitos sobre AGs Os algoritmos genéticos são técnicas robustas e eficientes em espaços de procura irregulares,

multidimensionais e complexos, e se caracterizam por (Goldberg, 1989): (i) operar em uma população

de pontos; (ii) não requerer derivadas; (iii) trabalhar com a codificação de seu conjunto de

parâmetros; (iv) realizar transições probabilísticas, em vez de regras determinísticas; (v) necessitar

apenas de informação sobre o valor de uma função objetivo para cada indivíduo da população.

A implementação do algoritmo genético binário começa com uma população (geralmente

iniciada de forma aleatória com distribuição uniforme) de cromossomos. Estas estruturas são então

avaliadas para gerar oportunidades reprodutivas de forma que, cromossomos que representam uma

solução "melhor" tenham maiores chances de se reproduzirem do que os que representam uma

solução "pior" (Goldberg, 1994). A definição de uma solução, ou indivíduo, melhor ou pior é dada de

acordo com uma função de custo , ou fitness.

Para aplicar os algoritmos genéticos, uma função de aptidão (fitness) deve ser definida para

avaliar quão adequada é cada uma das soluções produzidas pelo algoritmo. Através dos operadores de

seleção, cruzamento e mutação, os indivíduos (soluções factíveis do problema) com maior aptidão são

encontrados. Um operador de seleção elitista garante que os indivíduos com maior aptidão se

propagarão para as futuras gerações.

Os operadores utilizados no algoritmo genético abordado foram os operadores clássicos de

seleção, cruzamento e mutação. Duas estratégias de seleção são apresentadas a seguir: a seleção por

roleta e a seleção por torneio. Ambas serão usadas com o fim de comparar os resultados obtidos.

A operação de seleção por roleta é um meio de escolher membros da população de forma a

priorizar aqueles com maior fitness. Este operador por si só não garante que o membro mais apto seja

transferido para a população seguinte, apenas lhe dá uma chance maior de participar do cruzamento.

Na seleção por torneio são selecionados aleatoriamente pares de indivíduos que competem . O

indivíduo com maior fitness vence a rodada e aqueles que acumularem mais vitórias são selecionados

para o cruzamento. A Tabela 1 mostra um exemplo de uma população composta de 4 indivíduos, suas

respectivas codificações em números binários e seus valores de fitness.

A Figura 7, etapa 1, mostra um esquema ilustrativo do operador de seleção por roleta. A cada

membro da população é dada uma fatia de um gráfico tipo torta. O tamanho da fatia é proporcional ao

valor do fitness. Assim, seleciona-se aleatoriamente um ponto do círculo externo do gráfico. A fatia

que contiver o ponto selecionado resulta no membro da população que será selecionado para

Page 40: RICARDO ARTIGAS LANGER

23

participar do cruzamento. Em cada par de indivíduos selecionados será executado o operador de

cruzamento.

Tabela 1 Exemplo de uma população, codificação e fitness.

Indivíduo

Genoma Fitness % do Total

1

01101 169 14,4

2

11000 576 49,2

3

01000 64 5,5

4

10011 361 30.9

Total

1170 100,0

O operador de cruzamento combina dois indivíduos para formar dois novos indivíduos (filhos)

que tenham a probabilidade de apresentarem melhor aptidão que seus pais. Há três formas diferentes

de executar o cruzamento, podendo este ser um cruzamento de ponto único (Single Point Cross

SPX), de ponto duplo (Double Point Cross

DPX) ou uniforme (Uniform Point Cross

UPX;

Buckland, 2002).

Figura 7 Operadores de Seleção, Cruzamento e Mutação.

. A Figura 8 mostra exemplos das estratégias de cruzamento supra citadas. No SPX cada

progenitor tem o seu genoma dividido ao meio e cada um dos descendentes receberá metade do

genoma de cada progenitor. No cruzamento tipo DPX e UPX há, respectivamente, dois ou mais

pontos em que os genomas são divididos. Estas variações objetivam fundir mais uniformemente a

carga genética dos progenitores. Em todos os casos, são escolhidas aleatoriamente as seqüências de

bits para serem trocadas entre os membros selecionados para o cruzamento. Cada par de membros

progenitores geram um par de descendentes independente da estratégia de cruzamento. A Figura 7,

etapa 2, mostra um exemplo numérico de um cruzamento SPX com uma probabilidade Pc de ocorrer.

A operação de mutação insere uma alteração aleatória em um indivíduo da população, visando

inserir novas informações genéticas na população e prevenindo a convergência prematura para um

máximo local. O operador de mutação permite que novas áreas do universo do problema sejam

exploradas. É aplicado o operador de mutação em cada um dos bits de cada um dos indivíduos

gerados pelo processo de cruzamento. Dessa forma, cada um dos bits possui uma probabilidade Pm

Page 41: RICARDO ARTIGAS LANGER

24

(geralmente baixa, entre 0,1% e 3%) de sofrer a mutação passando de zero para um ou vice versa

(Buckland, 2002).

Figura 8 Estratégias de cruzamento.

Para garantir que o melhor indivíduo de cada geração seja transmitido para a geração seguinte,

pode-se utilizar uma estratégia elitista (Ahn e Ramakrishna, 2003), que simplesmente mantêm o

indivíduo com maior fitness na população.

Os algoritmos genéticos provocam um melhoramento gradativo da aptidão dos indivíduos que,

após a realização de muitas gerações (ciclo evolucionário), esperam criar indivíduos contendo um

conjunto de variáveis otimizadas adequadamente (ver diagrama da Figura 9)(Yao et al., 1999).

Figura 9 Ciclo de dados em um algoritmo genético canônico.

A seguir, um pseudo código do algoritmo genético descrito é apresentado. Este algoritmo

também é conhecido por algoritmo genético canônico. Assumindo:

: o número de características de cada indivíduo;

)(tak

: k ésimo indivíduo da população na geração t;

P(t) : população na geração t;

( )(tak ) : fitness do k ésimo indivíduo da população na geração t;

))((' }{ tPrcp : operação de cruzamento sobre a população na geração t usando a

probabilidade pc de ocorrer;

))((' }{ tam kpm

: operação de mutação sobre o k ésimo indivíduo da população na geração

t usando a probabilidade pm de ocorrer;

Page 42: RICARDO ARTIGAS LANGER

25

))((' tPs : operação de seleção sobre a população na geração t. A probabilidade de

um indivíduo ser escolhido é dada por 1

))((/))(())((j jkks tatatap ;

T : número máximo de gerações;

f : fitness suficientemente otimizado;

t : operador de tempo em número de gerações.

t:=0 iniciar: P(0) := { )(1 ta ,..., )(ta }

processar: P(0) : { ( )(1 ta ),..., ( )(ta )}

selecionar: P(0) := ))((' tPs

enquanto (Max({ ( )(1 ta ),..., ( )(ta )})<f e t<T ) faça

recombinar: )(tak := ))((' }{ tPrcp },...,1{k

mutar: )(tak := ))((' }{ tam kpm},...,1{k

processar: P (t) : { ( )(1 ta ),..., ( )(ta )}

selecionar: P(t+1) := ))("(' tPs t := t + 1

fimenquanto

Maiores informações sobre tipos de algoritmos evolucionários podem ser encontradas em Bäck

e Schwefel (1993).

2.2.2 Algoritmos Genéticos para Planejamento de Trajetórias Para o caso do planejamento de trajetórias usando algoritmos genéticos, as populações criadas

representam conjuntos de possíveis trajetórias que podem ser seguidas pelo robô móvel. Cada

indivíduo representa uma trajetória, contendo uma quantidade pré-determinada de nós. A trajetória é

formada ligando-se todos os nós por linhas retas, partindo-se do ponto de início, passando por todos

os nós e chegando até o ponto de destino. Cada nó é composto de duas coordenadas, uma para X e

outra para Y. Assim sendo, considerando trajetórias com quatro nós, não incluindo os pontos de início

e destino, têm-se duas variáveis por nó, totalizando oito variáveis por indivíduo. Estas variáveis

também são chamadas de características dos indivíduos no âmbito do algoritmo genético. Cada

uma delas é codificada no formato binário para então ser alterada pelos operadores de mutação e

cruzamento, gerando as novas populações.

Antes da sua execução, o usuário deve informar ao algoritmo a quantidade de indivíduos por

população, o número máximo de gerações, a quantidade de nós móveis, as probabilidades de mutação

e cruzamento, a quantidade de bits usada nas codificações genotípicas (resolução) e o alcance de cada

uma das variáveis (X, Y). Percebe-se que é um número elevado de parâmetros que afetam diretamente

o comportamento do algoritmo, tornando a tarefa de selecionar e ajustar todos eles um tanto

complexa.

Page 43: RICARDO ARTIGAS LANGER

26

Para o cálculo do fitness é usado o comprimento total da trajetória gerada somando-se as

distâncias euclidianas entre todos os nós. As trajetórias menores apresentam um valor de fitness

maior. Também é computada a distância percorrida dentro dos obstáculos. Sempre que um dado

segmento de uma trajetória passa por cima de um obstáculo, o valor do fitness para esta trajetória é

penalizado. A equação (2.1) mostra o método de cálculo do fitness:

1

1

21

21

21

21

*N

iiiiii

NN

XXYY

XXYYfitness

(2.1)

onde:

N : o número de nós (incluindo o ponto de início e destino);

Xi, Yi : as coordenadas do nó i (considerando i =1 o nó inicial);

i : a distância percorrida dentro de um obstáculo por um segmento entre o nó i e o

nó seguinte;

: fator de penalidade.

Os valores de fitness foram normalizados considerando que a melhor resposta (fitness = 1.0)

seria o resultado de uma trajetória em linha reta entre a origem e o destino, isenta de colisões com

quaisquer obstáculos. Esta normalização justifica o numerador da equação (2.1). Dessa forma, quanto

mais longa for uma trajetória, ou quanto mais obstáculos ela colidir, menor será seu fitness.

2.2.3 Resultados Para os experimentos em simulação apresentados neste trabalho é usado o operador SPX.

Depois de fornecido ao algoritmo um arquivo de informações contendo as posições dos

vértices de todos os obstáculos do ambiente, é reconstruído o mapa do ambiente através de uma

matriz de dados. Esta matriz também é usada para calcular o fitness de cada indivíduo penalizando

aqueles que atravessam as regiões com obstáculos.

A Figura 10 mostra a trajetória encontrada em um ambiente com vários obstáculos quadrados.

Como parâmetros de entrada foram usados: probabilidade de crossover de 80%, probabilidade de

mutação de 1%, com elitização e sem o torneio. Trinta indivíduos por população resultaram em uma

diversidade suficiente sem que o custo computacional ultrapassasse alguns segundos para cada 300

gerações. Foi escolhida a quantidade de três nós móveis para cada trajetória/indivíduo e dez bits de

precisão para a codificação das variáveis.

Page 44: RICARDO ARTIGAS LANGER

27

Figura 10 Trajetória encontrada pelo algoritmo genético.

Na Figura 11 pode-se acompanhar a convergência do algoritmo genético, assumindo o

ambiente da Figura 10 . São apresentados o melhor fitness (a) e a média dos fitness da população (b).

Ambos os gráficos apresentam os valores em função do número de gerações processadas até o

momento.

(a) (b)

Figura 11 Evolução do fitness do melhor indivíduo (a) e da média da população (b) em função do número de gerações

com a seleção por roleta.

Pode-se optar pela utilização ou não da elitização. A elitização garante que o melhor indivíduo

seja transferido para a geração seguinte. Para os quatro estudos de caso propostos na Figura 6, o

desempenho do algoritmo está relacionado na Tabela 2, que mostra os valores médios de 50

evoluções. Os parâmetros usados foram: 160 indivíduos por população, precisão de 8 bits,

probabilidade de cruzamento de 80%, probabilidade de mutação de 1%, elitização e = 30.

Tabela 2 Desempenho do algoritmo genético.

Caso Maior fitness

Média do fitness

Desvio padrão do fitness

Quantidade de nós

Número de gerações

Tempo computacional gasto [s]

Ambiente 1 0,941 0,553 0,2078 3 20 1,5 Ambiente 2 0,910 0,570 0,189 3 20 1,5 Ambiente 3 0,528 0,124 0,071 6 200 19 Ambiente 4 0,605 0,356 0,171 6 200 18

O algoritmo foi codificado em LabVIEWTM e processado em um computador Athon de 2.8GHz

com 512Mb de memória RAM. As melhores trajetórias encontradas estão mostradas na Figura 12.

Page 45: RICARDO ARTIGAS LANGER

28

Figura 12 Melhores trajetórias encontradas pelo AG.

2.2.4 Considerações Finais sobre os Algoritmos Genéticos para Planejamento de Trajetórias de Robôs Móveis

Os algoritmos genéticos são ferramentas extremamente flexíveis para resolver problemas

complexos, encontrando aplicações nas mais diversas áreas. Entretanto, esta flexibilidade os torna

nada especialistas. A geração de uma trajetória de poucos nós demora alguns segundos. Para

trajetórias com maior número de nós o processo pode demorar minutos. Outra desvantagem reside no

fato do algoritmo não garantir nem ao menos encontrar uma resposta viável, muito menos que a

trajetória encontrada será ótima. Dentre as suas vantagens encontram-se a facilidade de

implementação, a vasta literatura e a diversidade de aplicações e variações no método.

Page 46: RICARDO ARTIGAS LANGER

29

2.3 Campos Potenciais Artificiais (APFs)

Um dos métodos mais usuais e simples para resolver problemas de planejamento de trajetórias

é o dos Campos Potenciais Artificiais (Artificial Potencial Fields

APFs). Este conceito foi

introduzido por Khatib (1986) que o chamou de um método para evitar obstáculos em tempo real .

2.3.1 Principais Conceitos sobre APFs Este método consiste em definir uma função sobre o espaço livre que possua um mínimo global

no local do objetivo. Assim, o objetivo emite um campo atrativo e os obstáculos emitem um campo

repulsivo. O somatório destas duas forças resulta no chamado APF. A Figura 13 mostra uma área

contendo dois obstáculos: um triângulo e um retângulo. Esta área é processada segundo a teoria do

APF gerando regiões mais altas, isto é, com maior repulsividade, e regiões mais baixas com maior

atratividade.

Figura 13 Elaboração dos campos potenciais.

Então o problema do planejamento da trajetória resume-se em encontrar o caminho com menor

potencial entre a posição atual e a posição de destino. Uma vez que o destino imprime uma força

atrativa no robô móvel, pode-se representá la por um vetor do robô até o ponto de destino. O produto

vetorial de todas as forças de todos os obstáculos gera um vetor de repulsão no robô. O vetor

resultante entre o vetor de repulsão e o vetor de atração indica a direção instantânea a ser seguida

(Agirrebeitia et al., 2005). A Figura 14 mostra um exemplo das forças de atração e repulsão aplicadas

quando o robô se encontra em diferentes posições.

Existem na literatura diversas equações para a determinação dos vetores de repulsão e atração

(Tsuji et al., 2002; Agirrebeitia et al., 2005; Nilsson, 1969; Lin et al., 1999; Kathib, 1986). Estes

trabalhos descrevem desde algoritmos simples até processos complexos envolvendo cálculos

Page 47: RICARDO ARTIGAS LANGER

30

diferenciais para representar o deslocamento dos obstáculos quando estes forem móveis, elementos

finitos na determinação das geometrias dos mesmos e detalhamento dos campos repulsivos. Neste

trabalho será descrito um algoritmo elementar e de fácil implementação, visando explorar apenas o

conceito do método dos campos potenciais artificiais.

Figura 14 Cálculo da resultante.

A primeira etapa do algoritmo é determinar a força que atrai o robô em direção ao destino. A

fundamentação teórica conceitua a força atrativa que o destino exerce no robô como um vetor na

direção do robô para o destino. A intensidade desta força de atração pode ser fixa ou variar

proporcionalmente em função da distância até o destino, somente sendo suspensa quando o robô

estiver próximo do ponto de destino.

Neste trabalho será usado um valor constante para o módulo da força atrativa em todo o

ambiente.

A segunda parte refere-se a definição dos campos de repulsão, campos estes responsáveis pelo

afastamento do robô dos obstáculos. Cada objeto deve emitir uma força de repulsão proporcional à

proximidade do robô e condizente a sua geometria. A direção da força de repulsão deve ter o sentido

dos obstáculos para o robô, com a intenção de fazê lo se afastar. A principal questão relacionada com

este problema está na determinação do ponto de referência para o cálculo, visto que a geometria dos

obstáculos pode variar de simples quadrados para complexos polígonos irregulares. Uma das soluções

é dividir os obstáculos em triângulos, que são os polígonos fechados mais simples que existem.

Assim os obstáculos passam por um processo de triangularização, sendo decompostos em vários

triângulos, mas mantendo a relação de que a união das áreas de todos os triângulos de um dado

obstáculo resulta no próprio obstáculo original. Finalmente, cada um destes triângulos gera

independentemente uma força de repulsão proporcional às suas dimensões e em função da sua

posição no ambiente.

Neste sentido, dois métodos propostos na literatura são estudados: a triangularização por

orelhas (Preparata e Shamos, 1978) e a triangularização de Delaunay (Lee e Schachter, 1980). O

primeiro, apesar de ser menos eficiente com relação a homogeneização dos triângulos resultantes, foi

escolhido para a simulação devido à maior facilidade de implementação.

O algoritmo Corta Orelhas , como é conhecido informalmente, é um algoritmo que faz a

triangularização de um polígono em ordem cúbica. Ele baseia-se no fato de que cada polígono com

mais que 3 arestas possui pelo menos 2 orelhas. Orelha é um par de segmentos do polígono com um

Page 48: RICARDO ARTIGAS LANGER

31

ponto em comum que, quando ligado aos outros dois pontos delimitantes dos segmentos, não ocorre

nenhum tipo de colisão com outros segmentos. Então se percorre todos os pontos procurando as

orelhas e, cada vez que uma é encontrada, é traçada a diagonal entre os pontos dos segmentos da

orelha e o processo é repetido, agora em um polígono com um ponto a menos para processar. Para um

polígono de n arestas, o algoritmo percorre todas os pontos no máximo n/2 vezes. Em cada ponto

gasta-se n vezes o tempo necessários para testar se um ponto é o vértice de uma orelha. Portanto, o

custo computacional do algoritmo é de ordem cúbica O(n3) (Preparata e Shamos, 1978). A notação do

Grande O (ou como é conhecido em inglês, Big O Notation, ou Big Omicron Notation) é uma

notação matemática utilizada para analisar o comportamento assintótico de funções. Essa notação,

padronizada como "ordem de", é bastante utilizada para a análise de algoritmos em ciência da

computação, pois relaciona o tamanho do problema com o custo computacional necessário para

resolve lo. A criação dessa notação é creditada ao matemático alemão Paul Bachmann, em 1894, na

publicação da segunda versão da sua obra Analytische Zahlentheorie, sendo popularizada por outro

alemão, Edmund Landau, e por causa disso, essa notação é também conhecida como "Símbolo de

Landau" (Landau, 1909).

Pode-se também, ao invés de triangularizar os obstáculos, usar os segmentos de retas das

arestas para gerar os campos de repulsão. Esta consideração pode melhorar o desempenho do método

e diminuir o custo computacional, uma vez que as regiões internas aos obstáculos nunca irão

influenciar no processo de determinação da força de repulsão (Agirrebeitia et al., 2005). Esta

variação, apesar de teoricamente ser mais eficiente, não chegou a ser implementada em simulação

neste trabalho.

Dentre as variações do método APF, pode-se citar o algoritmo quase geodésico , em que a

cada passo o robô móvel somente se desloca de forma que a distância até a origem seja diminuída

(Agirrebeitia et al., 2005).

Existem algoritmos evolutivos capazes de localizar os mínimos globais dos APFs. Tais

estratégias aperfeiçoam o APF durante o movimento e usam a integral da força resultante (integral da

soma da força resultante com a força atrativa) durante todo o percurso para calcular o fitness dos

indivíduos (Vadakkepat et al., 2000).

2.3.2 Equacionamento do Campo Potencial A seguir tem-se um exemplo do processo de triangulação com o algoritmo Corta Orelhas .

Para o problema do planejamento de trajetórias, cada um dos obstáculos deve emitir um campo de

repulsão. A Figura 15(a) mostra um obstáculo em forma de um U . As linhas coloridas mostram as

divisórias dos triângulos internos em que o objeto é dividido. A área máxima dos triângulos pode ser

limitada, o que resulta em um campo potencial com maior definição com relação à geometria original

do obstáculo, porém causa um aumento exponencial no custo computacional. A Figura 15(b) e Figura

15(c) mostram o obstáculo dividido com triângulos de área reduzida.

Page 49: RICARDO ARTIGAS LANGER

32

Figura 15 Processo de triangularização por Corta Orelhas .

Cada triângulo gerado influencia individualmente o ponto móvel na direção do seu centro

geométrico. Uma curva de Gauss gradua a intensidade da força repulsiva de cada triângulo. A

distribuição de Gauss proporciona a quantidade de parâmetros necessária para que se possa sintonizar

as funções de repulsão e estudar o comportamento do algoritmo. A Figura 16 mostra um exemplo da

função de repulsão gerada a partir de apenas um triângulo.

Figura 16 Função de repulsão resultante de um triângulo.

Quanto mais próximo do ponto médio do triângulo, maior é o módulo da força de repulsão. A

área interna, equivalente ao círculo circunscrito ao triângulo, contém a força de repulsão máxima e

representa uma região onde o robô móvel não deverá ultrapassar. Como o processo do cálculo da

força de repulsão de um dos triângulos é baseada na distância euclidiana até o seu ponto médio, o

campo potencial resultante adquire um aspecto circular. A equação (2.2) mostra o processo para o

cálculo do módulo da força de repulsividade, em um dado ponto, resultante de apenas um triângulo.

máx

máxRcRr

RrRcdh

r

RrRcdseMr

RrRcdseeMrF máx

máx2

2

||

(2.2)

Onde:

|| rF

: módulo da força de repulsão;

d : distância euclidiana do ponto atual até o centro círculo circunscrito ao triângulo

que origina a força de repulsão;

Rrmáx : ganho no raio da força de repulsão.;

Rc : raio do círculo circunscrito ao triângulo que origina a força de repulsão;

Mr : ganho no módulo da força repulsiva;

h : fator de decaimento da força repulsiva.

Page 50: RICARDO ARTIGAS LANGER

33

O parâmetro Rrmáx multiplica o raio onde a força de repulsão é máxima e o parâmetro h

controla a inclinação da curva de Gauss.

Para um local qualquer no mapa, a força resultante, que é a força que está efetivamente sendo

aplicada no local, é calculada através da soma vetorial entre a força de atratividade e a força de

repulsividade de maior módulo que está incidindo sobre o ponto de acordo com a equação (2.3).

rmáxa FFMaF

(2.3)

Sendo que:

F

: a força resultante;

Ma : ganho da força de atratividade;

aF

: força de atratividade (módulo unitário e direção sempre apontando para o ponto de

destino);

irF ,

: força de repulsividade gerada pelo triângulo i atuando sobre o ponto considerado

(possui direção sempre apontada para o robô móvel);

rmáxF

: força de repulsividade, , de maior módulo atuando sobre o ponto considerado.

2.3.3 Resultados Por exemplo, seja a área com três obstáculos mostrada na Figura 17(a), o campo potencial

artificial resultante está mostrado na Figura 17(b). Os pontos mais altos representam regiões com

maior repulsividade. O ponto de destino está na região mais baixa do gráfico. Neste exemplo está

sendo usado Mr=1.5, h=1.0, Rrmáx=1.5 e Ma = 1, em uma região que mede 100 x 100.

Figura 17 Obstáculos triangularizados (a) e APF resultante (b).

Na Figura 18(a) pode-se ver uma outra representação do APF em um gráfico de intensidades.

As regiões mais claras representam locais com menor repulsividade. Nesta mesma figura pode-se ver

irF ,

Page 51: RICARDO ARTIGAS LANGER

34

em azul escuro a trajetória gerada pelo algoritmo. Se o valor do parâmetro h for diminuído de, por

exemplo, 1.0 para 0.2, pode-se fazer com que a trajetória gerada contorne o triângulo, e não mais

passe por entre o círculo e o triângulo. A diminuição do valor de h provoca uma inclinação menos

acentuada na curva de repulsão, fazendo com que os campos de repulsão gerados pelo círculo e pelo

triângulo se fundam, comportando-se como um único obstáculo, como mostra a Figura 18(b).

Figura 18 Trajetória gerada pelo algoritmo.

A Figura 19 mostra as trajetórias geradas para os quatro estudos de caso propostos na Figura 6.

Os parâmetros usados foram: Mr = 1.5, h = 1.0, Rrmax = 2.0, Ma = 1.

Figura 19 Trajetórias geradas através de campos potenciais.

Page 52: RICARDO ARTIGAS LANGER

35

Pode-se ver que para o Ambiente 2 o algoritmo não convergiu para uma trajetória válida. Para

os casos mais complexos, como por exemplo os ambientes 3 e 4, devido a proximidade dos

obstáculos a trajetória gerada nestes ambientes é mais irregular tendendo a instabilidade. Para o

ambiente 4, a instabilidade que ocorreu próxima do ponto de destino gerou colisões com um dos

obstáculos do ambiente obstáculo.

O tempo computacional gasto para o ambiente 1 foi de 1.5 segundos, para o ambiente 3 foi de

2.5 segundos e para o ambiente 4 foi de 3.3 segundos, sendo que todos os algoritmos foram

executados por um computador AMD Athon 64 de 2,4GHz com 512Mb de memória RAM. Este

tempo foi maior para os ambientes 3 e 4 devido ao maior número de obstáculos.

2.3.4 Considerações Finais sobre os APFs Um dos problemas encontrados neste método está no fato de que podem existir regiões em que

o campo de atração é exatamente igual ao somatório dos campos de repulsão, criando um mínimo

local. Para vencer este vale, o algoritmo teria que atravessar uma das regiões vizinhas em que a força

de repulsão afasta o móvel do seu destino, indo contra o princípio do funcionamento do método. A

Figura 20 exemplifica este fato. Existem na literatura várias condições de contorno para o problema

dos mínimos locais, como inserir um aspecto aleatório na trajetória do robô móvel (Chenney, 2005).

Figura 20 Problema dos mínimos locais. Fonte: (Chenney, 2005).

Uma das vantagens do método APF é o baixo custo computacional do algoritmo, permitindo

aplicações em ambientes dinâmicos. Este custo pode ser ainda menor se o espaço de trabalho for pré

processado, como em ambientes estáticos. Há algumas aplicações deste método para ambientes

móveis de geometria complexa, funcionando para controle de trajetórias de manipuladores

robotizados (Harden, 1997).

Dentre a desvantagens pode-se ressaltar o problema dos mínimos locais, que é de difícil

solução. Portanto os APFs não garantem que um caminho entre a origem e o destino seja encontrado

e não garante que, uma vez encontrado um caminho, ele seja ótimo.

Page 53: RICARDO ARTIGAS LANGER

36

2.4 Algoritmo A*

Outra categoria de métodos que pode ser aplicada ao problema abordado neste capítulo é a dos

métodos de busca heurística. Estes métodos consistem em buscar uma resposta ótima em um universo

previamente mapeado usando uma função heurística (Rich, 1998; Hart et al., 1968).

Há diversos métodos de busca heurística e estes podem ser classificados em duas categorias,

métodos fracos e métodos fortes (Rich, 1998). Os métodos fracos buscam de maneira quase errática

por uma resposta, por isso costumam ser pouco eficientes. Dentre estes métodos estão aqueles

denominados de força bruta e da subida de encosta. Os métodos fortes possuem fundamentos

matemáticos elaborados e garantem encontrar pelo menos uma solução quando esta existe. Dentre

estes métodos estão os de busca em profundidade e em amplitude (Rich, 1998).

Hart et. al (1968) introduziu o algoritmo chamado A* (leia-se A Estrela) que até os dias de hoje

é considerado o método de busca heurística de maior eficácia (Hart et al., 1968). Este algoritmo une

as vantagens dos métodos de busca em profundidade e em amplitude.

2.4.1 Principais conceitos do A* Para o funcionamento correto de qualquer método de busca é necessário que o universo do

problema esteja mapeado, isto é, representado em alguma forma de segmentação para que o algoritmo

de busca percorra as diferentes possibilidades. Uma das formas de representação segmentada de

conhecimento amplamente usada são os grafos orientados (Bender, 1996). Tipicamente, um grafo é

representado como um conjunto de pontos (chamados de vértices ou nós) ligados por retas (chamadas

de arestas ou arcos). Em um grafo orientado, as arestas são direcionadas e representadas por setas.

Cada arco do grafo recebe um peso dado pela função heurística. No algoritmo A* a função

heurística define o custo de um determinado nó. Esta pode ser definida pela equação (2.4) como

sendo uma soma do custo de partir do estado inicial e atingir o estado atual mais uma estimativa do

custo de se atingir o objetivo final.

nhngnf '

(2.4)

onde:

n : número do nó atual;

f(n) : custo atribuído ao nó n;

g(n) : custo para partir do nó inicial e atingir o nó n;

h (n) : estimativa do custo para partir do nó n e atingir o nó objetivo.

De forma resumida, o algoritmo procura passo a passo até encontrar o ponto de destino. Para

isto, o algoritmo mantém duas listas, uma chamada de ABERTOS e outra chamada de FECHADOS.

A lista dos ABERTOS contém todos os nós que podem ser explorados no próximo passo partindo-se

de qualquer um dos passos previamente visitados. A lista dos FECHADOS contém todos os nós que

Page 54: RICARDO ARTIGAS LANGER

37

já foram visitados. A lista dos ABERTOS é inicializada com o nó do ponto de partida e a lista dos

FECHADOS inicia vazia. Seleciona-se o nó da lista de ABERTOS que contém o menor custo dado

pela equação (2.4) e explora-se os seus sucessores calculando o custo de cada um deles. Se um nó

recém aberto já foi explorado, pesquisa-se o caminho encontrado da origem até o nó aberto

verificando se é melhor que o encontrado anteriormente, em caso afirmativo troca-se as referências

para que o nó recentemente explorado aponte para o melhor caminho e atualiza-se os pesos dos nós

subseqüentes. Assim que o ponto de destino for adicionado à lista de ABERTOS o menor caminho

é encontrado resgatando-se todos os melhores caminhos, partindo do ponto de destino até o chegar ao

ponto de origem.

A Figura 21 mostra um exemplo da busca do A*. Inicialmente há apenas o nó A na lista de

ABERTOS e este será explorado, gerando 3 sucessores, os nós B, C e D. O custo de cada um é

calculado sendo 3 para o nó B, 5 para o nó C e 1 para o nó D. Este custo refere-se a soma do custo de

sair do nó inicial (A) e chegar ao nó em questão mais uma estimativa do custo para se atingir ao

destino partindo-se do nó atual. O nó A passa a lista de FECHADOS e os novos nós são armazenados

na lista de ABERTOS.

O nó D é o que possui o menor custo sendo o mais promissor da lista de abertos. No passo 3

este nó é explorado, sendo depois enviado a lista de FECHADOS, gerando sucessores (E e F). Agora

o nó B é o mais promissor da lista de ABERTOS sendo explorado no passo 4. Dentre os nós abertos,

o nó E é o de menor custo, sendo explorado no passo 5. O algoritmo continua até que o nó de destino

seja inserido à lista de ABERTOS. Cada nó deve sempre apontar para o melhor caminho até ele,

sendo que se for encontrado algum nó que já está na lista de FECHADOS, os custos das respectivas

funções g(n) (do nó que já foi explorado e do nó recentemente aberto) devem ser comparadas. Caso

verifique-se a necessidade deve-se ajustar os ganhos e as referências para que os nós continuem

sempre apontando para o menor caminho até o nó inicial.

Figura 21 Exemplo do uma busca pela melhor escolha. Fonte: (Rich, 1998).

Page 55: RICARDO ARTIGAS LANGER

38

2.4.1.1 Pseudo código do Algoritmo A* (Rich, 1998)

1. Comece com ABERTOS contendo apenas o nó inicial. Atribua 0 do valor de g do nó, seu valor de h

para qualquer que seja ele e seu valor de f

para h

+ 0, ou h . Atribua a

FECHADOS a lista vazia. 2. Até ser encontrado um nó meta, repita o seguinte procedimento: se não houver nenhum

nó em ABERTOS com menor valor de f . Remova o de ABERTOS. Coloque o em FECHADOS. Veja se MELHOR NÓ é um nó meta. Em caso positivo, encerre e reporte uma solução (MELHOR NÓ se tudo o que quisermos for o nó ou o caminho que foi criado entre o estado inicial e MELHOR NÓ se estivermos no caminho). Caso contrário gere os sucessores de MELHOR NÓ, mas ainda não ajuste MELHOR NÓ para apontar para eles. (Precisamos primeiro ver se algum deles já foi gerado). Para cada SUCESSOR, faça o seguinte:

(a) Ajuste SUCESSOR para apontar de volta para MELHOR NÓ. Estas ligações para trás permitirão recuperar o caminho, uma vez encontrada uma solução.

(b) Compute g (SUCESSOR) = g(MELHOR NÓ) + o custo de sair de MELHOR NÓ e chegar a SUCESSOR.

(c) Veja se SUCESSOR é igual a qualquer nó em ABERTOS (isto é, se ele já foi gerado, mas não processado). Em caso positivo, chame aquele nó de ANTIGO. Uma vez que este nó já existe no gráfico, podemos desconsiderar SUCESSOR e acrescentar ANTIGO à lista de sucessores de MELHOR NÓ. Agora precisamos decidir se a ligação com o pai de ANTIGO deve ser ou não reajustada para apontar para MELHOR NÓ. Ela deve ser reajustada se o caminho que encontramos para chegar a SUCESSOR for mais barato que o atual melhor caminho até ANTIGO (já que SUCESSOR e ANTIGO são, na realidade, o mesmo nó). Portanto, veja se é mais barato chegar a ANTIGO via seu pai atual ou a SUCESSOR via MELHOR NÓ: compare os valores de g. Se ANTIGO for mais barato (ou se o preço for o mesmo), então não precisaremos fazer nada. Se SUCESSOR for mais barato, então reajuste a ligação com o pai de ANTIGO, para apontar para MELHOR NÓ, registre o novo caminho mais barato em g(ANTIGO) e atualize f (ANTIGO).

(d) Se SUCESSOR não estava em ABERTOS, veja se está em FECHADOS. Em caso positivo, chame o nó em FECHADOS de ANTIGO e acrescente ANTIGO à lista de sucessores de MELHOR NÓ. Verifique se o novo caminho ou o caminho antigo é melhor, como na etapa 2(c) e ajuste corretamente a ligação com o pai e os valores de g e f . Se tivermos acabado de encontrar um melhor caminho para ANTIGO, precisamos propagar a melhoria aos sucessores de ANTIGO. Esta operação é um pouco delicada. ANTIGO aponta para seus sucessores. Cada sucessor, por sua vez, aponta para seus sucessores, e assim por diante, até que cada ramificação acabe com um nó que ainda esteja em ABERTOS ou que não tenha sucessores, faça caminhamento em profundidade da árvore, começando em ANTIGO, mudando o valor de g em cada nó (e portanto também o valor de f ), e encerrando cada ramificação quando encontrar um nó sem sucessores ou um nó para o qual um caminho melhor ou equivalente já tenha sido encontrada. Essa segunda verificação garante que o algoritmo termine mesmo que haja ciclos no grafo. Se houver um ciclo, quando um dado nó for visitado pela segunda vez, o caminho não será melhor que na primeira vez, portanto, a propagação acabará. A ligação de cada nó com o pai aponta para o melhor pai conhecido. No momento da propagação, verifique se o pai aponta para o nó do qual você está vindo. Se sim, continue. Caso contrário, então o valor de g já reflete o melhor caminho do qual ele é parte. Então compare os dois. Se o caminho através do pai atual ainda for melhor, encerre a propagação. Se o caminho através do qual que você está propagando agora for melhor, reajuste o pai e prossiga com a propagação.

(e) Se SUCESSOR não estava nem em ABERTOS nem em FECHADOS, então coloque o em ABERTOS e acrescente o à lista de sucessores de MELHORNÓ. Compute f (SUCESSOR) = g(SUCESSOR) + h (SUCESSOR).

Page 56: RICARDO ARTIGAS LANGER

39

2.4.2 A* para o Planejamento de Trajetórias No âmbito do planejamento de trajetórias o universo do problema é o ambiente que contém os

obstáculos, o robô móvel e o ponto de destino. Para segmentar o ambiente e possibilitar a busca é

usado um método conhecido como grafos de visibilidade (Paula, 2004). Também pode-se utilizar

outras formas de segmentar um ambiente, tais como os diagramas de Voronoi e decomposição em

células (Chenney, 2005).

Considerando a equação (2.4), o valor da função g(n) é calculado através do somatório de todas

as distâncias euclidianas partindo-se do nó de partida até o nó n, como mostra a equação (2.5). A

função h (n), dada pela equação (2.6), pode ser calculada como a distância euclidiana entre o nó atual

e o nó de destino.

n

iiiii XXYYng

1

21

21

(2.5)

22' nDnD XXYYnh

(2.6)

onde:

Xi, Yi : as coordenadas do nó i (considerando i =1 o nó inicial);

XD, YD : as coordenadas do nó destino.

2.4.2.1 Segmentação do Ambiente Utilizando Grafos de Visibilidade Com uma boa relação custo benefício entre a otimização do resultado e a simplicidade de

implementação, os grafos de visibilidade unem a facilidade de programação com um bom

desempenho. Aproximando a forma dos obstáculos por polígonos este método objetiva separar os

vértices dos obstáculos e compor um grafo de acordo com a visibilidade de cada vértice, formando

um grafo não orientado cujos nós são o início e o fim do caminho e os vértices de cada obstáculo. As

arestas são os segmentos de reta que unem cada nó com outro e não passam pelo meio dos obstáculos

(Chenney, 2005).

O problema desta abordagem é que, a princípio, a construção do grafo de visibilidade possui

alto custo computacional. Observa-se que o algoritmo é de ordem cúbica com relação ao custo

computacional (Paula, 2004).

Por fim, destaca-se que o algoritmo de geração do grafo de visibilidade é completo, ou seja,

sempre retorna um caminho quando existir algum (Paula, 2004). Pode-se ver na Figura 22 a

construção de um grafo de visibilidade.

Os grafos de visibilidade apresentam uma desvantagem devido às trajetórias geradas estarem

sobrepostas às arestas dos obstáculos, o que, apesar de funcionar para robôs móveis pontuais, não é

adequado para implementações reais. Para resolver este problema, os obstáculos são expandidos em

todas as direções da mesma forma que o operador offset executa em programas de CAD (Computer

Aided Drawing). Assim sendo, se a distância a ser considerada para o offset dos obstáculos for igual

ou maior do que o raio do círculo circunscrito à geometria do robô móvel, considerando que o centro

Page 57: RICARDO ARTIGAS LANGER

40

é a sua referência para o movimento, pode-se evitar as colisões. Chama-se de offset a distância entre

um vértice do obstáculo original e o seu equivalente no obstáculo ampliado.

a) Ambiente com obstáculos

b) Vértices dos obstáculos selecionados

c) Grafo formado pela visibilidade dos vértices entre si

d) Grafo sem os obstáculos originais

Figura 22 Construção dos grafos de visibilidade. Fonte: (Chenney, 2005).

Para expandir os obstáculos, considerando os obstáculos como regiões claras no ambiente

escuro, podem ser utilizadas operações tipo Open, muito comuns em processamento de imagens (Jain,

1989). Apesar desta técnica ser muito difundida na literatura, ela opera a imagem matricialmente,

pixel a pixel, tornando o processo muito caro computacionalmente.

Dessa forma, o efeito de expandir os obstáculos foi desenvolvido usando a informação de

forma vetorial, uma vez que todos os obstáculos são decompostos em segmentos de retas. Cada um

dos vértices do obstáculo foi expandido individualmente, removido do seu local original e recolocado

em uma posição mais afastada. Para geometrias convexas o processo é simples, pois é suficiente

afastar cada um dos vértices do centro de massa do obstáculo. Já para os obstáculos côncavos, um

critério mais elaborado e abrangente deve ser utilizado, pois em alguns casos, mesmo quando o

vértice se afasta do obstáculo original, este pode estar se aproximando do seu centro de massa. Para

resolver este problema, em todos os vértices são traçadas as retas bissetrizes às suas arestas. Retas

estas que obrigatoriamente passam pelos vértices que as geraram. É certo que os pontos ampliados

estão sobre estas retas bissetrizes. É necessário ainda determinar a direção correta, visto que, partindo

de cada um dos vértices as retas bissetrizes possuem dois possíveis sentidos. Para isso são contadas

quantas intercessões ocorrem entre uma dada bissetriz e as demais arestas do objeto em cada um

desses dois sentidos. O sentido da bissetriz que contém um número par (ou zero) de colisões

representa o lado de fora do obstáculo. A Figura 23 mostra um exemplo de um obstáculo em forma de

H e o seu equivalente expandido.

Page 58: RICARDO ARTIGAS LANGER

41

Figura 23 Processo de offset obstáculo original em vermelho e em azul a figura ampliada.

Com o grafo de visibilidade mapeando um ambiente, cujos obstáculos estão expandidos, pode-

se usar o algoritmo A* para procurar pelo melhor caminho segundo uma dada heurística.

2.4.3 Resultados Combinando o método de busca heurística A*, os grafos de visibilidade e o offset dos

obstáculos, o algoritmo é capaz de, recebendo as informações de um ambiente com obstáculos,

determinar o menor caminho possível entre dois pontos. A Figura 24 uma trajetória (em preto)

encontrada o ambiente 3. Os pontos vermelhos representam os vértices explorados pelo A*. Percebe-

se que estes pontos estão levemente afastados dos obstáculos. Isso é devido ao processo de offset

discutido anteriormente.

Figura 24 Trajetória encontrada pelo A*.

A Figura 25 mostra a trajetória encontrada nos casos de estudo propostos no início do capítulo.

O único parâmetro que foi especificado foi a distância de offset de valor igual a 3. Para o ambiente 4,

nota-se alguns pontos mais próximos dos obstáculos. Isto se deve ao fato de que todos os obstáculos

foram mapeados com polígonos, assim, algumas formas arredondadas, apesar de serem visivelmente

aparentes, foram descartadas.

Page 59: RICARDO ARTIGAS LANGER

42

Figura 25 Trajetórias encontradas pelo A*.

O tempo computacional gasto para o ambiente 1 foi de 22 milisegundos, para o ambiente 2 foi

de 4 milisegundos, para o ambiente 3 foi de 306 milisegundos e para o ambiente 4 foi de 1435

milisegundos, sendo que todos os algoritmos foram codificados em LabVIEWTM e executados por um

computador AMD Athon 64 de 2,4GHz com 512Mb de memória RAM. Apesar do ambiente 3

possuir mais obstáculos que o ambiente 4, este foi mapeado com uma quantidade menor de vértices,

pois não possui obstáculos arredondados como o ambiente 4. Dessa forma, a construção do grafo de

visibilidade para o ambiente 4 é mais demorada.

Esta combinação de métodos mostrou-se eficaz sempre retornando o menor caminho. Também

existe a possibilidade de determinar as trajetórias para ambientes dinâmicos, porém a atualização dos

grafos de visibilidade deve ser feita continuamente e esta é a tarefa que consome quase todo o esforço

computacional.

2.4.4 Considerações Finais sobre o A* Várias observações podem ser feitas a respeito deste algoritmo. A primeira refere-se ao papel

da função g. Esta função permite escolher qual nó será expandido a seguir, com base não apenas na

qualidade do nó em si (medida por f), mas também com base na qualidade do caminho até o nó. Se

Page 60: RICARDO ARTIGAS LANGER

43

for incorporado h´ em f de acordo com a equação (2.4), nem sempre será escolhido como próximo nó

a ser expandindo o nó que parece estar mais próximo ao objetivo. Se o objetivo for apenas encontrar

uma solução, pode-se definir g sempre como 0, escolhendo assim sempre o nó que parecer mais

próximo do objeto. Para encontrar um caminho que envolva o menor número de passos, então deve-se

de definir o custo de sair de um nó e chegar a seu sucessor como uma constante, geralmente 1. Se, por

outro lado, deseja-se encontrar o caminho mais barato, e alguns operadores custam mais do que

outros, então ajustamos o custo de sair de um nó e chegar a outro de modo a que ele reflita tais custos.

Desta forma, o algoritmo A* pode ser usado tanto para encontrar o melhor caminho quanto encontrar

um caminho o mais rápido possível (Rich, 1998).

Para um ambiente estático o A* não precisa reconstruir o grafo de visibilidade que é demorado,

principalmente quando o número de vértices e obstáculos é elevado. A complexidade do ambiente

também afeta diretamente a velocidade do A*. Um ambiente com muitas bifurcações fará com que o

algoritmo vasculhe muitos caminhos diferentes, atualizando os pesos de todos os nós no melhor

caminho encontrado até o momento sempre que algum desvio mostre-se melhor que o caminho atual.

Algumas tentativas de otimizar o funcionamento do algoritmo foram elaboradas, porém ao

melhorar a velocidade de convergência, deixam de garantir que a melhor solução será encontrada

(Chenney, 2005).

2.5 Algoritmos tipo Bug e o Método K Bug

Grande parte dos algoritmos usados na literatura, incluindo os já apresentados neste capítulo,

pouco utilizam-se da informação disponível sobre o ambiente como um todo quando este é conhecido

a priori (Chenney, 2005). Os algoritmos genéticos apresentam convergência lenta quando comparado

com o A*. Os campos potenciais artificiais dificilmente retornam o melhor caminho e possuem o

problema de estabilizar em um mínimo local, problema este que é de difícil solução. O algoritmo A*,

que é a estrela dos métodos de planejamento de trajetória, realiza uma busca enumerativa nó a nó,

não levando em consideração as dimensões e posições geométricas dos obstáculos e necessitando de

um pré processamento de todo o ambiente. Uma analogia pode ser feita com uma pessoa caminhando

por um labirinto com um GPS (Global Positioning System) na mão. Esta pessoa não tem noção do

que há por detrás de uma parede e não sabe se um dado caminho será o melhor sem percorre lo

primeiramente. Para este projeto, que visa controlar a trajetória de um robô móvel, baseado na

realimentação de informação visual proveniente de uma câmera instalada no teto, baixo custo

computacional é crucial para o funcionamento em tempo real. Além disso, toda a informação sobre o

ambiente está sempre disponível.

Page 61: RICARDO ARTIGAS LANGER

44

Apesar da busca nos grafos de visibilidade usando o algoritmo A* ter se mostrado bastante

eficiente, ela apresentou desvantagens. Uma grande parte do mapa deve ser explorada mesmo para

trajetórias simples e o tempo gasto no processamento aumenta de acordo com a complexidade do

ambiente.

2.5.1 Algoritmos tipo Bug Baseados na observação do comportamento de insetos, uma outra vertente de algoritmos que

planejam a trajetória de robôs móveis são os Bug Algorithms. Apesar destes algoritmos serem

indicados para robôs que possuem apenas sensores locais, não dispondo da informação global sobre o

ambiente, estes algoritmos podem ser utilizados em sistemas deliberativos, onde um plano global é

traçado antes do início do movimento(vide 1.2.3).

Todos os algoritmos tipo Bug baseiam-se no fato de que a menor distância entre dois pontos é

uma linha reta. Assim sendo, os esforços em encontrar uma trajetória para um robô móvel estão

voltados em aproximá la ao máximo da linha reta que une os pontos de origem e destino. Quando

esta não pode ser alcançada, como por exemplo, no caso de um obstáculo, o algoritmo tentará

imediatamente contornar tal obstáculo para, em seguida, retornar a busca pela reta Origem Destino.

Um dos primeiros algoritmos neste contexto é o denominado Bug2 (Lumelsky e Stepanov,

1987). Estes algoritmos operam alternando entre dois comportamentos simples: (i) o movimento em

direção ao objetivo e (ii) a circunavegação de um obstáculo.

No algoritmo Bug2, o robô inicia movendo-se diretamente em direção ao ponto de destino.

Quando encontra um obstáculo, começa a contorná lo, apenas retornando a deslocar-se na direção do

ponto de destino quando uma condição de direção é atingida. Para este método, a condição consiste

no robô encontrar novamente a reta que liga o ponto de origem ao ponto de destino. A Figura 26

mostra um exemplo da trajetória gerada pelo algoritmo.

Percebe-se que, mesmo para obstáculos simples, o método citado não é capaz de encontrar a

trajetória ótima. Dentre as suas vantagens estão: o baixo custo computacional e a garantia de

encontrar pelo menos uma trajetória factível.

Figura 26 Trajetória gerada pelo algoritmo Bug2 proposto por Lumelsky e Stepanov.

Lumelsky e Skewis (1990) propõem uma melhoria ao Bug2 no VisBug. Esta melhoria está

relacionada com a condição que o robô usa para deixar de contornar o obstáculo e voltar a dirigir-se

Page 62: RICARDO ARTIGAS LANGER

45

para o ponto de destino, gerando atalhos na trajetória. Esta condição é conhecida por condição de

saída (leaving condition). Assim que a reta Origem Destino torna-se visível ao robô, este deixa de

contornar o obstáculo para seguir em direção ao destino. A Figura 27 mostra um exemplo de trajetória

gerada pelo VisBug para contornar um obstáculo. A partir do ponto V, a reta Origem Destino está

visível para o robô, sendo que este retoma a sua trajetória em direção ao destino.

Neste contexto, Kamon e Rivlin (1997) publicam o DistBug em um trabalho que propõem

novamente uma alteração na condição de saída e comprovam a convergência do método para alguns

casos simples.

Figura 27 Trajetória gerada pelo algoritmo VisBug proposto por Lumelsky e Skewis.

O algoritmo DistBug incorpora, basicamente, duas contribuições em relação aos casos já

citados: (i) uma condição de saída mais agressiva sem aumentar o custo computacional e (ii) um

método para determinar qual dos lados deve ser usado para iniciar o contorno do obstáculo.

No DistBug, a condição de saída é tomada de forma a garantir que o próximo ponto de colisão

está mais próximo do ponto de destino que o ponto de colisão anterior. Para que isto funcione, o robô

deve medir constantemente a distância livre F, isto é, a distância desobstruída de qualquer obstáculo

em direção ao ponto de destino T. Depois que uma colisão é detectada, o robô inicia o modo em que o

obstáculo é contornado. A menor distância até o ponto de destino T, detectada desde a última colisão,

dmin(T), também deve ser armazenada. Tomando-se por d(X, T) a distância de um ponto X qualquer

até o destino T, a condição de saída é ativada quando uma das seguintes condições é verificada

(Kamon e Rivlin, 1997):

i) Se a equação (2.7) for atendida, significando que o destino está visível.

ii) Se a equação (2.8) for atendida, significando que é mais vantajoso dirigir-se para o destino

do que continuar contornando o obstáculo.

STEPTdFTXd

FTXd

)(),(

0),(

min

(2.7)

(2.8)

O parâmetro STEP é um valor constante, segundo sugestão dos autores, igual a menor distância

entre objetos existentes no ambiente.

As diferenças de comportamento surgem quando, durante o modo de contorno dos obstáculos,

a reta Origem Destino é de difícil visualização. Isto faz com que o VisBug gere caminhos piores que

o DistBug como mostrado na Figura 28.

Page 63: RICARDO ARTIGAS LANGER

46

Outra contribuição do algoritmo está no uso de um método de determinação, através de

sensoriamento local, do lado a ser contornado e de um gerenciador de busca . Estes procedimentos

contribuem para a geração de caminhos menores e podem ser usados não somente em conjunto com o

DistBug, mas com qualquer outro algoritmo apresentado. Sem estes procedimentos, para ambientes

contendo somente obstáculos convexos, o desempenho do DistBug é igual ao VisBug.

Figura 28 Comparação entre uma trajetória gerada pelo VisBug (em vermelho), o DistBug (em preto) e o BUG2

(em verde).

O algoritmo Distbug é um exemplo de como regras simples podem gerar um comportamento

complexo utilizando as técnicas de navegação baseadas em sensores. O algoritmo é reativo no sentido

de que depende dos dados sensoriais para tomar decisões locais.

Kamon e Rivlin (1997) também demonstram que o DisBug pode oscilar e gerar caminhos com

vários ciclos antes de convergir para uma trajetória até o destino. Isto é esperado em um método que

privilegia as informações de sensores locais.

Em qualquer um dos algoritmos apresentados, caso o robô complete um volta inteira em torno

do obstáculo significa que o alvo está inacessível.

2.5.2 O algoritmo K Bug O algoritmo proposto utiliza toda a informação disponível do ambiente e aplica princípios

geométricos para a determinação da trajetória, ao invés de processos de busca ou aproximações

numéricas.

Denominado de K Bug, este novo algoritmo está baseado no mesmo conceito dos métodos

descritos anteriormente. A maior diferença deste novo método está no fato de que o algoritmo

abandona a trajetória em direção ao destino assim que uma colisão é detectada. Quando isso acontece,

o robô tem duas opções: contornar o obstáculo pela esquerda ou pela direita. A decisão é tomada

verificando, em cada um dos lados, o ponto visível mais afastado do robô que ainda pertence ao

obstáculo. Desta forma, o robô dirige-se imediatamente para o que estiver mais próximo.

A Figura 29 exemplifica este processo, ainda baseado no mesmo princípio de geração de uma

trajetória de forma reativa.

Page 64: RICARDO ARTIGAS LANGER

47

Assumindo uma trajetória onde o robô parta da origem e detecte uma colisão a sua frente.

Nesta situação, os pontos mais afastados que pertencem ao obstáculo e estão visíveis para o robô são

os vértices A e B. Como o vértice A está mais próximo, é para ele que o robô se dirige. Quando este

atingir o vértice A, novamente é verificada a colisão mais a frente caso tente se deslocar em direção

ao destino. Nesta posição, os pontos visíveis mais afastados que pertencem ao obstáculo são os

vértices C e B. O ponto C será agora o novo destino do robô e assim por diante.

Dessa forma o algoritmo se concentra em contornar apenas o necessário para ultrapassar o

obstáculo, saltando para os pontos mais extremos sem precisar contorná lo por completo.

Figura 29 Trajetória gerada pelo algoritmo K Bug.

Da mesma forma que o DistBug e o VisBug, o K Bug pode oscilar gerando loops na trajetória.

Entretanto, a sua convergência pode ser melhorada caso seja considerada toda a informação sobre o

ambiente no planejamento da trajetória.

2.5.2.1 O K Bug quando toda a Informação sobre o Ambiente é Conhecida Há algumas aplicações em que toda a informação sobre o ambiente é conhecida a priori,

podendo, portanto ser considerada no planejamento da trajetória. Assim sendo, serão adicionadas ao

algoritmo informações a respeito da geometria do obstáculo de forma a determinar, com mais

eficiência, quais os pontos que serão inseridos na trajetória. Dessa forma, serão resolvidos os

problemas de convergência inerentes a todos os métodos de planejamento que consideram apenas

informações locais.

O procedimento descrito detalhadamente a seguir consiste em partindo de uma linha reta que

une o ponto de origem com o ponto de destino, procurar por uma região onde ocorrem colisões e

contorná la, inserindo pontos intermediários na trajetória. Estes pontos são selecionados dentre os

vértices do próprio obstáculo que causou a colisão. O processo deve ser repetido até que não existam

mais colisões.

Com toda a informação sobre o ambiente disponível traça-se uma reta, denominada rm, unindo

os pontos de origem e destino. Esta reta irá atravessar as arestas dos obstáculos presentes no

ambiente. Tais colisões sempre irão aparecer aos pares para um mesmo obstáculo, pois todas as

entidades no ambiente podem ser representadas por polígonos fechados. Assim sendo, a reta rm gera

Page 65: RICARDO ARTIGAS LANGER

48

sempre uma colisão quando entra em um obstáculo e outra quando sai. Para escolher

obrigatoriamente uma colisão que seja um ponto de entrada basta selecionar a colisão mais próxima

do ponto de origem. Este ponto de colisão será chamado C1.

Seleciona-se a segunda colisão em função da distância até a origem. Este ponto será um ponto

em que a reta rm sai do obstáculo denominado C2.

Para determinar por qual lado o obstáculo será contornado mede-se o perímetro do obstáculo

partindo de C1 até C2 pelo sentido horário e anti horário. Será selecionado o lado que contem a seção

de menor perímetro.

A seção entre C1 e C2 de menor perímetro contém um número finito de vértices do obstáculo. O

vértice contido na secção selecionada que estiver mais distante da reta rm será inserido como ponto

intermediário na trajetória entre o ponto de origem e o ponto de destino. Este novo ponto será

chamado de V1. Agora a trajetória consiste em dois segmentos de reta, o segmento Origem V1 e o

segmento V1 Destino. Todo o processo deve ser repetido recursivamente para os novos segmentos

gerados até que tenham sido eliminadas todas as colisões.

Caso um obstáculo possua mais de um par de colisões, em cada passo será processado apenas o

par entrada/saída que divide o obstáculo mais ao meio com relação ao seu perímetro.

Embora esta proposta apresentada considere alguns conceitos dos métodos Bug clássicos, está

inspirada na metodologia que um ser humano usaria para encontrar o caminho caso enxergasse o

mapa de cima. Por exemplo, se no ambiente mostrado na Figura 30 for traçado uma reta ligando os

pontos de origem e destino, teria-se a menor trajetória possível. Tal trajetória não é viável devido à

presença dos obstáculos que geraram as colisões destacadas em vermelho na Figura 30.

Figura 30 Ambiente dividido em três áreas.

Considera-se uma colisão um ponto de intersecção entre a trajetória planejada e uma aresta de

um obstáculo. Empiricamente pode-se identificar três regiões distintas de acordo com as colisões.

Enquanto as regiões A e C não contém colisões, a região B está próxima de quatro colisões e deve,

neste primeiro momento, necessariamente ser contornada. Percebe-se que a inserção de um ponto

intermediário na trajetória próximo à letra B eliminaria todas as colisões existentes. Outro aspecto

Page 66: RICARDO ARTIGAS LANGER

49

interessante está no fato de que qualquer que fosse a geometria do ambiente nas áreas A e C, a

decisão seria a mesma com respeito a contornar a região B. Dessa forma, neste primeiro passo é

absolutamente dispensável o processamento de qualquer informação proveniente das regiões

contendo obstáculos que não geram colisões com a trajetória, o método deve concentrar-se apenas em

resolver o problema em B.

Depois de inserir um ponto intermediário na trajetória, ponto este chamado de I1, a trajetória foi

dividida em dois segmentos de reta: Origem I1 e I1 Destino. O procedimento é recomeçado agora

analisando o segmento de reta Origem I1. Percebe-se que o ponto I1 apesar de resolver as quatro

colisões anteriores gerou duas novas colisões como se pode ver na Figura 31. Dividindo a área

novamente em três regiões mais uma vez é constatada a irrelevância das regiões A e C neste passo.

Considerando apenas a nova região B conclui-se que a inserção de um ponto intermediário

entre o ponto de origem e I1, chamado de I2, pode-se contornar as duas novas colisões.

Figura 31 Ambiente novamente dividido em três áreas passo 2.

Obteve-se agora uma trajetória livre de colisões mostrada na Figura 32. Apenas a informação

necessária foi considerada no processo, o que evita desperdícios de processamento.

Figura 32 Trajetória final.

Page 67: RICARDO ARTIGAS LANGER

50

De forma resumida o processo consiste em, partindo de uma linha reta que une o ponto de

origem com o ponto de destino, procurar por uma região onde ocorrem colisões e contorná la

inserindo pontos intermediários na trajetória. O processo deve ser repetido até que não existam

colisões.

2.5.3 Pseudo código do K Bug Seja um ambiente com obstáculos onde são demarcados dois pontos, um para o origem da

trajetória e outro para o destino. Liga-se o ponto de destino (a partir de agora chamado de B) ao ponto

de origem (a partir de agora chamado de A), formando o segmento AB. A reta que contém o

segmento será chamada de rm. Como a menor distância entre dois pontos é uma linha reta, o

algoritmo sempre tentará estabelecer retas entre os nós da trajetória.

Este segmento AB pode, eventualmente, interceptar as arestas dos obstáculos gerando colisões.

Um ou mais obstáculos podem ser interceptados em um ou mais pontos. Salvo quando o segmento

AB for coincidente com uma aresta de um obstáculo, existe apenas um ponto de intercessão entre

uma aresta e o segmento AB. Para cada uma das arestas de cada um dos obstáculos é elaborado um

sistema de equações contendo a equação da reta que contém a aresta e a equação da reta que contém o

segmento AB. Tal sistema possui solução analítica mostrada na equação (2.9). Uma colisão é

identificada quando este sistema resulta em uma solução contida no segmento AB.

ijijcijrm

ijrmc XYX

(2.9)

Considerando:

XY : equação geral da reta no R2;

rm : coeficiente angular da reta rm;

rm : coeficiente linear da reta rm;

ij : coeficiente angular da reta que contém a aresta i do objeto j;

ij : coeficiente linear da reta que contém a aresta i do objeto j;

Xc : coordenada no eixo das abscissas do ponto onde ocorre a intersecção das retas;

Yc : coordenada no eixo das ordenadas do ponto onde ocorre a intersecção das retas.

As colisões sempre irão aparecer aos pares em um mesmo obstáculo, pois todas as entidades no

ambiente são representadas por polígonos fechados. Assim sendo, a reta rm gera sempre uma colisão

quando entra em um obstáculo e outra quando sai. Pontos tangentes são considerados como sendo

duas colisões no mesmo local e podem acontecer sobre os vértices dos obstáculos. Para escolher

obrigatoriamente uma colisão que seja um ponto de entrada basta selecionar a colisão mais próxima

do ponto de origem, uma vez que este não pode estar contido dentro de um obstáculo. Esta colisão

será chamada de C1.

Page 68: RICARDO ARTIGAS LANGER

51

Seleciona-se a segunda colisão em função da distância até a origem. Este pondo será um ponto

em que a reta rm sai do obstáculo, um ponto de saída que será chamado de C2. Apenas o objeto que

contém C1 e C2 será analisado neste passo, sendo que todos os demais obstáculos somente serão

considerados após um novo ponto ser inserido à trajetória. As demais colisões devem ser descartadas.

Após um novo ponto ser inserido à trajetória, novas colisões podem surgir e as colisões existentes

podem ser eliminadas

Partindo-se do ponto de entrada (C1) percorre-se os vértices do objeto (que estão em ordem) no

sentido horário até encontrar o ponto de saída C2, medindo as distâncias percorridas, isto é, somando

os comprimentos das arestas entre C1 e C2 no sentido horário. Este valor será chamado de Dh.

Repetir a operação, mas para o sentido anti horário (A soma das duas distâncias encontradas

deve resultar no perímetro do obstáculo). Este valor será chamado de Da. Divide-se a distância

encontrada no sentido horário (Dh) pela encontrada no sentido anti horário (Da) gerando-se um fator

de forma.

Repete-se o processo para todos os pares entrada/saída de colisões do obstáculo. Cada par

analisado resultará em um fator de forma. Em obstáculos convexos sempre há apenas um par de

colisões.

Em casos onde, em um mesmo segmento de trajetória, ocorre mais de um par de colisões no

mesmo obstáculo, considera-se apenas o par de colisões com o fator de forma mais próximo de 1 para

os próximos passos. Um fator de forma igual a 1 significa que o obstáculo está dividido praticamente

ao meio. Este passo otimiza a tentativa de contornar o obstáculo, preocupando-se em contornar a

porção do obstáculo de maior perímetro.

O vértice mais afastado de rm, contido entre C1 e C2, no sentido que foi calculado o menor

valor do somatório das arestas (menor valor entre Dh e Da ) será adicionado à trajetória. Para que o

próprio ponto adicionado não gere colisões com o vértice que o gerou pode-se aplicar o procedimento

de offset descrito nos tópicos anteriores no vértice selecionado. O ponto gerado será chamado de C.

Inserir o ponto C na trajetória entre o ponto de origem e o ponto de destino. Agora a trajetória

contém um nó intermediário em C. O algoritmo é recomeçado considerando o segmento Origem C

de forma isolada do restante da trajetória. Toma-se o ponto C como o ponto de destino. Quando todas

as colisões de um segmento são contornadas o algoritmo passa para o próximo segmento. Uma

trajetória é encontrada quando são eliminadas todas as colisões geradas por todos os segmentos entre

os pontos de origem, destino e pelos pontos inseridos pelo próprio algoritmo.

Para determinar qual o vértice que está mais afastado da reta rm é simplesmente determinada a

distância euclidiana entre uma reta e um ponto (X, Y) no R2. como mostra a equação (2.10).

12rm

rmrm YXd

(2.10)

Page 69: RICARDO ARTIGAS LANGER

52

A Figura 33 mostra uma trajetória sendo gerada passo a passo pelo algoritmo K Bug. O caso

escolhido é de um obstáculo com formato em U devido a este ter uma forma propícia a causar

instabilidade e problemas com mínimos locais nos métodos tradicionais.

Inicialmente a trajetória é composta pelo segmento Origem Destino como mostra a Figura

33(a). São encontrados dois pontos de colisão C1 (entre os vértices G e H do obstáculo) e C2 (entre os

vértices C e D do obstáculo). Duas secções são identificadas, a secção C1 H A B C C2 de menor

comprimento e a secção C1 G F E D C2 de maior comprimento. Dentre os vértices que compõe a

secção de menor comprimento, aquele que se encontra mais afastado da reta (equação (2.10) ) que

contém o segmento Origem Destino é o vértice C. Este será inserido na trajetória como ponto

intermediário, mostrado na Figura 33(b).

Repete-se agora o mesmo processo, mas considerando o segmento Origem C no lugar de

Origem Destino. Seguindo os mesmos critérios é encontrado o vértice B, sendo este inserido como

ponto intermediário em Origem C como mostra a Figura 33(c).

Figura 33 Trajetória sendo gerada pelo método K Bug passo a passo.

Finalmente, o vértice A é inserido entre Origem B resultando em uma trajetória livre de

colisões mostrada na Figura 33(d). Caso um obstáculo possua mais de um par de colisões, em cada

passo será processado apenas o par entrada/saída que divide o obstáculo mais ao meio com relação ao

seu perímetro.

Page 70: RICARDO ARTIGAS LANGER

53

2.5.4 Resultados Na Figura 34 é apresentado novamente a geração passo a passo de uma trajetória, mas desta

vez em um ambiente complexo.

Figura 34 Trajetória gerada passo a passo pelo K Bug em um ambiente complexo.

No algoritmo K Bug não é necessário organizar o ambiente de forma a compor algum tipo de

grafo, como no A*. O único pré requisito é a informação referente aos vértices dos objetos, que

devem estar armazenados em listas circulares, de forma a manter a informação da ordem dos vértices

e a qual obstáculo eles pertencem.

Para os ambientes apresentados no início do capítulo como os estudos de caso, dois já foram

demonstrados nas figuras Figura 33 e Figura 34. As trajetórias geradas para os demais ambientes

estão na Figura 35. O tempo computacional gasto para gerar a trajetória para o ambiente 1 foi de 0.8

milisegundos, para o ambiente 2 foi de 0.3 milisegundos, para o ambiente 3 foi de 19 milisegundos e

para o ambiente 4 foi de 21 milisegundos, sendo que todos os algoritmos foram codificados em

LabVIEWTM e executados por um computador AMD Athon 64 de 2,4GHz com 512Mb de memória

RAM.

Page 71: RICARDO ARTIGAS LANGER

54

Figura 35 Trajetórias geradas pelo algoritmo K Bug.

2.5.5 Considerações Finais sobre o K Bug Comparando o algoritmo K Bug apresentado com os demais métodos estudados chegou-se às

seguintes conclusões.

Para ambientes pouco complexos, isto é, com poucas bifurcações e poucos obstáculos, o A*

pode eventualmente ser mais rápido que o algoritmo K Bug. Com ambientes de mesma

complexidade, o K Bug leva a vantagem de visitar apenas os vértices dos obstáculos que geraram

colisões, mas ele tem que identificá las a cada passo, resolvendo vários sistemas de equações (um

sistema para cada aresta de cada obstáculo).

Quanto à otimização da trajetória encontrada, resultados em simulação mostraram que o K

Bug pode gerar caminhos muito similares ao A*, mesmo para ambientes com muitos obstáculos. A

Figura 36 mostra uma comparação entre uma trajetória gerada pelo K Bug (verde) e pelo A*

(vermelho) para o ambiente 3. Para os ambientes 1 e 2 a trajetória gerada pelo A* e pelo K Bug

foram idênticas.

Figura 36 Comparação entre uma trajetória gerada pelo K Bug (verde) e pelo A* (vermelho) para o ambiente 3.

Page 72: RICARDO ARTIGAS LANGER

55

O fato de o ambiente ser ou não dinâmico não muda a velocidade do K Bug, pois a cada passo

que um novo ponto é inserido na trajetória o algoritmo refaz todos os seus cálculos como se estivesse

começando do zero. Pode-se até definir alguns pontos intermediários na trajetória e o algoritmo

elimina as colisões encontradas, gerando um percurso que obrigatoriamente visita todos pontos pré

estabelecidos.

Dentre as vantagens do K Bug destacam-se:

1. Poucas iterações para atingir um resultado. O algoritmo não busca por um caminho, a cada

passo ele insere um nó que faz parte da trajetória final;

2. Não existe a necessidade de mapear todo o ambiente antes de iniciar o processamento;

3. Não é necessário processar os objetos/obstruções que não interessam à trajetória;

4. Há a possibilidade de traçar caminhos que passem por pontos pré determinados;

5. Para um mesmo ambiente, o K Bug mostrou-se o mais rápido de todos os métodos estudados.

As desvantagens do K Bug são:

1. Não garante retornar o menor caminho e não tem garantia formal de retornar um caminho,

mesmo que ele exista. Este item pode ser exemplificado através da Figura 37.

2. Pontos de origem e destino não podem ser colisões ou estar contidos dentro dos obstáculos.

(Este problema, embora pareça ilógico a princípio, pode ser resolvido por um APF. O obstáculo

poderia ser simplesmente uma área proibida e o algoritmo afastaria o robô móvel da região

para um local permitido );

3. Obstáculos distintos colocados juntos (encostados) causam indeterminações no algoritmo.

Considerando o ambiente com um obstáculo em forma de E , mostrado na Figura 37(a), o K

Bug gera a trajetória em verde, enquanto o A* gera a trajetória em vermelho. Isto ocorre devido ao

fato mostrado na Figura 37(b). A primeira colisão encontrada C1 C2 divide o obstáculo em duas

partes e segundo o critério do menor perímetro o ponto adicionado à trajetória será o vértice A.

Seguindo então o algoritmo chega-se invariavelmente a trajetória mostrada na Figura 37(a).

Figura 37 Exemplo de um ambiente em que a trajetória gerada pelo K Bug não é ótima.

Page 73: RICARDO ARTIGAS LANGER

56

2.6 Conclusões Sobre os Métodos de Planejamento de Trajetórias

Os quatro algoritmos de planejamento de trajetórias foram analisados perante os seguintes

critérios: (i) condição de convergência, (ii) custo computacional, (iii) complexidade do algoritmo,

(iv) otimização do resultado, (v) determinismo, (vi) problemas com mínimos locais e (vii)

dependência da informação de todo o ambiente.

(i) Condição de convergência.

Quanto à convergência, apenas o A* garante encontrar uma trajetória válida viável. O K Bug

ainda não possui uma prova matemática da sua convergência, e apesar de não ter sido encontrado um

contra exemplo, isto é, um ambiente onde o algoritmo falhe em encontrar uma trajetória válida, a sua

convergência não é comprovada para todos os casos. Os algoritmos genéticos têm a sua convergência

apenas estimada estatisticamente. Os campos potenciais têm a convergência dependente das equações

que descrevem o campo e o método numérico usado para resolvê la.

(ii) Custo computacional.

Para atender o objetivo principal deste trabalho, que é a implementação de um sistema em

tempo real de navegação e controle de robôs móveis, os métodos de planejamento de trajetórias

devem ser capazes de processar em um tempo compatível com a aplicação. Uma das características

mais comuns das aplicações de robótica em tempo real são os pequenos intervalos de amostragem,

geralmente na ordem de mili e micro segundos. Isso se deve principalmente ao fato de que os

controladores que implementam efetivamente o movimento necessitam responder à perturbações e

realizar eventuais correções na postura do robô de forma que a trajetória seja mantida. Assim sendo,

o planejamento da trajetória não é o único algoritmo que é continuamente processado durante a

execução do sistema real. Há também algoritmos de reconhecimento de imagens, controladores e a

comunicação entre computador e o robô.

O custo computacional do AG depende da quantidade de nós e não da complexidade do

ambiente. O APF depende diretamente da complexidade do ambiente, visto que a cada passo todos os

obstáculos influenciam no deslocamento do robô. O custo do A* está concentrado em gerar o grafo de

visibilidade, mas este depois de gerado não precisa ser refeito até que ocorra alguma alteração no

ambiente. O K Bug trata toda a informação sobre o ambiente de forma vetorial e a cada iteração

apenas o obstáculo que está imediatamente obstruindo a sua trajetória é considerado.

Dessa forma descartou-se o algoritmo genético para a implementação em tempo real devido ao

alto custo computacional. Uma forma de viabilizar o uso dos AGs é realizar o planejamento da

trajetória em modo offline, isto é, realizada uma vez apenas antes do início do movimento. Nesta

Page 74: RICARDO ARTIGAS LANGER

57

abordagem o sistema perde a capacidade de reagir a qualquer alteração no ambiente. Mesmo assim os

AGs mostram nenhuma vantagem, visto que a qualidade do resultado obtido foi melhor com os

demais algoritmos, não resultando em nenhum motivo para manter o AG no sistema em tempo real.

(iii) Complexidade do algoritmo.

Os AGs e os APFs são métodos de mais fácil implementação computacional devido ao número

reduzido de passos em seus algoritmos. Por outro lado, gerar e manter os grafos de visibilidade,

juntamente com a base de dados do algoritmo de busca do A* são atividades complexas. O K Bug é

um algoritmo de complexidade maior que os AGs mas menor que o A*.

(iv) Otimização do resultado.

Apenas o A* garante além de encontrar uma trajetória válida, que esta será a melhor segundo

uma dada heurística. O K Bug não possui ainda uma prova matemática da sua convergência, apesar

de não ter sido encontrado um contra exemplo, isto é, um ambiente onde o algoritmo falhasse em

encontrar uma trajetória válida. Experiências práticas mostraram que as trajetórias geradas pelo K

Bug assemelham-se das geradas pelo A*.

Os APFs podem gerar em trajetórias com curvas arredondadas sem a necessidade de qualquer

pós processamento. Apesar dos demais métodos gerarem curvas abruptas, estas podem ser

suavizadas após o término do planejamento da trajetória por algum método de interpolação, como por

exemplo, splines. A própria dinâmica do sistema e/ou pela ação do controlador que irá efetivamente

imprimir o movimento no robô também podem causar alguma suavização no movimento.

(v) Determinismo.

O AG conceitualmente não apresenta determinismo no resultado, sendo que duas execuções do

algoritmo com os mesmos dados de entrada fornecem resultados diferentes, podendo a sua

convergência ser apenas estimada estatisticamente. Os demais algoritmos apresentam determinismo

em seus resultados, pois não dependem de números aleatórios.

(vi) Problemas com mínimos locais.

O APF mostrou-se muito susceptível a mínimos locais e o sistema em tempo real deve ser

robusto o suficiente para alcançar qualquer destino em um ambiente qualquer. Pode-se ainda utilizar

APFs mais elaborados, recorrendo a algoritmos de otimização de problemas não lineares para

encontrar trajetórias válidas, porém o custo computacional aumenta incorrendo na mesma situação do

AG. Por estes motivos o APF também foi descartado para a implementação em tempo real. Os AGs,

assim como todo algoritmo numérico de otimização, também apresentam problemas de convergência

prematura para um mínimo local.

Page 75: RICARDO ARTIGAS LANGER

58

(vii) Dependência da informação de todo o ambiente.

Os campos potenciais podem ser aplicados em ambientes dinâmicos onde nem toda a

informação sobre os obstáculos é conhecida, caracterizando um comportamento reativo do sistema.

Devido a esta qualidade, os APF são largamente aplicados em robótica móvel onde a câmera está

montada no próprio robô. Para este trabalho, toda a informação sobre o ambiente será conhecida em

todos os instantes, assim, esta qualidade não representa uma vantagem para a aplicação em tempo

real.

A Tabela 3 mostra uma comparação entre os métodos estudados.

Tabela 3 Comparação entre os métodos de planejamento de trajetórias.

Método

Critério

AG APF A* em grafos de visibilidade

K Bug para ambientes conhecidos

Condição de convergência

Não é garantida a convergência

Não é garantida a convergência

Algum caminho existir

Não é garantida a convergência

Custo computacional

Muito alto, moderadamente dependente da complexidade do ambiente

Médio, altamente dependente da complexidade do ambiente

Médio, altamente dependente da complexidade do ambiente

Baixo, pouco dependente da complexidade do ambiente

Complexidade do algoritmo

Baixa Baixa Alta Moderada

Otimização do resultado

Pode apenas ser estimada

Imprevisível Sempre retorna o melhor caminho

Próximo do melhor caminho

Determinismo Não Sim Sim Sim Problemas com mínimos locais

Sim Sim Não Não

Depende da informação de todo o ambiente

Sim Não Sim Sim

Page 76: RICARDO ARTIGAS LANGER

59

Capítulo 3 Controle da Trajetória através de

Controle Fuzzy

O capítulo anterior apresentou estratégias de planejamento de trajetórias para robôs móveis de

forma a evitar os obstáculos, atender a determinados quesitos de otimização e formular um caminho

viável até o ponto de destino. Para que a implementação em tempo real seja possível, além de planejar

a trajetória do robô é necessário que um sistema de controle faça com que o robô efetivamente

percorra a trajetória planejada. Este algoritmo de controle gera a seqüência de sinais que, através de

circuitos eletrônicos, são convertidos para tensões elétricas e aplicadas, a cada instante, nos motores

do robô.

Neste capítulo é apresentada uma metodologia de controle baseada em lógica Fuzzy capaz de

atender às necessidades do sistema.

3.1 Introdução

Parte dos fundamentos da teoria de controle está associada à algoritmos matemáticos

desenvolvidos principalmente após a 2a

Guerra Mundial. Mas os princípios do controle realimentado,

na forma de conhecimento empírico, intuição e experiência prática têm sido aplicados desde os

tempos da Grécia antiga. A primeira motivação para o controle realimentado que remonta tempos da

Antiguidade surgiu da necessidade em medir a passagem do tempo com precisão. Assim, em

aproximadamente 270 a.C. o grego Ktesibios inventou um regulador de nível para um relógio de

água. A função do regulador era manter o nível de água em um tanque constante. Este nível constante

fornecia um fluxo constante de água para um Segundo tanque. O nível de água neste segundo tanque

dependia do tempo transcorrido. Para controlar o nível de água, Ktesibios usou uma bóia e uma

válvula, sistema este que lembra o controle de nível em caixas d´água atuais (Routledge, 1900).

A revolução industrial na Europa introduziu as máquinas com movimento próprio. Foi marcada

com a invenção de moendas, caldeiras, fundições e motores a vapor. Estes dispositivos não poderiam

ser regulados manualmente, o que provocou uma necessidade por sistemas de controle automático.

Page 77: RICARDO ARTIGAS LANGER

60

Uma série de dispositivos de controle foi inventada, incluindo reguladores de nível, de temperatura,

pressão e velocidade (Fuller, 1976).

James Watt e Matthew Boulton inventaram o motor a vapor em 1769, e esta data marca o

início da Revolução Industrial. O dispositivo de controle utilizado para regular a vazão de vapor em

função da velocidade do motor foi chamado de Watt Governor e é até hoje o dispositivo de controle

automático mais famoso da história.

Figura 38

Watt Governor. O torque gerado pelo peso das bolas é equilibrado pelo torque gerado pela rotação do eixo

(Routledge, 1900).

No final do século XIX foi aperfeiçoada a matemática necessária para modelar e comprovar a

estabilidade dos sistemas de controle mecânicos com os trabalhos de J.C. Maxwell, E.J. Routh e A.M.

Lyapunov (Maxwell, 1868; Lyapunov, 1907; Routh, 1888).

N. Minorsky introduziu, em 1922 (Minorsky, 1922), um controlador para a navegação de

navios composto por três termos, sendo o primeiro a utilizar o controle Proporcional Integral

Derivativo (PID), que é até os dias de hoje o controlador mais utilizado em aplicações industriais

(Åström e Witternmark, 1997).

Durante a 2a. Guerra Mundial, com o aparecimento do transistor e o aperfeiçoamento da

eletrônica, os primeiros circuitos de controle analógicos foram desenvolvidos e utilizados

principalmente para navegação de navios e controle de mira de armamentos. Estas aplicações

caracterizam o chamado de período do controle clássico, onde os projetos eram baseados em técnicas

empíricas de sintonia, usando calculadoras de mão e métodos gráficos (Fuller, 1976).

Com o advento do microprocessador em 1969 um novo nicho para o controle automático

começou a se desenvolver. Há três áreas em que um computador digital é necessário. Primeiramente

para resolver as equações de projeto que regem a lei de controle. Segundo, uma vez que as leis de

controle ótimo e filtros podem ser variantes no tempo, um computador digital é necessário para

implementar as técnicas de controle moderno em sistemas reais. Terceiro devido a que sistemas de

controle podem ser implementados em computadores digitais e estes interagem com o sistema através

de conversores digitais analógicos e circuitos amostradores. Para isso, sistemas de controle que são

implementados em computadores digitais devem ser formulados em tempo discreto. Assim, o

crescimento da teoria de controle digital foi uma necessidade para a época (Åström e Wittenmark,

1997).

Page 78: RICARDO ARTIGAS LANGER

61

Durante a década de 1950, a teoria de sistemas amostrados estava sendo desenvolvida em

Columbia pelos professores J.R. Ragazzini, G. Franklin e L.A. Zadeh, entre outros (Ragazzini e

Franklin, 1958; Ragazzini e Zadeh, 1952). A idéia de usar computadores digitais em processos

industriais surgiu neste período. Em 1956 foi iniciado um projeto em conjunto entre a TRW e a

Texaco que resultou em um sistema controlado por computador instalado na refinaria do porto

Arthur, no Texas, em 1959.

Em meados de 1970, com trabalhos como os de K. Åström (Åström, 1970), a viabilidade do

controle digital em aplicações industriais foi estabelecida.

L. Zadeh, em 1965 (Zadeh, 1965), introduziu a idéia de conjuntos nebulosos, que são uma

forma de representar o conhecimento como uma generalização da teoria de conjuntos. De acordo com

a lógica nebulosa, uma variável pode pertencer a um número qualquer de conjuntos em diferentes

níveis de pertinência. A primeira aplicação industrial de um sistema Fuzzy foi em um forno rotativo

para cimento, construído na Dinamarca e inaugurado em 1975.

Inicialmente, apesar dos sistemas baseados em lógica fuzzy serem ignorados nos Estados

Unidos da América, no Japão foram recebidos com interesse. A companhia Hitachi apresentou

simulações que demonstravam a superioridade de sistemas de controle fuzzy quando aplicadas no

metro de Sendai, em 1985 (Schwartz e Klir, 1992).

Um outro evento em 1987 ajudou a impulsionar o interesse em sistemas fuzzy. Durante o

encontro internacional de pesquisadores fuzzy, em Tóquio, Takeshi Yamakawa demonstrou como um

conjunto de regras simples controla um experimento com um pêndulo invertido. Yamakawa

organizou o seu próprio laboratório de sistemas fuzzy para explorar as suas patentes na área (Schwartz

e Klir, 1992).

Nos anos que se seguiram, surgiu no Japão um interesse crescente por sistemas baseados em

lógica fuzzy. Em 1988 foi criado o Laboratório Internacional de Engenharia Fuzzy, uma coligação

entre 48 indústrias (Berardinis, 1992).

Atualmente, a lógica fuzzy possui aplicações nas mais variadas áreas, como por exemplo,

avaliações por questionários, medidas de incerteza, inteligência artificial, tomada de decisão,

processamento de imagens, otimização, reconhecimento de padrões, entre outras. Em aplicações

industriais existem produtos desde lavadoras de roupas (Sansung e AEG) até câmeras digitais

(Olympus e Sony), impressoras (Ricoh) e sistemas de ar condicionado (Brastemp) (Dubois e Prade,

1980).

3.1.1 Controle Fuzzy A lógica nebulosa, quando aplicada a algoritmos de controle, permite formular controladores

baseados na representação do conhecimento humano em uma base de regras. Isso torna o controle

fuzzy conceitualmente diferente do controle convencional que depende de uma síntese analítica.

Page 79: RICARDO ARTIGAS LANGER

62

Entende-se por FLC (Fuzzy Logic Controller) uma lei de controle descrita na forma de uma

base de conhecimentos consistindo em regras do tipo SE <condição> ENTÂO <ação> com

predicados vagos e um sistema de inferência fuzzy (Yager e Filev, 1994).

A base de dados é a parte principal do FLC. É um conjunto de informações que relacionam as

entradas e as saídas do controlador. Por exemplo, seja um FLC aplicado para controlar a trajetória de

um robô móvel. Se o robô estiver muito longe do destino, este deve utilizar uma velocidade alta. Na

medida que o robô se aproxima do ponto de destino, a sua velocidade deve ser reduzida e as correções

em sua direção devem tornar-se cada vez mais agressivas. Neste exemplo nota-se que são usados

termos lingüísticos para definir os possíveis estados das variáveis consideradas como, por exemplo,

menor, alto e positivo.

Dessa forma, através de um conjunto de variáveis codificadas lingüisticamente e de uma base

de dados determinada a priori, pode-se entender o funcionamento de um controlador fuzzy. Para

colocá lo em prática precisa-se ainda ponderar numericamente os termos lingüísticos e escolher um

método de defuzzyficação. A Figura 39 ilustra um diagrama de um FLC.

Figura 39 Diagrama em blocos básico de um FLC. Fonte: (Shaw et al., 1999).

Os valores discretos (não fuzzy) das variáveis de entrada geralmente são provenientes de

sensores das grandezas físicas ou de dispositivos de entrada computadorizados. A interface de

fuzzificação usa funções de pertinência contidas na base de conhecimento, convertendo sinais de

entrada em um intervalo predeterminado, denominado universo de discurso, que pode estar associado

a rótulos lingüísticos (Nguyen e Walker, 2000). Uma função de pertinência é uma função, gráfica ou

tabulada, que atribui valores de pertinência fuzzy para valores discretos de uma variável, em seu

universo de discurso.

A defuzzificação consiste em se obter um único valor discreto utilizável numa ação de controle

concreta no mundo real, a partir de valores fuzzy de saída obtidos com as funções de pertinência.

Page 80: RICARDO ARTIGAS LANGER

63

Neste trabalho, o controle fuzzy será usado para controlar a trajetória de aproximação e

estacionamento do robô móvel. Uma vantagem do controlador fuzzy reside no fato deste prescindir da

modelagem dinâmica do robô, requerendo apenas que os comandos de controle, obtidos com base na

experiência heurística do operador humano, sejam expressos em variáveis lingüísticas e regras de

produção do tipo: Se {condução 1} e {condição 2}então {ações}.

Detalhes sobre lógica fuzzy podem ser encontrados na literatura, como por exemplo em Mendel

(1995). Uma coletânea de aplicações industriais bem como a revisão do estado da arte em controle

fuzzy pode ser encontrada em Feng (2006). Neste mesmo artigo são discutidos detalhes de projeto e

análise da estabilidade de modelos fuzzy tipo Takagi Sugeno. No caso de controle de robôs móveis

utilizando lógica fuzzy, alguns exemplos são descritos a seguir:

Um sistema para realizar o planejamento e controle da trajetória de um robô móvel autônomo,

usando programação evolutiva e lógica fuzzy, é descrito em Martínez Alfaro e Gómez García (1998).

A programação evolutiva é utilizada para obter uma trajetória livre de colisões. Um controlador

baseado em lógica fuzzy é utilizado para percorrer a trajetória planejada e evitar colisões com

obstáculos móveis no ambiente. Experimentos em tempo real são apresentados com o robô NOMAD

200.

Em Howard et al. (2001) é apresentada uma técnica para auxiliar a navegação de robôs móveis

em ambiente externo, baseada no mapeamento do conhecimento de um operador humano, que usa a

informação adquirida on line do terreno. A metodologia usa uma estrutura fuzzy e algoritmos de

imagem para analisar o terreno e produzir trajetórias viáveis através de um comportamento reativo.

CHANG e LI (2002) exploram controladores fuzzy para produzir manobras complexas em

robôs móveis. Neste artigo são descritos dois controladores utilizados para realizar o estacionamento

paralelo de um robô móvel que mimetiza um automóvel em miniatura (CTMR

Car Type Mobile

Robot). Um controlador para realizar o estacionamento com o robô aproximando-se pela frente e

outro para o robô aproximando-se em marcha ré. Um experimento em tempo real comprova ser

factível. A arquitetura de hardware e do controlador também são apresentadas neste trabalho.

Em Zavlangas e Tzafestas (2003) um sistema para controlar a trajetória de um robô

omnidirecional usando lógica fuzzy é descrito. O controlador fuzzy combina a repulsão dos obstáculos

próximos ao robô à atração da posição de destino, de uma forma semelhante à metodologia de

campos potenciais artificiais. Os autores afirmam que o sistema pode ser facilmente sintonizado e

aplicado em sistemas reais com obstáculos móveis. Experimentos em simulação são também

apresentados.

Em Mucientes et al. (2003) é descrito um controlador de velocidade baseado em lógica fuzzy

para o robô móvel NOMAD 200. O projeto do controlador é separado em dois blocos, controle de

velocidade angular e linear. O modelo do robô é representado através de um conjunto de regras fuzzy

chamado de regras temporais fuzzy . Os autores objetivam, através da metodologia exposta, obter

trajetórias suaves e aumentar a velocidade média do robô quando comparado experimentos anteriores.

Page 81: RICARDO ARTIGAS LANGER

64

Um método baseado em lógica fuzzy é também apresentado em Cuesta et al. (2003) para

processar a informação sensorial sobre um ambiente e combinar os comportamentos reativos e

deliberativos de um robô móvel. Este método é capaz de tratar incertezas e imprecisões e levar em

consideração as restrições não holonômicas. Experimentos em tempo real são também apresentados

no controle do veículo autônomo ROMEO 3R.

Em Antonelli et al. (2007) é proposta uma abordagem baseada em regras de inferência fuzzy

que mimetizam o comportamento humano ao dirigir um automóvel. A entrada do sistema fuzzy é a

representação da próxima curva que o veículo deve executar e as saídas são as velocidades linear e

angular do veículo. Este controlador fuzzy é aplicado sobre um controlador dinâmico que, executando

em um laço de controle mais rápido, imprime efetivamente as velocidades no robô.

Lin Cai (2007) aplica uma metodologia baseada em lógica fuzzy para controlar a trajetória de

um robô móvel que mimetiza em escala um veículo automotor convencional. O sistema de controle é

composto por dois controladores fuzzy em paralelo, um com comportamento feedback e outro

feedfoward. Um algoritmo genético é utilizado com sucesso para sintonizar os parâmetros dos

controladores. Neste artigo, os autores comparam o desempenho do controlador com um controlador

PD (Proporcional Derivativo) convencional, enfatizando o melhor desempenho do controlador fuzzy

quando a distúrbios na trajetória e variações no modelo.

Para este trabalho, objetiva-se nas seções seguintes desenvolver um sistema de controle de

trajetórias baseado em lógica fuzzy similar aos apresentados em Gomide e Rodrigues (1994), Vaneck

(1997) e Sandi et al. (1998). São utilizados esboços em papel para visualizar os caminhos que o robô

deve seguir para atingir os objetivos da mesma forma que em Vaneck (1997) e Sandi et al. (1998).

Através destes esboços são definidas as regras do controlador.

Este capítulo está estruturado da seguinte forma:

Na seção 3.2 é apresentado o problema do estacionamento do robô e a motivação que levou a

escolha de um controlador baseado em lógica fuzzy. Na seção 3.3 é descrito o controlador baseado

em lógica fuzzy implementado. A formulação de um controlador PID será apresentada na seção 3.4

com a finalidade de comparar o seu desempenho com o controlador fuzzy. Na seção 3.5 são

apresentados os resultados de simulações comparando o controlador PID com o controlador fuzzy.

Também é apresentada a modelagem matemática do robô usada no simulador juntamente com alguns

aspectos da arquitetura do programa de simulação. As conclusões e considerações finais são

apresentadas na seção 3.6 .

Page 82: RICARDO ARTIGAS LANGER

65

3.2 Motivação

A escolha por um controlador baseado em lógica fuzzy para o controle da trajetória de robôs

móveis é vantajosa principalmente pelo fato do mesmo permitir, baseado na experiência heurística do

operador humano, a tomada de decisões complexas. Esta característica, inerente à lógica fuzzy,

permite que o controlador estacione o robô com uma determinada orientação.

De acordo com a equação (1.1), três são as variáveis que devem ser controladas: posição sobre

o eixo X, posição sobre o eixo Y e orientação. A orientação do robô é o ângulo que este faz com o

eixo X, chamado de ângulo . A Figura 40(a) mostra uma representação do robô na posição X= 10,

Y= 10 e = 90°.

A configuração diferencial deste robô permite que suas rodas traseiras o impulsionem sempre

no sentido de . Assim sendo, por exemplo, com uma orientação de = 90° é impossível para este

alterar a sua posição em X, necessitando primeiramente alterar a sua orientação. Para isto o

controlador deve imprimir no robô sinais diferentes em cada um dos motores.

Figura 40 Exemplos de trajetórias conseguidas com um controlador linear e baseado em lógica fuzzy.

Um controlador PID pode produzir uma trajetória que leve o robô até o ponto de destino em X

= 10 e Y = 10, como mostra na Figura 40(b), mas para que este atinja o ponto de destino com uma

determinada orientação é necessário um controlador capaz de tomar decisões ao longo do percurso,

Page 83: RICARDO ARTIGAS LANGER

66

gerando trajetórias compostas por manobras que não apenas dirigem-se diretamente para o ponto de

destino. A Figura 40(c) mostra como um controlador fuzzy pode estacionar o robô com uma

determinada orientação no ponto de destino.

3.3 Descrição do Controlador

Para controlar um robô móvel não holonômico usando a realimentação de informação visual,

de acordo com o esquema apresentado na Figura 4 apresentada no Capítulo 1, várias etapas são

usadas para fechar a malha de controle.

O propósito do controlador é garantir que a resposta na saída seja o mais próximo possível do

sinal de entrada, denominado set point. A referência, ou setpoint do controle de trajetórias é dada

pelos algoritmos de planejamento de trajetórias, abordados no capítulo anterior. Assim sendo, um

algoritmo amostra a trajetória planejada e gera a referência instantânea que deve ser atingida pelo

robô. O sensor que mede as saídas do sistema é uma câmera, sendo que as imagens capturadas por

esta devem ser convertidas em valores numéricos antes de serem aproveitadas pelo controlador. Um

processo de desacoplamento das variáveis de entrada também é usado para facilitar a sintonia do

controlador. Esta sintonia, por ser baseada na experiência do operador, deve ser o mais intuitiva

possível. Devido a arquitetura implementada, uma transformação de coordenadas também é

necessária para controlar a trajetória de estacionamento do robô.

O diagrama do sistema realimentado utilizando o controlador fuzzy está ilustrado na Figura 41.

Figura 41 Diagrama em blocos do sistema realimentado com controle fuzzy.

3.3.1 Posição de Destino É a postura final desejada pelo usuário para o robô em termos de posição sobre os eixos X e Y e

a sua orientação. O termo postura é utilizado aqui para descrever a tripla [X(k), Y(k), (k)]. Neste

trabalho, apenas o controlador baseado em lógica fuzzy é capaz de considerar a orientação final.

Page 84: RICARDO ARTIGAS LANGER

67

Considerando que o tempo computacional de planejar a trajetória não seja significativo quando

comparado com o intervalo de amostragem, esta postura pode ser alterada durante a movimentação do

robô.

3.3.2 Planejamento da Trajetória Neste passo a trajetória global é determinada segundo os algoritmos abordados no capítulo

anterior. Para este capítulo é utilizado o método K Bug, pois este mostrou-se o mais rápido dos

métodos abordados e pretende-se planejar a trajetória de forma online, isto é, dentro do intervalo de

amostragem.

3.3.3 Cálculo dos Erros A Figura 42 mostra o processo do cálculo dos erros.

Figura 42 Cálculo dos erros de controle.

Os erros nos eixos X (EX) e Y (EY) são a diferença aritmética entre a posição atual do robô e o

ponto de destino. Também é utilizado neste trabalho o parâmetro de erro linear (El), definido em

(3.1). O erro de orientação, ou erro angular, é a diferença instantânea entre o ângulo da reta que une o

robô ao ponto de destino e a orientação atual do robô.

22YXL EEE

(3.1)

3.3.4 Amostragem da Trajetória Após a trajetória ser planejada, tem-se um conjunto ordenado de pontos, denominados aqui de

waypoints, que o robô deve atingir. Independente do controlador a ser usado, este conjunto de

waypoints deve ser transformado em um conjunto de referências, de forma que os erros possam ser

devidamente calculados.

Seja a Figura 43(a) onde o robô encontra-se na origem. A trajetória foi planejada utilizando o

algoritmo K Bug e está desenhada em amarelo. Os pontos destacados por números são os waypoints

que o robô deve atingir de forma a evitar os obstáculos segundo o planejamento. Considerando um

modelo para os motores do robô com uma constante de tempo maior que dez vezes o intervalo de

amostragem, se a cada instante de amostragem for enviado para o controlador um novo waypoint, a

referência de trajetória atinge o ponto de destino antes mesmo do robô iniciar o movimento, conforme

Page 85: RICARDO ARTIGAS LANGER

68

mostrado na Figura 43 (b). Nesta figura está ilustrada o setpoint de velocidade linear, em vermelho e

a velocidade linear do robô, em verde. Este experimento é apenas qualitativo e como ainda não foram

definidos os parâmetros do robô ou do controlador é usada uma unidade adimensional para a escala

de tempo (unidade de tempo

ut). Para a escala das ordenadas também é utilizada uma unidade

adimensional de velocidade como sendo uma unidade de comprimento por unidade de tempo.

(a) (b)

Figura 43 Referências de trajetória.

Assim sendo, é necessário interpolar a trajetória planejada de forma que seja possível que o

robô a acompanhe. Para isso, a distância euclidiana entre um waypoint e o próximo é dividida de tal

forma que a cada instante de amostragem um novo ponto é apresentado e a taxa do deslocamento do

setpoint esteja de acordo com uma velocidade predefinida. Dessa forma pode-se especificar também

uma referência de velocidade para que o robô realize a trajetória.

A Figura 44(a) mostra uma trajetória percorrida com sucesso. Neste caso, ao invés da

referência demorar 0.5 ut para atingir o destino, são necessárias 36 ut.

(a) (b)

Figura 44 Trajetória interpolada.

Page 86: RICARDO ARTIGAS LANGER

69

Pode-se ver na Figura 44(b) que a velocidade linear consegue acompanhar tal referência. Nesta

figura está ilustrado, em preto, o erro linear, definido como a soma dos quadrados dos erros em X e Y

e a velocidade linear do robô, em verde, que é a velocidade do sentido da sua orientação.

Nas primeiras oito ut da simulação percebe-se um valor maior do erro linear, isso se deve à

orientação inicial do robô. Como o controlador privilegia a correção do erro angular, a referência

percorre a trajetória planejada se afastando do robô e causando um aumento no erro linear.

Com a interpolação, o controlador recebe indiretamente uma referência de velocidade. Com o

intuito de remover a influência desta referência e permitir que o controlador dirija o robô o mais

rápido o possível, uma outra forma de interpolação pode ser utilizada.

Sejam os 5 waypoints apresentados na Figura 43(a). No próximo experimento, a condição que

comuta a referência de um waypoint para o próximo não mais está vinculada à passagem do tempo, e

sim com a posição instantânea do robô. A Figura 45(a) mostra a mesma trajetória percorrida com o

novo critério de comutação.

(a) (b)

Figura 45 Trajetória interpolada, referências comutadas por proximidade.

Este critério considera a reta bissetriz traçada sobre os segmentos de reta que conectam cada

waypoint. Quando a distância entre o robô e a reta bissetriz é menor que o comprimento do próprio

robô o waypoint é comutado. O cálculo da distância entre um ponto e uma reta está definido na

equação (2.10). Assim, quando o robô se aproxima do waypoint atual, a referência é comutada para o

próximo, causando os degraus na amplitude do erro linear mostrados na Figura 45(b). Neste caso a

trajetória é percorrida em aproximadamente 18 ut devido a um comportamento mais agressivo do

controlador.

3.3.5 Controlador Um controlador baseado em lógica fuzzy proposto a seguir é semelhante ao descrito por Sandi

et al.(1998). O objetivo do controlador é similar: aproximar o robô do ponto de destino com este

voltado sempre para a direção 90o.

Page 87: RICARDO ARTIGAS LANGER

70

O controlador descrito neste trabalho, apesar de utilizar o mesmo princípio que o controlador

descrito em Sandi et al. (1998), possui uma base de regras diferente. As considerações feitas para

projetar esta nova base de regras são as seguintes:

as entradas do controlador são os erros em X, Y e orientação;

as saídas do controlador são as velocidades linear e angular;

existe uma região chamada longe , onde o robô trafega diretamente para o destino;

existe uma região chamada perto , onde o robô manobra corrigindo a orientação e

realiza a aproximação em baixa velocidade para o destino;

existe uma região chamada zero , onde o robô estaciona;

os erros grandes de orientação são corrigidos com ações de controle agressivas e

baixas velocidades lineares.

O conjunto de termos lingüísticos usado para definir as tabelas associativas fuzzy é apresentado

a seguir:

O erro de orientação (E ) é classificado como:

grande e negativo (GN);

médio e negativo (MN);

pequeno e negativo (PN);

zero (Z);

pequeno e positivo (PP);

médio e positivo (MP);

grande e positivo (GP).

Tanto o erro em X (EX) quanto o erro em Y (EY) podem assumir a classificação:

longe e negativo (LN);

perto e negativo (PN);

zero (Z);

perto e positivo (PP);

longe e positivos (LP).

Considerando que o robô não deve mover-se para trás, o sinal de controle para a velocidade

linear é classificado como:

rápido (R);

lento (L);

zero (Z).

O sinal de controle referente à velocidade angular é classificado segundo os termos:

rápido e negativo (RN)

lento e negativo (LN);

zero (Z);

Page 88: RICARDO ARTIGAS LANGER

71

lento e positivo (LP);

rápido e positivo (RP).

A Figura 46 apresenta uma ilustração das regiões consideradas para gerar a base de dados

fuzzy. A orientação do robô durante o estacionamento é feita em termos de X e Y. O controlador deve

aproximar o robô do seu destino sempre com uma orientação igual a 90º, isto é, sempre através de

posições com erro em Y positivos. Para isso, sempre que o robô se aproxima pelos quadrantes em que

o erro em Y é positivo, ao passar da região longe para a região perto, são gerados sinais de controle

que levam o robô a navegar conservando um erro médio de orientação. Ao atingir a condição de erro

zero em X e erro perto em Y o robô corrige rapidamente o erro restante de orientação e estaciona

sempre virado para a direção 90o.

Caso o robô esteja se aproximando por uma região onde o erro em Y é negativo, ao cruzar da

área longe para a área perto ele novamente mantém um erro médio de orientação, mas desta vez

contorna a região perto até passar para uma condição de erro em Y perto e positivo. Então os

procedimentos normais de aproximação e manobra encarregam-se de o estacionar.

O conjunto completo das tabelas associativas fuzzy são apresentadas nas tabelas 4(a), 4(b), 4(c),

4(d), 4(e), 4(f), 4(g), 4(h), 4(i) e 4(j).

Figura 46 Erros para o controlador fuzzy.

Page 89: RICARDO ARTIGAS LANGER

72

Tabela 4 Tabelas associativas do controlador fuzzy.

(a)

Saída: velocidade angular EY = LP

Ex

E

LN PN Z PP LP

GN RN RN RN RN RN MN RN RN RN RN RN PN LN LN LN LN LN Z Z Z Z Z Z PP LP LP LP LP LP MP RP RP RP RP RP GP RP RP RP RP RP

(b)

Saída: velocidade angular EY = PP

Ex

E

LN PN Z PP LP

GN RN RN RN RN RN MN RN LN RN RN RN PN LN LP LN RN LN Z Z RP Z RN Z PP LP RP LP LN LP MP RP RP RP LP RP GP RP RP RP RP RP

(c)

Saída: velocidade angular EY = Z

Ex

E

LN PN Z PP LP

GN RN RN Z RN RN MN RN LN Z RN RN PN LN Z Z RN LN Z Z RP Z RN Z PP LP RP Z Z LP MP RP RP Z LP RP GP RP RP Z RP RP

(d)

Saída: velocidade angular EY = PN

Ex

E

LN PN Z PP LP

GN RN LN LN RN RN MN RN LN Z RN RN PN LN Z LP RN LN Z Z LP LP LN Z PP LP RP LN Z LP MP RP RP Z LP RP GP RP RP LP LP RP

(e)

Saída: velocidade angular EY = LN

Ex

E

LN PN Z PP LP

GN RN RN RN RN RN MN RN RN LN RN RN PN LN LN Z LN LN Z Z Z LP Z Z PP LP LP Z LP LP MP RP RP LP RP RP GP RP RP RP RP RP

(f)

Saída: velocidade linear EY = LP

Ex

E

LN PN Z PP LP

GN Z Z Z Z Z MN L L L L L PN R R R R R Z R R R R R PP R R R R R MP L L L L L GP Z Z Z Z Z

(g)

Saída: velocidade linear EY = PP

Ex

E

LN PN Z PP LP

GN Z Z Z Z Z MN L L Z Z L PN R L Z L R Z R L L L R PP R L Z L R MP L Z Z L L GP Z Z Z Z Z

(h)

Saída: velocidade linear EY = Z

Ex

E

LN PN Z PP LP

GN Z L Z L Z MN L L Z L L PN R L Z L R Z R L Z L R PP R L Z L R MP L L Z L L GP Z L Z L Z

(i)

Saída: velocidade linear EY = PN

Ex

E

LN PN Z PP LP

GN Z R L Z Z MN L R R L L PN R L L L R Z R L Z L R PP R L L L R MP L L R R L GP Z Z L R Z

(j)

Saída: velocidade linear EY = LN

Ex

E

LN PN Z PP LP

GN Z Z Z Z Z MN L L L L L PN R R R R R Z R R R R R PP R R R R R MP L L L L L GP Z Z Z Z Z

O grau de pertinência de cada uma das variáveis do sistema dentre as classificações lingüísticas

é definido por um conjunto de funções de pertinência. Cada uma das variáveis de entrada é verificada

quanto a sua pertinência em cada uma das funções de pertinência de entrada. Se o robô estiver na

região longe , a sua pertinência nesta região é maior. Já se o robô estiver próximo da linha limite

Page 90: RICARDO ARTIGAS LANGER

73

entre as regiões longe e perto , este possuirá um nível de pertinência em ambas as funções. Assim,

para cada combinação dos valores das variáveis X, Y e ângulo são determinadas as respectivas

pertinências. Dessa forma, existirá um conjunto de pertinências com valores diferentes de zero para

cada variável de entrada, estas são as pertinências ditas ativadas para os dados valores das variáveis

de entrada.

Para combinar as diversas pertinências utilizou-se o processo de fuzzificação chamado máximo

dos mínimos (Mamdani e Assilian, 1975), como mostra a Figura 47. De cada conjunto de valores de

pertinência das variáveis de entrada é selecionado apenas o menor valor. Com esses valores mínimos

são encontrados os máximos valores nas funções de pertinência das variáveis de saída.

Ri: se x1 é Ai,1 e ... xm é Ai,m então y é Ci

Figura 47 Processo de fuzzificação.

De acordo com as funções que estão ativadas, usa-se a tabela de memórias associativas fuzzy

para descobrir quais as funções de saída que estarão ativadas. Por exemplo, se o robô encontrar-se nas

pertinências longe para X e Y e zero para o erro angular serão ativadas as pertinências zero para

a velocidade angular e rápido para a velocidade linear. Em qualquer caso, o valor da função de

pertinência de saída será igual ao menor valor das funções de pertinências das variáveis de entrada

que ativaram a função de saída (valor mínimo). Pode também acontecer que mais de uma pertinência

seja ativada para a mesma variável de saída. Neste caso serão usados os valores máximos das funções

de pertinência de saída que forem concorrentes.

Os erros em X e em Y possuem exatamente o mesmo conjunto de funções de pertinência

apresentado na Figura 48. Na Figura 49 estão as funções de pertinência para o erro de orientação.

Finalmente, na Figura 50 e na Figura 54 estão, respectivamente, as funções de pertinência para as

saídas do controlador que são os sinais de velocidade angular e linear.

Page 91: RICARDO ARTIGAS LANGER

74

Figura 48 Funções de pertinência para os erros em X e em Y.

Para o processo de defuzzificação, que é o procedimento de quantificar numericamente os

valores das pertinências de saída, utilizou-se o centróide ou centro de gravidade (COG) (Mamdani e

Assilian, 1975).

Figura 49 Funções de pertinência para o erro de orientação.

Figura 50 Funções de pertinência para a velocidade angular.

Page 92: RICARDO ARTIGAS LANGER

75

Figura 51 Funções de pertinência para a velocidade linear.

3.3.6 Transformação de Coordenadas Para que o robô estacione com uma orientação controlada, primeiramente a base de regras do

controlador foi implementada para aproximar o robô do ponto de destino sempre orientado para a

direção 90o. Em seguida, uma matriz de transformação homogênea é utilizada de forma a

figurativamente enganar o controlador , rotacionando a posição do robô ao redor do ponto de

destino, em função da orientação desejada, antes dos erros serem calculados. A matriz de

transformação utilizada pode ser vista na equação (3.2). Dessa forma, para todos os fins, o

controlador apenas controla a aproximação do robô em um ângulo de 90º, mas como todo o sistema

de coordenadas está rotacionado, o robô acaba estacionando no ângulo determinado.

YXrotacionarapontosinYXorotacionadponto ,

100

0cos

0sencos

,

(3.2)

onde é o ângulo em que se deseja estacionar o robô.

3.3.7 Transformação dos Sinais de Controle Para controlar as três variáveis descritas na seção anterior, o sistema, que é um robô diferencial,

aceita como entrada os sinais para cada um dos seus dois motores. Apesar da configuração do

controlador poder ser realizada com o modelo dado pela equação (1.1), para facilitar o trabalho de

elaboração das funções de pertinência e tabelas de inferência, o modelo considerado é alterado, de

forma a torná lo mais amigável ao projetista.

De forma a desacoplar as variáveis de entrada da equação (1.1), sem perda de poder de

modelagem, e adicionando informações sobre a geometria do robô, pode-se utilizar a equação (3.3).

Esta equação determina quais os valores dos sinais dos motores (Vr e Vl) são necessários para que o

robô atinja uma determinada velocidade linear e angular em regime permanente. Entende-se por

Page 93: RICARDO ARTIGAS LANGER

76

velocidade linear a derivada da distância euclidiana percorrida pelo robô, realizada obrigatoriamente

no sentido da sua orientação, e a velocidade angular, aquela que influi unicamente em sua orientação.

)(

)(1

11

)(

)(

tQ

tQ

KR

K

KR

KrtV

tV L

rr

ll

r

l

(3.3)

sendo:

QL(t) : velocidade linear em regime permanente [ m/s ];

Q (t) : velocidade angular do robô [ rad/s ].

Assim sendo, a equação (1.1) é modificada pela equação (3.3) de tornando as entradas do

modelo do robô a sua velocidade linear e angular desejadas em regime permanente, resultando na

equação (3.4).

)(),()(),(),( tQtQHttYtX L

(3.4)

onde:

H : função que descreve o comportamento do robô com relação às entradas de

velocidade angular e linear.

O projeto da base de regras do controlador baseado em lógica fuzzy é mais intuitivo quando são

consideradas as velocidades ao invés dos sinais elétricos como entradas do modelo.

3.3.7.1 Aumento da Ponderação sobre a Correção do Erro Angular Considerando a estrutura de controle apresentada na sub-seção anterior, o controlador envia

para o sistema sinais referentes a velocidades angular e linear, que depois são convertidas em sinais

de tensão elétrica para que estes possam comandar os motores. Em sistemas reais, existem limitações

físicas sobre estes sinais elétricos. Assim sendo, existem algumas combinações de valores de

velocidade angular e linear que saturam os sinais elétricos em ambos os motores. Caso ambos os

motores sejam saturados com valores de mesmo sentido, isto é, ambos negativos ou ambos positivos,

a informação sobre a velocidade angular que deve ser impressa no robô é ignorada. Caso os motores

do robô sejam saturados com sinais de sentidos opostos, este gira sobre o seu eixo. Esta segunda

situação não é tão prejudicial quanto a primeira, pois ao girar o robô corrige o erro na sua orientação

cessando com a causa da saturação dos motores, sobrando somente a correção dos erros lineares.

Assim sendo, é inserida nas saídas dos controladores uma restrição que aumenta a ponderação

sobre a correção do erro angular. Tal ponderação é implementada obrigando que a informação sobre a

velocidade angular esteja sempre presente no sinal que é enviado aos motores. Como a velocidade

angular do robô é proporcional a diferença dos sinais dos motores, basta conservar esta diferença e

em seguida inserir a informação sobre a velocidade linear, que é a média entre os sinais dos motores.

Page 94: RICARDO ARTIGAS LANGER

77

Seja o seguinte exemplo: caso o controlador imprima os valores de 12V e 15V para os motores

esquerdo e direito respectivamente, e o valor máximo esteja limitado em 10V, o que será

efetivamente aplicado é 7V e 10V. A equação (3.5) descreve como esse processo é implementado.

111

11111

111

11111

11

111

11111

111

11111

11

22

,

,)(

,

)(,

02

,

,)(

,

)(,

02

],[

rlMÁXr

MÁXrlMÁXMÁXrrl

rlMÁXl

rlMÁXMÁXMÁXlrl

rl

rlMÁXr

MÁXrlMÁXMÁXrrl

rlMÁXl

rlMÁXMÁXMÁXlrl

rl

rl

VVVVse

VVVVVVseVVse

VVVVse

VVVVVVseVVse

VVse

VVVVse

VVVVVVseVVse

VVVVse

VVVVVVseVVse

VVse

VV

(3.5)

considerando:

Vl1 : valor calculado pelo controlador para o motor esquerdo [ Volts ];

Vr1 : valor calculado pelo controlador para o motor direito [ Volts ];

Vl2 : valor que será efetivamente enviado para o motor esquerdo [ Volts ];

Vr2 : valor que será efetivamente enviado para o motor direito [ Volts ];

VMÀX : tensão máxima suportada pelos motores [ Volts ].

3.3.8 Sistema É o sistema, real ou simulado, a ser controlado, composto por um robô móvel não holonômico

que comporta-se de forma igual ou semelhante a equação (1.6).

Na implementação prática, assim que os sinais de controle são calculados pelo controlador, a

equação (3.3) é aplicada, convertendo os sinais referentes às velocidades para as tensões elétricas que

devem ser enviadas aos motores.

3.3.9 Reconhecimento de imagens São algoritmos que identificam o robô e o separam do ambiente, resultando em sua posição

global instantânea sobre os eixos X e Y e a sua orientação instantânea. Este tópico será abordado com

mais detalhes no Capítulo 5 que descreve o funcionamento do sistema em tempo real.

3.3.10 Câmera Uma câmera CCD aérea, montada acima do ambiente, provê uma imagem a cada 33ms

contendo tanto os obstáculos quanto o robô durante a sua navegação. Esse é o sensor que amostra a

posição do robô. No presente trabalho, nenhuma outra forma de medição, tais como, odometria e

sistemas de medição inerciais, é utilizada.

Page 95: RICARDO ARTIGAS LANGER

78

3.4 Formulação de um Controlador PID para Comparação com o Controlador Fuzzy

Para avaliar o desempenho do controlador fuzzy e ter um ponto de comparação, um controlador

PID é utilizado. Sabe-se que o PID não é capaz de controlar o ângulo de aproximação do robô sem

um planejamento realizado a priori, pois para isto são necessárias ações de controle não lineares.

Entretanto, o controle PID representa um ponto de partida para avaliar o controlador fuzzy frente a

uma metodologia clássica de controle.

Partindo da equação (3.4), que descreve o modelo sistema, uma nova alteração foi

implementada. Da mesma forma que as entradas do modelo foram alteradas para refletirem os

setpoints de velocidade linear e angular do robô, um processo similar será aplicado as suas entradas,

levando em consideração a geometria do mesmo. O processo de cálculo dos erros para o controlador

PID será em função das variáveis de erro linear e erro angular. O erro angular será calculado da

mesma forma que para o controle fuzzy, mas o erro linear irá incorporar os erros X e Y em uma mesma

variável, refletindo o quanto o robô está longe do ponto de destino. Com base nas variáveis da Figura

42, a equação (3.6) descreve o processo do cálculo do erro linear (EL).

90

9022

22

EseEE

EseEEE

YX

YXL

(3.6)

Deste modo tem-se um modelo com duas entradas e duas saídas independentes, sendo possível

projetar dois controladores PID SISO (Single Input Single Output) paralelos para controlar o robô, o

que é mais simples do que implementar um controlador MIMO (Multiple Input Multiple Output).

Um controlando a velocidade linear em função do erro linear e outro controlando a velocidade

angular em função do erro angular. Os equivalentes discretos dos controladores são mostrados nas

equações (3.7) e (3.8) a seguir, onde os ganhos Kpl, , Kil, e Kdl, ponderam as parcelas proporcionais,

integrais e derivativas dos erros linear e angular (Ogata, 2004).

tiEKit

kEkEKdkEKpkQ

k

iLl

LLlLlL

0

)()1()(

)()( (3.7)

tiEKit

kEkEKdkEKpkQ

k

i 0

)()1()(

)()(

(3.8)

Onde:

QL : velocidade linear [ m/s ];

Q

: velocidade angular do robô [ rad/s ];

EL : erro linear [ m ];

E

: erro angular [ rad ];

t : intervalo de amostragem [ s ];

Page 96: RICARDO ARTIGAS LANGER

79

k : tempo discreto.

O diagrama do sistema de controle PID está ilustrado na Figura 52.

Figura 52 Diagrama em blocos do sistema realimentado utilizando controle PID.

3.5 Resultados em Simulação

Para formulação e sintonia dos controladores apresentados, tanto no caso do controlador PID

quanto no controlador baseado em lógica fuzzy, é necessário apenas uma modelagem conceitual do

modelo do robô, sendo suficiente a equação (3.4). Um processo empírico pode ser empregado para

sintonizar os controladores confiando apenas na experiência do operador. Entretanto, para a

codificação de um programa de simulação, faz-se necessário um equacionamento mais detalhado do

sistema a ser simulado. A equação (1.6) é suficiente para elaborar um modelo computacional

adequado para testar os controladores, uma vez que inclui tanto a informação cinemática quanto

dinâmica do robô.

3.5.1 A Interface de Simulação Através dos modelos matemáticos do robô, pode-se criar uma interface que possibilite testar os

controladores sob diferentes condições de ambiente e dinâmica do robô. Esta interface é constituída

de uma representação do robô em um ambiente com obstáculos e disponibiliza para o usuário as

opções de customizar os controladores, modelos, obstáculos, algoritmos de planejamento de trajetória

e pontos de origem e destino. Toda a programação está implementada em LabVIEWTM da National

Instruments. A Figura 53 mostra o painel frontal do aplicativo.

Para a configuração do controlador fuzzy um outro ambiente faz-se necessário, estando este

incorporado ao simulador. Neste ambiente o usuário deve definir os termos lingüísticos necessários,

Page 97: RICARDO ARTIGAS LANGER

80

configurar as tabelas com as memórias associativas fuzzy, as funções de pertinência e testar o

controlador.

Figura 53 Painel frontal do simulador.

A Figura 54 mostra as funções de pertinência fuzzy que foram implementadas no programa de

configuração do controlador e que estão disponíveis para o usuário. A Figura 55(a) mostra a janela

para inserir os termos lingüísticos. A Figura 55(b) mostra a janela para edição da tabela das memórias

associativas fuzzy. A Figura 55(c) mostra a janela para a configuração das funções de pertinência de

cada termo lingüístico e por último a Figura 55(d) mostra a janela de testes. Esta última serve para

que, a qualquer momento da simulação, os valores das funções de pertinência do FLC possam ser

analisados.

Figura 54 Funções de pertinência fuzzy. Fonte: (Nguyen e Walker, 2000).

Um computador pessoal com um processador Athon 64 de 2400MHz com 512Mb de memória

RAM é utilizado para executar todos os ensaios em simulação descritos neste capítulo. Para a

implementação dos algoritmos é utilizado o compilador LabVIEWTM. O tempo gasto no

Page 98: RICARDO ARTIGAS LANGER

81

processamento de cada instante de amostragem é desprezível quando comparado com o intervalo de

amostragem, assim, as simulações computacionais podem mimetizar a execução em tempo real.

(a) Termos lingüísticos

(b) Tabelas associativas

(c) Funções de pertinência

(d) Teste do funcionamento

Figura 55 Ambiente de configuração do controlador fuzzy.

3.5.2 Trajetórias Percorridas pelo Robô em simulação O ambiente 3 (vide Capítulo 2) é usado para validar os controladores. Em todos os casos o robô

iniciou o movimento com o ângulo inicial de 90o com relação ao eixo X. Os parâmetros utilizados

para os ensaios em simulação foram:

Para o modelo do robô, segundo a equação (1.5), adota-se:

Tr e Tl : 0,5 segundos;

Kr e Kl : 1,5 Volts x segundo;

R : 0,07 metros;

r : 0,025 metros;

comprimento do carro : 0,13 metros;

tensão elétrica máxima : 10 volts;

intervalo de amostragem : 0,1 segundos.

Para o planejamento da trajetória considerou-se:

algoritmo : K Bug;

dimensões do ambiente : 4x4 metros;

distância de offset : 0,14 metros.

Page 99: RICARDO ARTIGAS LANGER

82

3.5.2.1 Controlador PID Para o controle PID, o ângulo de estacionamento não é levado em consideração. Os parâmetros

ajustados para o controlador PID, segundo as equações (3.7) e (3.8), são apresentados na Tabela 5.

Tabela 5 Ganhos utilizados para o controlador PID em simulação.

Kp Ki Kd

Linear Kpl : 0,40 Kil : 0,02 Kdl : 0,10

Angular

Kp

: 5,00 Ki

: 0,10 Kd

: 1,00

Tais parâmetros foram determinados através de um algoritmo genético chamado de evolução

diferencial. O fitness (vide seção 2.2 ) para a evolução foi calculado de acordo com a integral do erro

entre a trajetória percorrida e planejada, mais um fator que leva em consideração o tempo gasto, de

forma que, para dois caminhos idênticos, o valor do fitness será melhor para aquele em que o robô

percorrer em menor tempo. Maiores informações sobre a evolução diferencial podem ser obtidas em

Storn e Price (1997) e Lampinen e Zelinka (2000).

Quando o critério de tempo para a comutação dos waypoints é utilizado, deve-se ajustar a

velocidade que a referência se desloca. Para este ensaio é utilizado 0,12m/s. Como o intervalo de

amostragem é fixo em 100ms, cada waypoint está afastado de 0,012m do seu antecessor, o que

garante a velocidade desejada. Dessa forma, para todos os fins, o controlador comporta-se como se

estivesse seguindo um ponto de referência móvel.

Um ponto intermediário foi inserido em X=3,5 e Y=2,3 no planejamento da trajetória com o

intuito de aumentar a sua complexidade. Como o algoritmo K Bug recursivamente insere novos

wayponts na trajetória até conseguir um caminho válido, para inserir um ponto intermediário inicia-se

a lista dos waypoints já contendo tais pontos. Dessa forma, o K Bug interpreta estes pontos já

existentes da mesma forma que os demais pontos inseridos na trajetória no decorrer do planejamento.

A Figura 56 mostra a trajetória planejada (amarelo) e percorrida (azul).

Figura 56 Trajetória percorrida e planejada para o controlador PID com comutação de waypoints por tempo.

Page 100: RICARDO ARTIGAS LANGER

83

A Figura 57 mostra a trajetória do robô em função do tempo segundo as suas coordenadas X e

Y. Em preto está o sinal de referência enviado para o controlador e em verde a posição instantânea do

robô. Através desta figura pode-se ver que o percurso é realizado pelo robô em aproximadamente 82

segundos.

Figura 57 Referências e posições instantâneas do robô para o controlador PID com comutação de waypoints por tempo.

Para quantificar a qualidade da trajetória é utilizado o critério RMS (Root Mean Square) do erro

entre a referência da trajetória e a trajetória percorrida, descrito pela equação (3.9).

M

kERMS

M

kYX

YX0

2,

,

)( (3.9)

onde

M : número de instantes de amostragem considerados no ensaio;

Para o experimento da Figura 57 o RMSX é igual a 0,1317e o RMSY é igual a 0,1031.

A Figura 58(a) mostra as referências e ângulos instantâneos do robô. A Figura 58(b) mostra os

sinais de controle gerados pelo controlador.

O desvio padrão calculado para os sinais esquerdo e direito são 4,2 e 4,0 respectivamente.

Os picos de amplitude destes sinais de ocorrem devido às curvas abruptas na trajetória

planejada. Para diminuir o esforço do controlador pode-se diminuir os valores dos ganhos

proporcionais, porém isto pode aumentar os erros no segmento da trajetória. Diminuir os valores dos

ganhos derivativos tende a diminuir a amplitude dos picos dos sinais de controle durante as curvas,

mas limita a capacidade do controlador seguir a referência ao longo do movimento. Caso, durante o

movimento, a referência afaste-se demasiadamente do robô, esta realiza as curvas antes do robô

atingir a posição correta para poder também realizá las, o que pode levar o robô a chocar-se com

algum obstáculo. Por esse motivo, velocidades de referência maiores podem causar colisões e

problemas de convergência.

Page 101: RICARDO ARTIGAS LANGER

84

Figura 58 Referências, orientações do robô e sinais de controle gerados pelo controlador PID com comutação de

waypoints por tempo.

O próximo ensaio mostra como o controlador se comporta quando o critério de distância é

utilizado para comutar os waypoints. Este critério não exige que seja ajustada uma velocidade para a

referência, pois sempre que o robô se aproxima de um waypoint a referência é comutada para o

próximo waypoint e assim sucessivamente até que seja atingido o ponto de destino.

Figura 59 Trajetória percorrida e planejada para o controlador PID com comutação de waypoints por distância.

Pode-se ver que a trajetória percorrida aproximou-se mais da trajetória planejada quando

comparada com o ensaio anterior. No ponto intermediário, onde o robô deve retornar sobre o caminho

por onde veio, como agora a referência deve aguardar o robô atingir o ponto para que então seja

comutada, a trajetória é percorrida com maior definição.

A Figura 60 mostra a evolução do robô em função do tempo segundo as suas coordenadas X e

Y. Em preto está o sinal de referência enviado para o controlador e em verde a posição instantânea do

robô. É interessante destacar que neste ensaio o percurso é realizado pelo robô em aproximadamente

Page 102: RICARDO ARTIGAS LANGER

85

43 segundos. Isto se deve ao fato do robô percorrer os segmentos na sua máxima velocidade, e não

mais com uma velocidade controlada. Para este ensaio, o RMSX é igual a 0,4152 e o RMSY é igual a

0,2831. Estes valores são maiores do que os obtidos no ensaio anterior devido a forma dos sinais de

referência. Apesar de visualmente ambos os ensaios percorreram a trajetória planejada de forma

muito similar, os degraus ocasionados pelas referências mais agressivas aumentam o valor do critério

RMS.

Figura 60 Referências e posições instantâneas do robô para o controlador PID com comutação de waypoints por distância.

A Figura 61(a) mostra as referências angulares enviadas para o controlador bem como os

ângulos resultantes. É interessante ressaltar que, mesmo com a comutação dos waypoints sendo feita

por distância, como o cálculo da referência leva em consideração a posição atual do robô, não são

observados os degraus na referência angular.

Figura 61 Referências, orientações e sinais de controle gerados pelo controlador PID com comutação de waypoints por

distância.

Page 103: RICARDO ARTIGAS LANGER

86

A Figura 61(b) mostra, a título de comparação com o ensaio anterior, os sinais de controle

gerados pelo controlador, mostrando um aumento significativo no esforço de controle. O desvio

padrão calculado para os sinais esquerdo e direito são 5,2 e 4,9, respectivamente. Além dos picos de

alta magnitude tornarem-se mais freqüentes, a derivada em função do tempo dos sinais de controle

também tornou-se de maior intensidade. Este é um exemplo clássico de um experimento onde um

maior esforço de controle corresponde a uma maior velocidade de convergência.

3.5.2.2 Controlador Baseado em Lógica Fuzzy Com um controlador fuzzy configurado de acordo com a seção 3.3 , algumas trajetórias são

testadas sem obstáculos para verificar a capacidade de estacionar o robô com uma determinada

orientação. A Figura 62 mostra estes testes considerando um ambiente sem obstáculos. Em todos os

casos, apesar de serem trajetórias de aproximação com grande complexidade, o FLC conseguiu

estacionar com a posição e orientação desejadas. Por outro lado, sua capacidade de manobrar e

estacionar quando o robô se aproxima do ponto de destino limita a capacidade de realizar o

seguimento de uma referência móvel, pois, assim que o robô se aproxima da referência, o controlador

inicia o estacionamento afastando-se da trajetória planejada.

Y

Y

X X

Figura 62 Trajetória de estacionamento com o controlador fuzzy.

A Figura 63 mostra a trajetória percorrida e planejada segundo o critério de tempo para a

comutação de waypoints, com uma velocidade da referência de 0,12m/s e um ângulo de

estacionamento de 90o.

Page 104: RICARDO ARTIGAS LANGER

87

Figura 63 Trajetória percorrida e planejada para o FLC com comutação de waypoints por tempo.

Percebe-se na Figura 63 que, imediatamente antes de todas as curvas, o controlador inicia o

procedimento de estacionamento, o que atrasa o robô. Assim sendo, quando a referência se afasta, o

robô volta a dirigir-se diretamente para a referência, abortando a manobra de estacionamento. Caso o

robô ultrapasse demasiadamente a referência, a base de regras também comanda um procedimento de

reaproximação que afasta o da trajetória planejada. Este comportamento provoca uma defasagem

entre o robô e os sinais de referência. Apesar deste fato não necessariamente aumentar o erro entre a

trajetória planejada e percorrida, mostra a limitação do controlador em seguir uma referência móvel.

A evolução do robô em função do tempo segundo as suas coordenadas X e Y está apresentada na

Figura 64. Para este ensaio, o RMSX é igual a 0,2262 e o RMSY é igual a 0,1661. A orientação

instantânea e as referências angulares estão apresentadas na A Figura 65(a).

Figura 64 Referências e posições instantâneas do robô para o FLC com comutação de waypoints por tempo.

O percurso é realizado pelo robô em aproximadamente 82 segundos, o mesmo tempo que o

controlador PID levou para percorrer a sob as mesmas condições. Isto é devido a referência de

velocidade utilizada de 0,12m/s para ambos os controladores.

Page 105: RICARDO ARTIGAS LANGER

88

A Figura 65(b) mostra, os sinais de controle gerados pelo controlador. Quando comparados

com o ensaio equivalente para o controle PID, percebe-se um aumento no esforço de controle, porem

uma diminuição nos valores máximos absolutos de sua amplitude. O desvio padrão calculado para os

sinais esquerdo e direito são 3,0 e 2,5 respectivamente.

Figura 65 Referências, orientação e sinais de controle gerados pelo FLC com comutação de waypoints por tempo.

Assim como no caso do controlador PID, quando o critério de distância é utilizado para

comutar os waypoints, a trajetória percorrida pelo robô torna-se mais fiel à trajetória planejada. A

Figura 66 mostra a trajetória percorrida e planejada assumindo este novo critério. Neste ensaio o robô

leva 114 segundos para percorrer a trajetória. O aumento do tempo com relação ao ensaio anterior é

devido a manobra de aproximação que o robô realiza em cada novo waypoint da trajetória. Como

agora o robô deve atingir os wayponts para que a referência seja comutada, o tempo total da trajetória

é maior.

Figura 66 Trajetória percorrida e planejada para o FLC com comutação de waypoints por distância.

Page 106: RICARDO ARTIGAS LANGER

89

A Figura 67 mostra a evolução do robô em função do tempo segundo as suas coordenadas X e

Y. Em preto está o sinal de referência enviado para o controlador e em verde a posição instantânea do

robô. Para este ensaio, o RMSX é igual a 0,3410 e o RMSY é igual a 0,2161. A Figura 68(a) mostra a

evolução do robô em termos da referência angular e da orientação instantânea do robô.

Figura 67 Referências e posições instantâneas do robô para o FLC com comutação de waypoints por distância.

A Figura 68(b) mostra, os sinais de controle gerados pelo controlador. Para o controle baseado

em lógica fuzzy não ocorre uma alteração significativa do esforço de controle quando o critério de

comutação dos waypoints é trocado. O desvio padrão calculado para os sinais esquerdo e direito são

3.1 e 3.1 respectivamente.

Figura 68 Referências, orientação e sinais de controle gerados pelo FLC com comutação de waypoints por distância.

Page 107: RICARDO ARTIGAS LANGER

90

3.6 Considerações Finais

Os ensaios em simulação mostraram ser factível a utilização de um controlador baseado em

lógica fuzzy em uma aplicação de robótica móvel. Tanto o controlador baseado em lógica fuzzy

quanto o controlador PID atendem aos requisitos do sistema conseguindo controlar a trajetória do

robô móvel não holonômico.

O FLC é capaz de controlar o ângulo de estacionamento do robô quando este se aproxima de

uma curva ou do ponto de destino. Isto é particularmente útil no caso de empilhadeiras e AGVs, que

necessitem manusear cargas em locais específicos, onde, para alcançar tais locais, devem executar

alguma manobra de estacionamento. Já o controle PID é conceitualmente incapaz de estacionar o

robô por si só, necessitando de algum processamento a priori.

Apesar do grande número de parâmetros a serem sintonizados, o projeto do FLC é intuitivo e

pode ser facilmente alterado para atender sistemas de características similares. Por outro lado, este

elevado número de parâmetros dificulta a otimização do controlador. Algoritmos capazes de

determinar parâmetros ótimos, segundo um dado critério de custo, como por exemplo os algoritmos

genéticos, possuem o custo computacional dependente do número de variáveis consideradas na

otimização. Enquanto apenas 6 variáveis precisam ser consideradas no controlador PID apresentado,

no FLC são, no melhor dos casos, duas a três dezenas de variáveis.

Outras desvantagens do FLC com relação ao controle PID são a complexidade da

implementação computacional e o tempo computacional maiores que o PID.

Também devido a sua capacidade de estacionar o robô limita a sua capacidade de seguir um

ponto de destino móvel. Nos ensaios apresentados, todos os pontos de destino estavam fixos. Porém,

quando é usado o critério de tempo para a comutação dos waypoints, o sinal de referência comporta-

se exatamente como se o ponto de destino estivesse movimentando-se ao longo da trajetória

planejada. Com isso constatado, percebe-se que a qualidade da trajetória percorrida, quando

comparada com a trajetória planejada, fica dependente da velocidade da referência e do ângulo das

curvas.

A Tabela 6 mostra um comparativo resumindo os principais pontos de comparação entre os

dois controladores expostos neste capítulo.

Tabela 6 Comparação entre os controladores PID e fuzzy implementados.

Controle PID Controle Fuzzy Não estaciona Consegue estacionar o robô

Consegue seguir um destino móvel Seguimento de um destino móvel é limitado Atinge um destino fixo mais rapidamente Mais demorado para atingir um destino fixo Possível de ser otimizado mais facilmente Otimização complexa

Menor custo computacional Maior custo computacional

Page 108: RICARDO ARTIGAS LANGER

91

Capítulo 4 Controle de Trajetória através de

Controle Preditivo

Controle preditivo baseado em modelo (MPC

Model Predictive Control) é uma área de

pesquisa que se desenvolveu consideravelmente nas últimas duas décadas, tanto no meio acadêmico

quanto na indústria (Mayne et al,. 2000; Alamir et al,. 2007; Grimble e Ordys, 2001). Este sucesso

deve-se ao fato de que o MPC integra abordagens de controle ótimo, controle estocástico, controle de

processos com atraso de transporte, controle multivariável e ainda leva em consideração as

referências futuras quando estas estão disponíveis.

4.1 Introdução

Os controladores que utilizam a abordagem MPC confiam em modelos dinâmicos dos

processos, geralmente lineares e obtidos por sistemas de identificação. Estes modelos são usados para

prever o comportamento das variáveis controladas de um sistema dinâmico segundo as mudanças nos

valores das variáveis manipuladas. Assim sendo, o controlador usa as saídas dos modelos e os valores

medidos na planta para estimar os valores futuros das variáveis manipuladas da planta. Dessa forma,

pode-se calcular o conjunto de sinais que, além de controlar as variáveis de saída, pode manter todas

as variáveis da planta dentro de faixas pré estabalecidas.

Devido ao fato de que a maior parte dos processos pode ser considerada linear dentro de uma

determinada região de operação, abordagens lineares de MPCs são usadas na maioria das aplicações.

Em MPCs que utilizam apenas modelos lineares, o princípio da superposição da álgebra linear

permite que os efeitos de múltiplas variáveis manipuladas sejam somadas para prever o

comportamento das variáveis controladas. Isto torna a resolução do problema de controle uma série

de cálculos matriciais, que, embora de resolução simples, podem tornar-se bastante caros

computacionalmente. Por esse motivo, a aplicação de controladores preditivos em sistemas de

dinâmicas rápidas ou de dimensões elevadas ficou condicionado à evolução dos computadores e de

algoritmos numéricos de otimização (Camacho e Bordons, 2004).

Page 109: RICARDO ARTIGAS LANGER

92

Apesar de, a princípio, o alto custo computacional do MPC inviabilizar a sua implementação

prática em sistemas com dinâmica rápida, esta técnica de controle mostrou-se bastante promissora em

algumas aplicações com longos tempos de amostragem, como em indústrias de processos químicos e

refinarias de petróleo. Nestes casos, considerações econômicas também impulsionaram o

desenvolvimento do MPC em uma tentativa de aproximar os pontos de operação das plantas de seus

limites, sem que estes fossem ultrapassados. As primeiras aplicações industriais disponíveis

comercialmente surgiram nas décadas de 70 e 80, com, por exemplo, o Model Algorithmic Control,

MAC (Richalet et al., 1976), o Dynamic Matrix Control, DMC (Cutler e Ramacker, 1980), o

Extended Prediction Self Adaptive Control, QDMC (Garcia, 1986) e o Generalized Predictive

Control, GPC (Clarke et al., 1987), todos para plantas lineares. Cabe ressaltar que, com exceção do

GPC, todas as outras são aplicáveis somente em plantas estáveis em malha aberta.

Em aplicações industriais para processos não lineares existem, por exemplo, o NOVA

(Dynamic Optimisation Technology Products, 1996) e o Process Perfector (Martin, 1997), mas por

serem tecnologias proprietárias, detalhes dos algoritmos não são apresentados na literatura. Várias

outras referências sobre o MPC quanto a teoria e aplicações industriais podem ser vistos em Garcia e

Morshedi (1989), Qin e Badgwell (1997) e Camacho e Bordons (2004).

Atualmente, o controle preditivo baseado em modelo é uma forma de controle que pode ser

usada em sistemas complexos, multivariáveis e com restrições nas entradas, saídas e estados. Uma

seqüência de sinais de controle que minimiza uma função de custo é calculada on line, a cada

instante de amostragem, através da resolução de um problema de otimização com um horizonte finito

de predição, usando o estado atual da planta como condição inicial. Após a seqüência ótima de

controle ser obtida, apenas o primeiro elemento é aplicado no processo (Camacho e Bordons, 2004).

Alguns pontos fortes do MPC com relação a outras técnicas de controle podem ser citadas

(Camacho e Bordons, 2004):

Os conceitos são intuitivos;

Restrições e limites do sistema podem ser levados em consideração durante o cálculo da lei

de controle de uma forma direta;

Pode ser usado em uma ampla gama de processos, incluindo, por exemplo, sistemas

multivariáveis, sistemas de fase não mínima, com grandes atrasos de tempo ou que são instáveis em

malha aberta;

Aplicável a processos onde se conhece os valores futuros de referência;

Vários tipos de modelos podem ser utilizados, como por exemplo: espaço de estados,

função de transferência, resposta ao impulso.

Entretanto, o MPC possui algumas limitações:

Necessita de um modelo preciso do sistema para o cálculo dos valores futuros das variáveis

de estados;

Page 110: RICARDO ARTIGAS LANGER

93

Alto custo computacional, pois em cada instante de amostragem um problema de

otimização deve ser resolvido.

Neste capítulo é apresentada uma aplicação do MPC em robótica móvel para fazer com que um

robô percorra uma trajetória pré estabalecida. Este capítulo está estruturado da seguinte forma:

Na seção 4.2 são apresentadas as vantagens e desvantagens do uso do MPC no problema do

controle da trajetória de um robô móvel. Na seção 4.3 é descrito o controlador preditivo baseado em

modelo implementado. Também é apresentada uma linearização no modelo matemático do robô para

que este se adequasse à estrutura de controle preditivo linear. Na seção 4.4 são apresentados os

resultados conseguidos em simulação, comparando o desempenho do controlador preditivo com o

desempenho do controlador PID formulador no capítulo anterior. As conclusões e considerações

finais são apresentadas na seção 4.5 .

4.2 Motivação

Segundo Normey Rico et al. (1999), a utilização de uma técnica de controle preditivo para o

controle da trajetória de um robô móvel com tração diferencial, de acordo com uma trajetória definida

como uma série de pontos consecutivos, mostra-se promissora devido aos seguintes motivos:

A trajetória de referência é conhecida em todos os instantes, o que possibilita gerar o

conjunto de referências futuras para o controlador;

A suavização da trajetória e uma melhoria da autonomia do robô podem ser melhoradas

quando comparadas com um controlador clássico, pois o esforço do sinal de controle pode ser

penalizado diretamente na função custo;

A técnica pode ser facilmente aplicada a sistemas MIMO, que é o caso do modelo utilizado

para o robô móvel neste trabalho;

Restrições podem ser consideradas tanto para os valores de saída quanto para os sinais de

controle para que estes não ultrapassem as limitações físicas do robô;

Os fundamentos do controle preditivo são usados pelas pessoas ao dirigir um automóvel.

Para contornar ou amenizar as limitações do controle preditivo, apresentadas na seção anterior,

algumas estratégias são empregadas. Para os ensaios em simulação, o modelo do robô móvel utilizado

é conhecido e idêntico ao utilizado pelo modelo do controlador. Para o experimento em tempo real,

apresentado no próximo capítulo, o modelo do robô é identificado usando parâmetros obtidos a partir

da resposta ao degrau. O alto custo computacional será processado por um computador tipo PC

(Personal Computer), geralmente mais poderoso que um controlador dedicado utilizado na maioria

das aplicações. Os algoritmos são implementados em uma linguagem compilada e com rápida

interface com os periféricos necessários.

Page 111: RICARDO ARTIGAS LANGER

94

4.2.1 Controle Preditivo Aplicado a Robótica Móvel Controle preditivo aplicado a robótica móvel é um tema que já vem sendo estudado a alguns

anos. Várias abordagens diferentes já foram utilizadas para resolver o problema do seguimento da

trajetória planejada. A seguir são apresentados alguns trabalhos que ilustram algumas destas

abordagens.

Em Ollero e Amidi (1991) o GPC é aplicado ao problema de seguimento de trajetórias do robô

CMU Navab. Um modelo CARIMA (Controlled Autoregressive and Moving Average) é utilizado

para o cálculo da distância do robô a uma trajetória de referência. Neste trabalho o controle é

realizado apenas através da velocidade angular, considerando que a velocidade linear permanece

constante.

Algoritmos genéticos são utilizados para a otimização não linear em Gómez Ortega e

Camacho (1996) para diminuir o esforço computacional e tornar possível a aplicação em tempo real.

Um robô LABMATE com acionamento diferencial é utilizado como estudo de caso para comprovar o

funcionamento de uma função de custo que penaliza a proximidade entre o robô e os obstáculos.

Neste trabalho são feitos experimentos considerando tanto obstáculos conhecidos, evitados através de

um planejamento global da trajetória, quanto para obstáculos inesperados, evitados por um

comportamento reativo auxiliado por sensores locais.

Em Yang et al. (1998) e Seyr et al. (2005) são usados modelos cinemáticos construídos com

redes neurais para a predição dos estados, onde as entradas do sistema são as velocidades linear e

angular. A função de custo considera o erro entre a postura atual e a postura de referência e o esforço

de controle. Experimentos em tempo real são apresentados utilizando os robôs THMR III e

Tinyphoon respectivamente.

Normey Rico et al. (1999) destacam algumas vantagens da utilização do MPC para o

seguimento da trajetória de robôs móveis. Neste trabalho, um preditor de Smith é utilizado para

aumentar a robustez do sistema de controle em malha fechada e um experimento em tempo real é

apresentado com o robô LABMATE.

Um algoritmo MPC não linear em espaço de estados é desenvolvido em Essen e Nijmeijer

(2001) e aplicado para o segmento da trajetória de um robô móvel com acionamento diferencial.

Segundo afirmam os autores, os resultados em simulação mostram que, utilizando os recursos da

época, não é possível aplicar esta metodologia em robôs móveis devido ao seu auto custo

computacional.

O artigo de Gu e Hu (2005) apresenta um controlador GPC para a trajetória de um robô não

holonômico. Neste artigo é discutido, além do problema da estabilidade do controlador, o alto custo

computacional em aplicar esta tipo de controlador em tempo real.

Em Seyr e Jakubek (2005) é apresentado um controlador preditivo para a trajetória de um robô

diferencial. Este controlador é composto por duas malhas de controle: um controlador preditivo não

linear e um controlador linear em espaço de estados. Os autores afirmam que a metodologia de

Page 112: RICARDO ARTIGAS LANGER

95

controle apresentada consegue tolerar erros de modelagem com margens mais largas do que os

controladores de mesma funcionalidade encontrados na literatura. O problema de otimização não

contém nenhum parâmetro da dinâmica do modelo, apenas as equações da cinemática do robô, o que

supostamente torna o controlador mais robusto com relação a incertezas de modelagem.

Modelos de previsão também podem ser usados para prever a trajetória de obstáculos móveis,

como apresentado por Foka e Trahanias (2003). Neste trabalho, o movimento do robô é controlado

por um processo de decisão baseado em cadeias de Markov que seleciona a velocidade a ser

empregada pelo robô. A tomada de decisão leva em consideração a previsão do movimento de todos

os obstáculos móveis presentes no ambiente.

No presente trabalho de mestrado, um controlador preditivo similar ao proposto por Klan ar e

krjanc (2007) é utilizado para controlar a trajetória do robô móvel. A principal diferença entre os

trabalhos está no modelo de previsão, que no artigo é não linear, utilizado em conjunto com um

sistema para correção de erros de dinâmica linearizada para prever o comportamento futuro do robô.

A lei de controle é derivada de uma função custo que penaliza o erro da trajetória e o esforço de

controle. No trabalho de Klan ar e krjanc (2007) também são utilizadas restrições para as

velocidades e acelerações do robô de forma a evitar que este derrape, recursos que não são utilizados

na implementação deste capítulo. Outros controladores semelhantes ao apresentado neste capítulo

podem ser encontrados em de Oliveira e Carvalho (1999 e 2003). Nestes últimos experimentos em

simulação e em tempo real são apresentados para um robô Khepera. Em Oliveira e Carvalho (2003)

são comparadas duas abordagens, uma utilizando um controlador baseado em um modelo linear e

outra utilizando um controlador que considera um modelo não linear. Ensaios experimentais

apresentados neste artigo mostram que adaptações lineares de controladores não lineares podem

produzir resultados satisfatórios no controle da trajetória de um robô móvel não holonômico.

Na maioria dos trabalhos citados anteriormente, são utilizados modelos não lineares para

representar o robô móvel, mas estes modelos são considerados lineares dentro de um horizonte de

predição. Esta escolha é vantajosa pois permite o uso de algoritmos de otimização de problemas

lineares diminuindo consideravelmente o esforço computacional necessário. Entretanto, segundo

Normey Rico et al. (1999), para que o modelo linear seja válido, é necessário assumir que o

incremento de orientação seja mantido pequeno a cada instante de amostragem. Sendo assim,

trajetórias de aproximação precisam ser usadas quando o robô encontra-se com uma orientação muito

diferente da orientação de referência.

Page 113: RICARDO ARTIGAS LANGER

96

4.3 Implementação do controlador MPC

Segundo Camacho e Bordons (2004), as versões do MPC possuem elementos comuns que

podem ser escolhidos de diferentes formas, conforme as necessidades e aplicação. Estes elementos

são:

Modelo de previsão. O seu uso é devido à necessidade de prever os estados ou saídas do

sistema;

Função de custo. É o critério de desempenho com relação ao qual será feita a otimização da

lei de controle;

Obtenção da lei de controle. Para se obter uma seqüência de valores ótimos das variáveis

de decisão dentro do horizonte de predição, realiza-se a minimização da função de custo, ou seja, o

cálculo do valor mínimo desta função através da manipulação das variáveis de decisão. Para fazer

isso, usa-se o modelo do sistema para calcular valores futuros dos estados ou das saídas. Se existirem

restrições, a minimização da função de custo deve respeitá-las. A lei de controle é então dada

implicitamente pelo primeiro termo da seqüência calculada.

Horizonte deslizante de predição. Até a obtenção da lei de controle, o MPC funciona

essencialmente como um método de controle em malha aberta. Entretanto, em sua totalidade, a

estratégia funciona em malha fechada, pois através da aplicação do controle calculado em cada

instante de amostragem, os estados do sistema são atualizados e o processo de otimização e do

cálculo da lei de controle se repetem, agora com o instante de amostragem deslocado em uma unidade

para o futuro, o que dá a característica de horizonte móvel ou deslizante.

4.3.1 Modelo de Previsão Como a própria definição diz, o controle preditivo baseado em modelo leva em consideração

um modelo do sistema para prever os seus estados futuros. Assim sendo, faz-se necessário que a

informação sobre uma representação do sistema que se está tentando controlar seja inserida no

controlador.

O modelo usado para simular o robô, mostrado na equação (1.6) é suficiente para conduzir os

ensaios computacionais, porém esta equação não é linear, pois é baseada em funções trigonométricas

e possui coeficientes que variam no tempo. Segundo Camacho e Bordons (2004), existem formas de

considerar modelos não lineares em controle preditivo, mas com o objetivo de não aumentar a

complexidade do controlador e ainda manter a qualidade do controle, é utilizada neste trabalho uma

linearização do modelo do robô.

O que torna o modelo descrito na equação (1.6) não linear está no fato dos valores das saídas

para X e Y estarem em função da orientação atual do robô, . É impossível simplesmente eliminar as

variáveis dependentes do modelo e ainda conseguir identificar a posição do robô no plano, mas elas

Page 114: RICARDO ARTIGAS LANGER

97

podem ser substituídas por uma única variável que independe de , neste caso chamada de L. Esta

nova variável representa o deslocamento do robô, isto é, distância euclidiana entre a posição atual do

robô e a sua posição anterior. A derivada de L representa a velocidade linear do robô da mesma

forma que QL, definida na equação (3.4). O modelo do robô nesta nova configuração é apresentado

em (4.1). A

tVTKtqTtq

tVTKtqTtq

tqR

rtq

R

rt

tqr

tqr

t

rr

rr

rr

ll

ll

ll

lr

lrL

ºº

ºº

ººº

ººº

1

122

22

(4.1)

AFigura 69 mostra ilustra as novas variáveis de controle do robô.

Figura 69 Desenho esquemático do robô móvel considerando a nova variável de controle.

Usando a notação de espaço de estados, obtém-se:

tq

tq

t

t

t

t

tV

tV

TK

TK

tq

tq

t

t

T

T

R

r

R

r

rr

tq

tq

t

t

r

l

L

L

r

l

r

r

l

l

r

l

L

r

l

r

l

L

)(

0010

0001

)(

)(

)(

)(

0

0

00

00)(

1000

010022

00

2200

)(

º

º

º

º

(4.2)

O equivalente discreto do modelo (4.2) é apresentado na equação (4.3), considerando um

amostrador de ordem zero. Este é o modelo inserido no controlador preditivo como uma forma

linearizada do modelo completo, sendo que a notação de cada uma das variáveis segue o mesmo

padrão apresentado para a equação (1.6), tal que

Page 115: RICARDO ARTIGAS LANGER

98

kq

kq

k

k

ct

k

kV

kVb

kq

kq

k

k

A

kq

kq

k

k

r

l

L

TL

r

l

r

l

L

r

l

L

)(

)(

)(

1

1

1

1

(4.3)

sendo:

0010

0001

000

000

12

12

10

12

12

00

T

Tt

Tt

Tt

rTt

l

Tt

rTt

l

c

e

e

eR

rTe

R

rT

erT

erT

A

r

l

rl

rl

r

l

rl

rl

Tt

r

Tt

l

rT

t

rr

lT

t

ll

rT

t

rr

lT

t

ll

eK

eK

TeTtR

rKTeTt

R

rK

TeTtrK

TeTtrK

b

10

01

22

22

As variáveis de saída do modelo descrito pela equação (4.3) não dependem da orientação do

robô. A variável de posição representa a distância percorrida pelo robô desde o último instante

amostrado. Assim sendo, para que seja determinada a posição do robô com relação aos eixos X e Y,

uma transformação ainda deve ser efetuada nas saídas do modelo, como mostra a equação (4.4).

t

L

t

L

dtttY

dtttX

0

º

0

º

))(sen(

))(cos(

(4.4)

Esta transformação é apenas utilizada para fins de simulação e geração das referências futuras,

pois o modelo não mais considera a posição atual do robô, apenas o seu deslocamento. Esse

deslocamento é exclusivamente dependente da dinâmica dos motores e dos sinais de entrada, o que

torna o modelo linear do ponto de vista do controlador. Para que o robô atinja o ponto de destino, as

referências futuras são fornecidas de modo a eliminar a distância entre a posição atual do robô e o

ponto de destino, como será explicado na seção 4.3.2.1.

Page 116: RICARDO ARTIGAS LANGER

99

4.3.2 Função de Custo O objetivo do GPC é obter a seqüência de ações de controle ( u(k), u(k + 1|k), ..., u(k + Nu 1|k))

de forma que as saídas previstas para o sistema ( (k + j|k) ) sejam o mais próximo o possível das

referências desejadas ( w(t + j) ) dentro do horizonte de previsão (Ny). Isto é conseguido minimizando

uma função de custo J em função da norma (diferença ao quadrado) entre a referência e saída,

ponderada pelo esforço de controle, na seguinte forma:

1

0

2

1

2^

||Nu

j

Ny

jk kjkujkwkjkyJ

(4.5)

sendo

w(k + j|k) : referências futuras;

(k + j|k) : previsões das saídas do sistema;

u(k + j|k) : incrementos do sinal de controle;

: ponderação sobre os esforços de controle;

Ny : horizonte de previsão da saída;

Nu : quantidade de incrementos do sinal de controle considerados na otimização.

4.3.2.1 Referências Futuras A maior parte dos métodos de controle de trajetórias é baseada em encontrar o erro entre a

postura atual do veículo e uma postura de referência sobre uma trajetória previamente planejada. Há

diversas abordagens que podem ser usadas para selecionar a postura de referência. Uma destas

abordagens é escolher um ponto sobre a trajetória planejada com uma determinada distância da

posição atual do robô (Amidi, 1990). Esta distância, chamada pelo autor de lookahead, pode ser fixa

ou variar de acordo com diversos parâmetros dinâmicos, tais como a velocidade do robô ou a

curvatura da trajetória de referência. Em Ollero et al. (1994), a evolução no tempo do ponto da

postura de referencia é governada por uma equação diferencial que contém o erro de posição. Ambos

o ponto de referência e a equação diferencial são chamados de carro virtual . Outra abordagem é

utilizar um conjunto de pontos de referência consecutivos, todos sobre a trajetória planejada, ao invés

de um ponto isolado (Gómez Ortega, 1994).

Para este trabalho, as referências para o controlador, considerando o modelo linearizado,

devem representar o conjunto de deslocamentos consecutivos (w L (k + j|k) ) e posições angulares

(w (k + j|k) ) que levam o robô até o ponto de destino. As referências de orientação são geradas de

forma absoluta, sendo o ângulo da reta que passa pelo centro do robô e pelo próximo waypoint, com

relação ao eixo X, e não com relação á orientação do próprio robô, como é feito para o PID. O

problema com esta abordagem está quando a referência encontra-se muito próxima do robô. Quando

isto acontece, o ângulo calculado para a referência tende a oscilar, pois no caso limite, quando o robô

encontra-se exatamente sobre a referência, o ângulo não pode ser determinado. Assim sendo, uma

Page 117: RICARDO ARTIGAS LANGER

100

condição é inserida para que seja utilizada a referência futura mais afastada do robô quando a

referência atual encontra-se muito próxima do mesmo.

As referências de deslocamento são calculadas da mesma forma que para o controlador PID,

dada pela equação (3.6), considerando apenas a distância até o ponto de destino. Para que o robô

possa também se deslocar com velocidade linear menor que zero, um critério foi adicionado para

alterar o sinal da referência de deslocamento.

A Figura 70 ilustra as variáveis utilizadas no processo do cálculo das referências futuras

apresentado na equação (4.6).

Figura 70 Erros considerados para o cálculo das referências futuras do controlador preditivo.

Como a posição real do robô é desconhecida para instantes futuros, para as referências de

orientação é considerada apenas a posição atual do robô. Para as referências futuras de deslocamento

( L) é considerado o deslocamento da referência. A equação (4.6) descreve o processo de

determinação das referências futuras.

kXNkX

kYNkYatgRkkwse

kXkX

kYkYatgRkkwse

kjkw

jkYjkYjkXjkXwse

jkYjkYjkXjkXwsejse

kYkYkXkXwse

kYkYkXkXwsejse

kjkw

yd

ydL

d

dL

dddd

dddd

dd

dd

L

2|

2|

|

1190

1190)1(

90

90)1(

|

22

22

22

22

(4.6)

onde

w L(k + j|k) : referências futuras de deslocamento [m];

w (k + j|k) : referências futuras de orientação [ rad ];

[Xd(k), Yd(k)] : waypoint atual com relação aos eixos X e Y [ m ];

[X(k), Y(k)] : posição atual do robô com relação aos eixos X e Y [ m ];

k : tempo discreto.

Page 118: RICARDO ARTIGAS LANGER

101

4.3.3 Obtenção da Lei de Controle O problema de minimização pode ser escrito da seguinte forma (Oliveira, 1997):

Nujkjku

asujeito

kNukukkukku

Jk

0|

.

|1,...,|1,|

min

(4.7)

Reescrevendo este problema em forma matricial obtém-se:

u

ufuQu TTmin (4.8)

onde

HwyfIHHQT

lTT

^

2

(4.9)

j

i

ij

TNy

TNy

T

TT

T

AS

bScbScbSc

bScbSc

bSc

H0

021

01

0

0

00

(4.10)

Nykw

kw

kw

w

kNyky

kky

kky

y

l

l

l

l

1

1

|

|2

|1

^

^

^

^ (4.11)

klASckykjky jT

l 1

^

| (4.12)

1klklkl (4.13)

e assumindo que o modelo do sistema a ser controlador é descrito pela equação:

klcky

kubklAklT

11 (4.14)

A solução da equação (4.7) pode ser obtida analiticamente derivando a função de custo e

igualando o resultado a zero (Oliveira, 1997).

kl

ASc

ASc

ASc

ky

ky

ky

wmku

yNT

T

T

T

1

1

0

)(

)(

)(

(4.15)

considerando

kubklAkl 1 (4.16)

Page 119: RICARDO ARTIGAS LANGER

102

TT

jii

j

j

T HIHH

aaa

aaa

aaa

m1

,1,11,

,22,21,1

,12,11,1

(4.17)

onde

NuEjEiji

NuEjEijia ji 1;1;0

1;1;1,

(4.18)

sendo:

E : número de entradas do sistema;

l(k) : vetor de estados.

4.4 Resultados em Simulação

Seguindo a mesma estrutura do capítulo anterior, o ambiente 3 é utilizado para testar em

simulação o controle preditivo. Os dados do modelo do robô e os parâmetros do planejamento de

trajetórias são os mesmos que os usados para o controle baseado em lógica fuzzy e PID apresentados

no capítulo anterior. Entretanto, utiliza-se apenas o critério de comutação dos waypoints por tempo. O

procedimento adotado para o cálculo das referências futuras não é compatível com o critério de

comutação dos waypoints por distância. Uma vez que, neste critério, como não é conhecido o número

de instantes de amostragem que o robô irá levar para atingir um waypoint, não se pode estimar os

valores para as referências futuras de orientação. Para as referências de distância linear não há

problemas, uma vez que apenas o primeiro valor é diferente de zero, porém as referências futuras de

orientação dependem da trajetória planejada. O que pode ser feito é simplesmente igualar todas as

referências futuras ao próximo waypoint. Entretanto, fazendo isto, o robô estaciona em todos os

waypoints, o que não é o objetivo do controlador. Assim sendo, ao invés de apresentar dois ensaios

com diferentes critérios de comutação de waypoints, são apresentados dois ensaios com diferentes

parâmetros de controle. Em todos os casos, o ângulo inicial do robô é de 90o com relação ao eixo X e

a referência de velocidade é de 0,12m/s.

No primeiro ensaio os parâmetros utilizados para o controlador preditivo são:

Ny : 6;

Nu : 2;

: 0.

A Figura 71 mostra a trajetória planejada (amarelo) e percorrida (azul). A Figura 72 mostra a

trajetória do robô em função do tempo segundo as suas coordenadas X e Y. Apesar de, na prática, o

controlador receber sinais de referência em função apenas de uma distância linear, as coordenadas X e

Page 120: RICARDO ARTIGAS LANGER

103

Y foram separadas nesta figura para facilitar a comparação com os controladores apresentados no

capítulo anterior. Para este ensaio, o RMSX é igual a 0,0221 e o RMSY é igual a 0,0193.

Figura 71 Trajetória percorrida e planejada para o controlador preditivo no ensaio 1.

Com estes parâmetros e robô leva aproximadamente 76 segundos para atingir o destino, o que é

alguns segundos a menos que o mesmo ensaio para os controladores do capítulo anterior. Apesar da

mesma referência de velocidade ser aplicada, como neste caso o robô segue a referência com um erro

menor, quase não há defasagem entre o waypoint final e a posição do robô.

Figura 72 Referências e posições instantâneas do robô para o controlador preditivo no ensaio 1.

A Figura 73(a) mostra as referências angulares (em preto) e a orientação instantânea (em verde)

do robô móvel. Como o robô está em movimento e é utilizada a sua posição instantânea para calcular

as referências do controlador, pode-se visualizar oscilações nesta referência.

A Figura 73(b) mostra os sinais de controle gerados pelo controlador. Pode-se visualizar nesta

figura que este controlador provoca um grande esforço nos atuadores. Há valores elevados na

Page 121: RICARDO ARTIGAS LANGER

104

derivada dos sinais de controle e a sua também elevada amplitude é freqüentemente saturada pelos

limites de tensão elétrica adotados para os motores. O desvio padrão calculado para os sinais de

controle dos motores esquerdo e direito são 5,8 e 5,7 respectivamente.

Figura 73 Referências angulares, orientação e sinais de controle gerados pelo controlador preditivo no ensaio 1.

Para o segundo ensaio, apenas o parâmetro da ponderação do sinal de controle é alterado, os

demais parâmetros têm os seus valores mantidos:

Ny : 6

Nu : 2

: 1x10 4

A Figura 74 mostra a trajetória planejada (amarelo) e percorrida (azul). Percebe-se que a

trajetória percorrida ainda é muito semelhante à planejada.

Figura 74 Trajetória percorrida e planejada para o controlador preditivo no ensaio 2.

Page 122: RICARDO ARTIGAS LANGER

105

Se forma semelhante ao ensaio 1, a Figura 75 mostra a trajetória do robô em função do tempo

segundo as suas coordenadas X e Y. Para este ensaio, o RMSX é igual a 0,0235 e o RMSY é igual a

0,0276.

Figura 75 Referências e posições instantâneas do robô para o controlador preditivo no ensaio 2.

Através da Figura 76 pode-se verificar que um acréscimo de 1x10-4 no parâmetro

alterou o a

medida do desvio padrão do sinal de controle em aproximadamente 13%. Neste caso, o sinal de

controle possui uma derivada em função do tempo de menor intensidade e valores de amplitude

menores quando comparados com o primeiro ensaio. Por outro lado, os erros de trajetória

aumentaram. O desvio padrão calculado para os sinais de controle dos motores esquerdo e direito são

5,1 e 4,9 respectivamente.

Figura 76 Referências angulares, orientações e sinais de controle gerados pelo controlador preditivo no ensaio 2.

Page 123: RICARDO ARTIGAS LANGER

106

4.5 Considerações Finais sobre o Controlador Preditivo

Na literatura é possível encontrar grande diversidade de aplicações de controladores preditivos

tanto em robótica móvel quanto em aplicações industriais. As variações são percebidas

principalmente no tipo de modelo utilizado (DMC, QDMC, MPC, entre outras), no emprego ou não

de estruturas linearizadas e na consideração de características não lineares na lei de controle.

Os resultados obtidos neste capítulo demonstram que o MPC aplicado a robôs móveis é

factível. Entretanto, não foi estabelecida aqui nenhuma prova formal da estabilidade assintótica do

sistema para tal estratégia de controle. Técnicas que exploram o comportamento monotônicamente

decrescente da função de custo (Mayne, 2000) podem ser utilizados para provar a estabilidade do

sistema em malha fechada.

Contudo, mesmo considerando um modelo linear para um robô de modelagem conceitualmente

não linear, este sistema mostrou-se estável para qualquer posição e orientação inicial, não

necessitando de quaisquer trajetórias de aproximação para controlar a trajetória do robô.

Durante todo este capítulo, foi considerado que os parâmetros dinâmicos do robô são idênticos

aos do sistema sendo controlado. Este pressuposto não é válido para implementações em tempo real,

uma vez que o modelo exato nunca é conhecido e há sempre uma quantidade de incertezas tanto no

modelo quanto nos sensores físicos que medem os estados do robô. Os parâmetros dinâmicos são

variantes com a carga útil do robô e com a superfície na qual ele se desloca, assim não podem ser

determinados por calibração. Pode-se, entretanto, empregar estimadores de estados, como por

exemplo o filtro de Kalman (Kalman, 1960), para diminuir estas incertezas.

A lei de controle utilizada minimiza uma função de custo quadrática que penaliza erros nas

saídas e o esforço de controle. A solução do sistema de otimização é derivada analiticamente, o que

permite uma implementação com baixo custo computacional. O tempo computacional gasto foi

desprezível quando comparado com o intervalo de amostragem, o que torna este controlador bastante

promissor para implementações em tempo real.

Comparando o controlador preditivo com o controlador PID do capítulo anterior, apesar de

ambos cumprirem o objetivo de controlar a trajetória do robô móvel em simulação, o controlador

MPC teve uma performance melhor. Isto se deve principalmente devido a sua estrutura de controle

mais complexa levar em consideração o comportamento futuro do robô e as referências futuras de

trajetória. Outra propriedade importante é a sua estrutura ser de fácil sintonia com poucos parâmetros

a serem ajustados. O esforço do controlador pode ser modificado através da configuração do

parâmetro . Sinais de controle mais agressivos tentem a diminuir os erros entre a referência e o robô,

porem consomem mais energia das baterias, diminuindo autonomia do robô. Outro ponto importante

é que, na implementação em tempo real, como o modelo considerado é diferente do modelo real, um

controlador mais agressivo pode desestabilizar o sistema.

Page 124: RICARDO ARTIGAS LANGER

107

Capítulo 5 Experimento em Tempo Real

Conforme descrito nos capítulos 3 e 4, os controladores implementados em simulação atendem

às expectativas e realizam, através de diferentes abordagens, o seguimento da trajetória planejada.

Mas modelos teóricos dificilmente representam com perfeição detalhes de um processo real. Diversas

simplificações são usadas nos modelos em simulação, tais como, as considerações de linearidade e

baixa ordem (1a ordem) para os motores, sensores perfeitos e lineares e câmeras de vídeo com lente

plana. Há ainda algumas características existentes, em maior ou menor quantidade, que são

normalmente desprezadas em modelos computacionais de robôs móveis, tais como deslizamento nas

rodas, histerese, zona morta e ruído. Assim sendo, para a validação dos algoritmos estudados, neste

capítulo são descritos os detalhes constituintes de um ambiente para a análise de algoritmos de

controle em tempo real de robôs móveis e os testes realizados com o modelo construído. Por

conseguinte, uma gama de problemas que não são considerados em ambientes de simulação, mas

podem impactar o desempenho do sistema, são analisados. Dessa forma, pode-se testar os sistemas

desenvolvidos e comprovar a sua viabilidade prática.

Duas concepções são estudadas para o robô móvel. A primeira está baseada em um kit LEGO

MindstormsTM, composta por uma câmera com conexão USB (Universal Serial Bus), uma central

processadora baseada em um microcontrolador Motorola 68HC11 e drivers de acionamento PWM

(Pulse Width Modulation). Dentre as vantagens da utilização do kit LEGO são a sua disponibilidade

na Universidade PUC-PR e a facilidade de operação. Dentre as desvantagens desta concepção

destacam-se: inexistência de drivers para LabVIEWTM que operassem a câmera, baixa qualidade das

imagens capturadas, baixa freqüência da portadora PWM e escassez de recursos para a programação

do microcontrolador. A central processadora está conectada à alimentação de 110V através de um

transformador e ao computador através da porta serial. Portanto, os sinais de controle dos motores

chegam ao robô através de cabos, o que limita a sua mobilidade. A freqüência portadora dos

controladores PWM embutidos na central processadora é de aproximadamente 2kHz, assim sendo,

quando são comandados sinais com baixas amplitudes, são constatadas oscilações nas velocidades

dos motores. Estas desvantagens tornaram inviável a utilização do kit LEGO MindstormsTM nos

experimentos em tempo real.

Page 125: RICARDO ARTIGAS LANGER

108

A segunda concepção utiliza apenas os motores DC (Direct Current) e a estrutura do veículo

do kit LEGO MindstormsTM. Os demais componentes físicos (hardware) e computacionais (software)

são substituídos e projetados de forma a atender os experimentos a serem realizados.

Em termos de componentes de hardware, um robô móvel pode ser considerado como um

conjunto de sub sistemas para (Dudek e Jenkin, 2000):

Locomoção (movimentação do robô móvel pelo ambiente): Para este protótipo são usados os

motores do kit LEGO. Para os drivers de acionamento elétrico são utilizados circuitos

embarcados no robô.

Sensoriamento (medição das propriedades do robô móvel e do ambiente): Uma câmera para

capturar as imagens aéreas do ambiente e do robô móvel é utilizada para este fim. A digitalização

das imagens é obtida através de uma placa de aquisição de imagens da National Instruments que é

conectada a um computador pelo barramento PCI.

Tomada de decisões (mapeamento de propriedades em ações pelo robô móvel): Neste trabalho,

todo o processo de tomada de decisão é realizado pelo computador.

Comunicação (comunicação entre o robô móvel e o operador): A conecção entre o robô e o

computador é realizada por rádio freqüência através do protocolo de comunicação serial RS-232.

O restante deste capítulo está estruturado da seguinte forma:

Na seção 5.1 é apresentado uma descrição do ambiente experimental construído, detalhando

cada uma das suas partes. A estimação dos parâmetros do modelo do robô é apresentada na seção 5.2

. Na seção 5.3 são apresentados os resultados obtidos em tempo real utilizando o algoritmo K-Bug,

descrito no Capítulo 2, para o planejamento de trajetórias e os controladores PID, FLC e Preditivo,

descritos nos capítulos 3 e 4, para o controle da trajetória.

5.1 Descrição Geral do Sistema

Um esquema do hardware construído é apresentado na Figura 77.

Figura 77 Esquema do hardware utilizado.

Um computador pessoal com processador Athon 64 de 2400MHz com 512Mb de memória

RAM (Random Access Memory) é utilizado para processar as imagens da câmera e os algoritmos de

Page 126: RICARDO ARTIGAS LANGER

109

planejamento e controle de trajetórias. Este computador recebe os sinais de vídeo da câmera contendo

as imagens do ambiente e do robô, identifica a postura do robô, planeja a sua trajetória no ambiente, e

também controla em tempo real a trajetória executada.

A cada instante de amostragem o computador envia sinais de controle para cada um dos

motores do robô através da porta serial utilizando o protocolo RS-232. A porta serial é conectada a

um transmissor de rádio sintonizado na mesma freqüência que o receptor no robô. O

microcontrolador PIC16F74, instalado no robô, é responsável por receber os sinais do computador,

interpretá los e acionar os motores através de circuitos PWM, um para cada motor. Mais informações

sobre a programação e utilização dos microcontroladores da família PIC podem ser encontradas em

Souza (2003).

A Figura 78 mostra uma foto da placa de acionamento que se encontra no robô e a Figura 79

mostra duas fotos do robô construído com LEGO.

Um memorial descritivo do projeto eletrônico é detalhado no Anexo B. As dimensões

relevantes para o modelo matemático considerado e apresentado na equação (3.3) são:

Figura 78 Foto da placa de acionamento do robô.

(a)

(b)

Figura 79 Fotos do robô construído com LEGO.

Page 127: RICARDO ARTIGAS LANGER

110

R = 0,07 : metade da distância entre as rodas ou raio do carro [ metros ];

r = 0,0125 : metade do diâmetro das rodas ou raio da roda [ metros ];

L = 0,13 : comprimento do carro, usado para a comutação da referência (vide 3.3.4) [metros].

Para facilitar a integração com a plataforma de programação utilizada, o LabVIEWTM, é

utilizada uma placa de aquisição da National Instruments modelo NI-1407, uma câmera CCD

Toshiba e uma lente de 8mm com 1:1,3 de abertura. Com esta lente, a câmera, que foi suspensa a uma

altura de dois metros, visualiza uma área de aproximadamente 6m2.

Outro aspecto relevante é a alimentação do robô que não é efetivada através de cabos, mas sim

por duas baterias alcalinas de 9V. Ensaios mostraram que a duração média das baterias é de

aproximadamente 20 minutos com ambos os motores a plena carga.

Nas seções seguintes são descritas cada uma das partes constituintes do sistema em tempo real

construído. Na seção 5.1.1 é descrito o processo de acionamento dos motores. Na seção 5.1.2 o

sistema de comunicação via rádio é apresentado, juntamente com o protocolo de comunicação

utilizado. Finalmente, o processo de reconhecimento de imagens é descrito na seção 5.1.3.

5.1.1 Sistema de Acionamento dos Motores É comum encontrar motores de corrente contínua nos projetos de robôs móveis. Tais motores

são escolhidos principalmente devido a sua pequena dimensão física e facilidade de acionamento.

Para acionar este tipo de motor deve-se aplicar uma tensão elétrica em seus terminais. A polaridade

da tensão elétrica aplicada é responsável pelo sentido de rotação do motor. Já a velocidade de rotação

do eixo é diretamente proporcional à tensão eficaz aplicada, dada pela integral no tempo do valor

instantâneo da tensão. Dessa forma, pode-se usar a modulação por largura de pulso, ou PWM, para

facilitar o acionamento dos motores, uma vez que tal técnica não requer circuitos conversores

digitais-analógicos para gerar as tensões de alimentação dos motores (Rashid, 1999).

Um sinal PWM é basicamente um sinal com a forma de onda quadrada, também conhecida

como trem de pulsos , onde o comprimento de cada pulso é controlado em função de um dado valor.

A Figura 80 mostra um exemplo de um sinal PWM. Este sinal possui um período total P,

permanecendo em nível alto (amplitude U) pelo tempo d.

Figura 80 Forma de onda pulsada.

A razão entre o tempo d e o período P é conhecida por Duty Cycle. Pela variação desta relação

pode-se conseguir formas de onda com valores eficazes variando entre 0 e U volts, conforme o Duty

Page 128: RICARDO ARTIGAS LANGER

111

Cycle varie de 0% a 100% respectivamente. Na Figura 81 é exemplificado este processo, onde é

usada uma forma de onda senoidal para modular um trem de pulsos, onde a amplitude do sinal

modulador altera a largura do trem de pulsos, resultando em um sinal PWM.

Figura 81 Modulação por largura de pulso.

A freqüência do trem de pulsos, chamada de freqüência portadora, utilizada nos controladores

PWM é de 19,43 KHZ. Esta freqüência está próxima do limiar auditivo do ser humano, o que torna o

ruído dos controladores quase imperceptível. Como a dinâmica esperada para os sinais de controle é

na ordem de 100Hz, a freqüência portadora pode ser facilmente filtrada por um filtro tipo RC (Sedra e

Smith, 1998).

5.1.2 Sistema de Comunicação Serial Via Rádio Os componentes da Telecontrolli RT4 433.92 e RR3 433.92 (juntamente com duas antenas de

comprimento igual a 20cm) são responsáveis pela transmissão e recepção dos sinais de comunicação

via radiofreqüência. Os diagramas esquemáticos de todos os circuitos construídos podem ser vistos no

Anexo A. A transmissão dos dados respeita o protocolo serial RS-232 com velocidade de 1.2Kbps ou

2.4Kbps, 8 bits, 1 stop bit, sem paridade e controle de fluxo por software (caracteres XON/XOFF).

Para que os comandos enviados pelo computado possam ser interpretados pelo

microcontrolador instalado no robô, faz-se necessário utilizar um protocolo de transmissão de

comandos, isto é, um padrão em que os comandos são enviados e recebidos. Este protocolo opera em

um nível acima do padrão RS 232, segundo a divisão de camadas OSI (Gasparini, 2004).

O protocolo de comunicação é composto por uma palavra morta, uma palavra de login, uma

palavra de logoff e os sinais dos dois motores. Todas estas palavras são codificados usando oito bits

segundo a Tabela 7.

A palavra morta é desconsiderada pelo robô. Ela existe apenas para solucionar uma limitação

existente nos componentes de transmissão e recepção. Caso a porta serial fique ociosa por mais do

que alguns segundos, o receptor de radiofreqüência perde o sincronismo com o transmissor,

Page 129: RICARDO ARTIGAS LANGER

112

resultando no envio de ruído para o robô. Quando o sistema é iniciado, ou caso o sincronismo seja

perdido, para que este seja estabelecido, são necessárias duas palavras mortas. Assim sendo, durante o

funcionamento do sistema, o programa que controla a comunicação deve constantemente enviar os

dados ao receptor a fim de manter a comunicação ativa.

Tabela 7 Comandos dados ao robô.

Ação Valor ou faixa de valores decimais

Valor ou faixa de valores binários

Velocidade de 100% a 0 228 a 128 11100100 a 10000000 Velocidade de 0 a 100% 27 a 127 00011011 a 01111111 Palavra morta 240 11110000 Login 250 11111010 Logoff 255 11111111

Para iniciar o robô é utilizada a palavra de login. Esta palavra ativa os comandos do robô de

forma que este permita que os sinais recebidos do computador sejam aplicados aos motores. São

necessárias duas palavras mortas e uma palavra de login para efetivamente realizar o login do robô e

ativar o canal de comunicação. A partir desta comunicação ser realizada com sucesso, o robô está

pronto para receber os sinais para os motores.

Para desligar o robô é utilizada a palavra de logoff. Há, na placa de circuito impresso, um LED

(Light Emitting Diode) verde indicando o estado do sistema. O estado aceso significa ativo, isto é, o

robô está pronto para receber sinais de controle para os motores, e apagado significa inativo, situação

em que o robô ignora qualquer comando enviado até que uma nova palavra de login seja recebida.

Depois de recebida a palavra de login, o robô está pronto para receber comandos do

computador. Em cada instante de amostragem são enviados dois bytes para o robô, um para cada

motor, primeiro para o motor direito e depois para o motor esquerdo. Os valores para os sinais dos

motores, provenientes do controlador, são escalados de acordo com a máxima tensão permitida para

cada motor. Como o protocolo RS-232 escolhido transmite pacotes de 10bits (contando com 1 start

bit, 8 bits de dados e um stop bit) a 2,4Kbps e são necessários 2 pacotes para atualizar ambos os

motores, o período mínimo de atualização é 8,3ms. O programa completo utilizado no

microcontrolador está descrito no Anexo C.

5.1.3 Sistema de Reconhecimento de Imagens Esta parte do sistema está relacionada ao tratamento e análise das imagens recebidas pela

câmera. O processamento de imagens visa a manipulação e exibição de imagens prontas, envolvendo

diversos processos de tratamento da imagem, como por exemplo filtragem de ruídos. Ao contrário da

computação gráfica, o processamento de imagens não possui como fim a geração de uma imagem a

partir de dados, mas sim a manipulação de uma imagem previamente gerada e até possivelmente a

extração de informações a partir desta imagem (Casacurta et al., 1998).

Page 130: RICARDO ARTIGAS LANGER

113

Uma imagem é composta por um conjunto de pontos, denominados pixels (Picture Elements)

ou "Dots". Estes pixels estão dispostos na tela do computador formando uma matriz de pontos que é

denominada de Bit Map ou "Mapa de Bits". Este mapa de bits é um reticulado, onde cada elemento

da matriz possui uma informação referente à cor associada àquele ponto específico. A resolução de

uma imagem é dada pelo número de pixels que esta imagem possui na horizontal e na vertical. Cada

elemento da imagem possui uma localização, que é definida pela suas coordenadas na matriz da

imagem (Parker, 1997).

O processamento de imagens irá manipular as imagens modificando as ou identificando os

seus elementos componentes. Segundo Casacurta et al. (1998), o processamento de imagens possui

inúmeras aplicações, tais como:

Tratamento e melhoria de imagens a fim de permitir a visualização de algum detalhe

específico de interesse do usuário. É aplicado junto à medicina (tomografia), controle de qualidade,

biologia, sistemas de monitoração (segurança), sistemas de controle, geologia, sensoriamento remoto

(imagens de satélites), meteorologia, entre outros. A Figura 82 mostra um exemplo da utilização do

processamento de imagens na filtragem de ruídos.

Figura 82 Imagem com ruídos e depois de filtrada. Fonte: (Casacurta et al., 1998).

Reconhecimento e classificação de objetos presentes em uma imagem. Aplicável em sistemas

de segurança (impressões digitais), interpretação automática de textos, visão artificial, robótica,

exploração automatizada (sistemas anti bombas, exploração submarina, mísseis teleguiados), etc. A

Figura 83 mostra um exemplo de reconhecimento de padrões de imagem.

Figura 83 Padrões sendo destacados em uma imagem. Fonte: (Casacurta et al., 1998).

Page 131: RICARDO ARTIGAS LANGER

114

Resumindo, o processamento de imagens tem o seguinte objetivo: a partir de uma imagem,

realizar uma transformação sobre esta, que leve a uma nova imagem. As operações de tratamento de

imagens mais comuns são:

Halftoning (geração de meios tons);

Dithering (mistura de cores);

Quantização (alteração de cores);

Equalização de histograma;

Limiarização ou binarização da imagem;

Alteração de contraste;

Alteração de brilho;

Smoothing (Suavização da imagem);

Sharpening (Destaque de contornos);

Aplicação de filtros (convolução, transformadas);

Ampliação, redução, rotação, recorte e translação;

Morph (Deformação da imagem).

Neste trabalho, o processamento de imagens é usado para realçar a informação relevante nas

imagens captadas pela câmera. Também são usados algoritmos de visão computacional para

identificar o robô móvel e o separá-lo do ambiente, determinando a sua postura no plano.

Dentre as ferramentas conhecidas na literatura de processamento de imagens, são utilizadas

para auxiliar na tarefa de reconhecer o robô técnicas com filtros passa baixa, detectores de bordas,

filtros Canny, binarização, etc (Parker, 1997). Todas essas ferramentas estão presentes no pacote de

processamento de imagens do LabVIEWTM chamado IMAQ. Este mesmo pacote também possui

algoritmos de reconhecimento de padrões de imagens que foram utilizados.

A câmera utilizada fornece imagens monocromáticas em tonalidades de cinza (Gray Scale)

com resolução de 640x480 em 8bits. Neste tipo de imagem, cada ponto possui um valor associado

que indica uma intensidade de luminosidade, entre o preto e o branco, sendo o valor numérico zero

para o preto e 255 para o branco.

Partindo destas imagens é imperativo reconhecer a posição e orientação do robô necessária

para os algoritmos de planejamento e controle de trajetórias. Nesta aplicação, os obstáculos são

selecionados manualmente pelo operador. Por outro lado, a postura do robô é identificada

continuamente e de forma automática durante o percurso da trajetória.

A seguir, duas abordagens possíveis para realizar o reconhecimento do robô no ambiente são

comentadas. Ao fim destes, apresenta-se o procedimento adotado neste trabalho. Estas abordagens

utilizam bibliotecas prontas de reconhecimento de padrões de imagens disponíveis no IMAQ e

algoritmos que buscam na imagem alguns aspectos geométricos do robô.

Page 132: RICARDO ARTIGAS LANGER

115

A primeira abordagem compara uma imagem menor com partes de uma outra imagem,

buscando por semelhanças. Dessa forma, tendo-se uma imagem padrão, pode-se realizar uma procura

na imagem vinda da câmera por essa imagem padrão.

Com este objetivo, uma imagem do robô visto de cima é manualmente selecionada e separada

do ambiente para formar a imagem padrão. As imagens subseqüentes adquiridas pela câmera, após

passarem por um processo de filtragem para remoção de ruídos, são pesquisadas em busca da imagem

padrão. O resultado, apesar de conseguir reconhecer o robô em aproximadamente 80% das vezes,

precisa ser refinado para atender próximo de 100% dos casos para que possa ser usado dentro de um

laço de controle. Os ensaios experimentais mostraram que as falhas ocorrem principalmente devido

ao pouco contraste entre o chão (fundo) e o robô (imagem padrão). Para corrigir este problema pode-

se utilizar três recursos: (i) anexar fisicamente sobre o robô uma imagem contendo uma figura

destoante dos demais obstáculos do ambiente, (ii) subtrair uma imagem de fundo e (iii) ajustar a íris

da câmera para controlar a iluminação captada.

Assim sendo, uma figura simétrica apenas longitudinalmente é fixada sobre o carro, de forma a

ser captada nitidamente pela câmera. A imagem usada é mostrada na Figura 84.

Figura 84 Figura padrão para o reconhecimento do robô.

Uma imagem contendo somente o fundo, sem o robô, é adquirida e armazenada antes do início

do sistema de controle. Esta imagem é então subtraída das imagens em que se deseja identificar o

robô. Dessa forma aparecem manchas facilmente identificáveis na imagem que são regiões onde

ocorrem diferenças entre a imagem de fundo e a imagem atual. A informação contida em tais

manchas não é importante e sim a sua posição e limites. Sabe-se, então, que o robô encontra-se dentro

da área de alguma das manchas. O histograma da imagem é analisado para determinar um limiar em

função da iluminação do ambiente. De posse desse limiar pode-se destacar as áreas suspeitas em

conter o robô. Tais áreas são comparadas com o tamanho esperado para o robô, sendo descartadas as

áreas muito grandes ou muito pequenas, o que resulta em, geralmente, uma ou duas áreas candidatas.

Finalmente recupera-se a imagem original da câmera e aplicam-se os algoritmos de reconhecimento

em áreas muito mais restritas. A Figura 85(a) mostra um segmento da imagem original captada pela

câmera e a Figura 85(b), o algoritmo reconhecendo o robô móvel e o separando do fundo.

Apesar deste processo ter sucesso em reconhecer o robô em praticamente 100% dos casos, todo

o processamento de imagens consome aproximadamente 100ms. Se esta metodologia for utilizada

dentro da malha de controle, o intervalo de amostragem mínimo seria em torno de 200ms, pois ainda

devem ser considerados os tempos de comunicação, processamento dos controladores e captura das

imagens. Com o intuito de diminuir este tempo, a segunda abordagem é apresentada para reconhecer

a posição e orientação do robô no plano, baseada inteiramente no reconhecimento de aspectos

Page 133: RICARDO ARTIGAS LANGER

116

geométricos do robô na imagem. Esta é a abordagem utilizada para o reconhecimento do robô neste

trabalho.

(a) (b)

Figura 85 Robô sendo reconhecido na imagem.

Nesta abordagem, o padrão de imagem complexo (Figura 84) é trocado por uma figura

contendo apenas dois círculos com tamanhos diferentes. Reconhecer círculos em uma imagem é

relativamente mais simples, pois não há a necessidade de diferenciar a orientação dos mesmos. O

centro círculo maior coincide com o centro de giro do carro e o centro do círculo menor é usado para

identificar a orientação do robô. A Figura 86 mostra uma imagem capturada pela câmera aérea.

Figura 86 Imagem capturada pela câmera aérea.

Para encontrar os centros dos círculos inicia-se binarizando a imagem em função de um limiar.

Todos os pixels com valores abaixo deste limiar são descartados pelos processos posteriores. Para a

determinação deste limiar o histograma da imagem é avaliado. Como os padrões circulares são

conhecidos, as suas áreas aproximadas (em número de pixels) podem ser determinadas. Assim sendo,

o limiar é estabelecido de forma seja preservada na imagem uma quantidade suficiente de pontos de

forma a conter os padrões circulares. O único requisito deste passo é que os padrões circulares devem

estar contidos dentre as áreas de intensidade máxima na imagem, isto é, aparecer em cores próximas

da cor branca saturada.

Com a imagem binarizada, um processo de clusterização (Hammouda, 2000) é aplicado

identificando os agrupamentos de cor branca. Este processo de identificar os objetos claros em uma

imagem faz parte do pacote de processamento de imagens do LabVIEWTM. A Figura 87(a) mostra em

destaque os objetos encontrados.

Page 134: RICARDO ARTIGAS LANGER

117

(a) (b)

Figura 87 Objetos claros destacados da imagem.

Um filtro de partículas é então utilizado para eliminar os objetos muito grandes ou muito

pequenos com relação às dimensões aproximadas dos padrões circulares. Também são excluídos os

objetos cuja razão entre largura e altura esteja muito diferente da unidade. A Figura 87(b) mostra em

destaque os objetos resultantes.

Para cada um dos objetos encontrados, partindo do seus respectivos centros, são traçadas

linhas de busca como mostra a Figura 88(a) em intervalos de 18°, totalizando 20 linhas por objeto. O

perfil da intensidade dos pixels sob cada uma destas linhas é analisado para a identificação das

bordas. Para identificar uma borda, deve-se primeiramente definir um limiar de contraste, neste caso

ajustado para 40. Assim sendo, quando sob uma dada linha de busca, ocorre uma variação de

intensidade de mais de 40 unidades, contida dentro de 4 pixels, é detectada uma borda. Para aumentar

a imunidade a ruídos é aplicado um filtro mediano a cada 2 pixels sob as linhas de busca. As bordas

reconhecidas estão destacadas em azul claro na Figura 88(b).

(a) (b)

Figura 88 Reconhecimento de padrões circulares.

A média das posições de todas as bordas encontradas estabelece o centro do círculo que

interpola as bordas, para um dado objeto. Um fator de forma F que pondera o quão circular é um dado

objeto está definido nas equações (5.1) e (5.2), tal que

Page 135: RICARDO ARTIGAS LANGER

118

N

CBRc

N

ii

1 (5.1)

N

ii RcCBF

1

2 (5.2)

considerando

Bi : posição no plano da i ésima borda encontrada com relação ao canto superior

esquerdo da imagem (Top, Left) [ pixels];

N : quantidade de bordas encontradas no objeto;

C : posição no plano para o centro estimado do círculo que interpola as bordas;

Rc : raio estimado do círculo que interpola as bordas.

Os dois objetos com fator de forma mais próximo de zero são os padrões circulares buscados.

Também pode-se casar as informações de raio e distância dos círculos para aumentar a robustez do

sistema ou no caso de existir mais de um robô na imagem. Todo este processo de reconhecimento do

robô baseado em características geométricas leva 8ms para ser concluído (±1ms a 95% de confiança).

A Figura 89 mostra em azul os padrões circulares reconhecidos pelo processo.

Figura 89 Padrões circulares reconhecidos.

5.2 Estimação do Modelo Real do Robô

O primeiro passo para conduzir os ensaios é determinar a taxa de amostragem do sistema.

Analisando o tempo gasto por cada um dos processos que são executados dentro do laço de controle

tem-se: 10ms para a atualização interna do PWM, 8,3ms para a comunicação serial, 33ms para a

aquisição de cada imagem pela câmera, 8ms para o processamento da imagem e aproximadamente

10ms para processar o controlador. Considerando estes valores, percebe-se que, mesmo com alguns

Page 136: RICARDO ARTIGAS LANGER

119

destes processos sendo executados em paralelo, é impossível, com estes recursos, obter um intervalo

de amostragem inferior a 50ms. Adotando 100ms como intervalo de amostragem percebe-se que o

atraso que ocorre entre a aquisição da imagem e a chegada dos sinais de controle no robô aproxima-

se de 50% do período de amostragem. Utilizando um intervalo de amostragem maior, pode-se

aumentar a margem de fase do sistema, pois, como o tempo de resposta da câmera mantém-se

constante, o atraso relativo ao período de amostragem diminui. Entretanto, como todos os

controladores mostram-se estáveis em simulação, manteve-se 100ms nos experimentos em tempo

real.

Para o processo de identificação dos modelos, o controle pode ser realizado em malha aberta e

o processamento das imagens pode ser feito offline. Dessa forma, o único gargalo do sistema é a taxa

de aquisição das imagens. Assim sendo, todos os experimentos desta seção são conduzidos à taxa de

33Hz.

Um processo de identificação é utilizado para determinar os parâmetros de ganho e constante

de tempo dos motores do robô segundo a equação (1.6). Para isso, um sinal em forma de degrau é

aplicado em ambos os motores e o deslocamento do robô é capturado pela câmera. A partir das

posições e orientações atingidas pelo robô ao longo do tempo pode-se estimar as velocidades em cada

uma das suas rodas. Um filtro digital tipo Butterworth de segunda ordem com 15Hz de freqüência de

corte é utilizado para eliminar os ruídos da taxa de aquisição.

Uma interpolação circular é utilizada para, partindo das posturas consecutivas do robô, estimar

as velocidades das suas rodas. O ponto geométrico onde as retas perpendiculares à orientação do robô

se cruzam é o centro do círculo que interpola a trajetória. Quando o robô acelera ou desacelera, os

raios de curvatura mudam de um instante para o próximo, assim sendo, a média aritmética dos raios

de curvatura é utilizada para aproximar o valor real. A metade da distância entre as rodas é então

somada e subtraída do raio de curvatura da trajetória do robô para determinar as velocidades das

rodas esquerda e direita respectivamente. A Figura 90 ilustra o procedimento.

Figura 90 Procedimento para estimar as velocidade dos motores.

O equacionamento para estimar as velocidades pode ser visto a seguir em um pseudo código.

Caso o robô esteja movendo-se em linha reta, usa-se a equação (5.3), caso contrário, a equação (5.4) é

adotada.

Page 137: RICARDO ARTIGAS LANGER

120

Assumindo:

kXkCakYkClkatg

kCa1

se

Ca(k) = Ca(k 1)

então

tr

kYkYkXkXqq rl 2

11 22 (5.3)

senão

tr

kCakCa

kCakCaatgRC

qq rl

111

, (5.4)

fim se

onde

2

11 2222 PykYPxkXPykYPxkXC

sendo

111

1kClkCaPxPy

kCakCa

kClkClPx

Ca(k) : coeficiente angular da reta normal à orientação ro robô no instante k;

Cl(k) : coeficiente linear da reta normal à orientação ro robô no instante k;

Aplicando um degrau de valor igual a 10V em ambos os motores, são medidos 14,5rad/s como

valor médio de amplitude em regime da resposta do sistema. O ganho dos motores é dado como

sendo a razão entre o valor da amplitude do degrau e o valor da amplitude em regime da velocidade

dos motores (Ogata, 2004). A Figura 91 mostra as curvas consideradas.

Figura 91 Resposta ao degrau dos motores do robô.

O cursor azul destaca o ponto de 63% da amplitude em regime dos sinais de saída. Este ponto é

usado para identificar a constante de tempo dos motores (Ogata, 2004). Os valores obtidos na

identificação foram:

Page 138: RICARDO ARTIGAS LANGER

121

Tr, Tl : 0,12 [ segundos ];

Kr, Kl : 1,45 [ radianos / ( Volts x segundo ) ].

A Figura 92 mostra uma comparação entre o sistema real e o modelo de primeira ordem

estimado quanto a resposta à um degrau de 6V de amplitude.

Figura 92 Comparação entre o sistema real e o modelo estimado.

Este processo é repetido com sinais de diversas amplitudes, porém sempre na forma de degrau,

para verificar a linearidade do sistema. Com estas informações podem ser traçadas as curvas da

amplitude da resposta do sistema e do ganho em função da amplitude do degrau aplicado. A Figura

93 mostra as curvas obtidas.

(a) (b)

Figura 93 Linearidade do sistema.

Percebe-se através desta figura a existência de uma região de zona morta no intervalo [ 0,5V e

0,5V]. Esta região pode prejudicar o correto funcionamento do controlador baseado em lógica fuzzy,

uma vez que, durante as manobras de estacionamento, são usados pequenos valores nos sinais de

controle. Ainda na Figura 93(b) nota-se que a resposta dos motores não é exatamente igual para sinais

Page 139: RICARDO ARTIGAS LANGER

122

positivos e negativos. Com amplitudes próximas de 2V, também são verificados sobre-sinais nas

velocidades dos motores, o que é um comportamento desprezado pelo modelo de primeira ordem

considerado para o robô móvel. Isto se deve ao atrito dinâmico do conjunto ser menor em baixas

velocidades, caracterizando o início do efeito stick slip.

5.3 Resultados Experimentais

Considerando os parâmetros identificados na seção anterior, cada um dos controladores foi

testado em um ambiente real com obstáculos. O planejamento da trajetória foi realizado pelo

algoritmo K Bug. Da mesma forma que para os resultados em simulação dos capítulos anteriores,

também são apresentados os critérios RMS do erro de trajetória e desvio padrão dos sinais de controle.

O ângulo inicial para o ambiente 1 é de 30o e para o ambiente 2 é de 90o. A posição de origem da

trajetória é demarcada com um ponto verde, a de destino com um ponto vermelho. O primeiro

ambiente é composto por apenas um obstáculo. Neste ambiente um waypoint intermediário é inserido

na posição X = 0,55 e Y = 0,0 de forma a obrigar o robô a contornar o obstáculo. O segundo ambiente

é composto por três obstáculos de tamanhos e formas diferentes demarcados pelas linhas azuis. Em

todos os casos, o centro do sistema de coordenadas, isto é, o ponto X = 0,0 e Y = 0,0 encontra-se no

centro da imagem.

5.3.1 Controlador PID O critério para a comutação dos waypoints utilizado foi a distância devido ao seu melhor

desempenho nos ensaios em simulação.

Como demonstrado no Capítulo 3, para o controle PID o ângulo de estacionamento não é

levado em consideração. Os parâmetros ajustados, segundo as equações (3.7) e (3.8), foram:

Tabela 8 Ganhos utilizados para o controlador PID em simulação.

Kp Ki Kd

Linear Kpl : 0,50 Kil : 0,10 Kdl : 0,10

Angular

Kp

: 2,50 Ki

: 0,40 Kd

: 0,10

5.3.1.1 Ambiente 1 A trajetória planejada e percorrida é mostrada na Figura 94. O robô parte da posição (-0,6 ; 0,0)

passa pelo waypoint (0,55 ; 0,0) e atinge o destino em (-0,45 ; 0,45).

Page 140: RICARDO ARTIGAS LANGER

123

Figura 94 Trajetória percorrida em tempo real pelo controlador PID para o ambiente 1.

Na Figura 95 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,221 e 0,158 respectivamente.

Figura 95 Posição atual e referências em função do tempo para o controlador PID em tempo real para o ambiente 1.

Os sinais de controle aplicados nos motores são apresentados na Figura 96. O desvio padrão

calculado para estes sinais de controle foram 1,16 para o motor esquerdo e 1,08 para o motor direito.

Figura 96 Sinais de controle para o controlador PID em tempo real para o ambiente 1.

Page 141: RICARDO ARTIGAS LANGER

124

5.3.1.2 Ambiente 2 A trajetória percorrida e planejada é mostrada na Figura 97.

Figura 97 Trajetória percorrida em tempo real pelo controlador PID para o ambiente 2.

Na Figura 98 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,070 e 0,096 respectivamente.

Figura 98 Posição atual e referências em função do tempo para o controlador PID em tempo real para o ambiente 2.

Os sinais de controle aplicados nos motores são apresentados na Figura 99.

Figura 99 Sinais de controle para o controlador PID em tempo real para o ambiente 2.

Page 142: RICARDO ARTIGAS LANGER

125

O desvio padrão calculado para estes sinais de controle foram 3,02 para o motor esquerdo e

3,25 para o motor direito.

5.3.2 Controlador Baseado em Lógica Fuzzy Nesta seção apresenta-se o desempenho em tempo real do controlador baseado em lógica Fuzzy

descrito no capítulo 3. Este controlador é o único, dentre os apresentados neste trabalho, que é capaz

de levar em consideração o ângulo de estacionamento do robô, atingindo o ponto de destino com uma

orientação controlada.

O critério para a comutação dos waypoints utilizado é por distância para que seja possível

visualizar as manobras de aproximação do robô em cada waypoint. De forma a diminuir o erro

angular e melhor adequar o controlador ao modelo do robô, as funções de pertinência foram alteradas

com relação ao controlador utilizado nos ensaios em simulação apresentados no capítulo 3. A Figura

100 mostra as funções de pertinência para os erros em X e Y. A Figura 101 mostra as funções de

pertinência para a velocidade angular e a Figura 102 para a velocidade linear. As funções de

pertinência para os erros de orientação foram mantidas iguais às utilizadas em simulação.

Figura 100 - Funções de pertinência para os erros em X e Y utilizadas no controlador em tempo real.

Figura 101 - Funções de pertinência para a velocidade angular controlador em tempo real.

Page 143: RICARDO ARTIGAS LANGER

126

Figura 102 - Funções de pertinência para os erros em X e Y utilizadas no controlador em tempo real.

5.3.2.1 Ambiente 1 A trajetória percorrida e planejada é mostrada na Figura 103. O ângulo de estacionamento

utilizado no experimento é de 90o com relação à horizontal.

Figura 103 Trajetória percorrida em tempo real pelo FLC para o ambiente 1.

Na Figura 104 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,349 e 0,188 respectivamente.

Page 144: RICARDO ARTIGAS LANGER

127

Figura 104 Posição atual e referências em função do tempo para o FLC em tempo real no o ambiente 1.

Os sinais de controle aplicados nos motores são apresentados na Figura 105. O desvio padrão

calculado para estes sinais de controle é 2,39 para o motor esquerdo e 2,13 para o motor direito.

Figura 105 Sinais de controle para o FLC em tempo real para o ambiente 1.

5.3.2.2 Ambiente 2 A trajetória percorrida e planejada é mostrada na Figura 106. O ângulo de estacionamento

utilizado neste experimento foi de 180o com relação à horizontal.

Figura 106 Trajetória percorrida em tempo real pelo FLC para o ambiente 2.

Page 145: RICARDO ARTIGAS LANGER

128

Na Figura 98 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,207 e 0,204 respectivamente.

Figura 107 Posição atual e referências em função do tempo para o FLC em tempo real para o ambiente 2.

Os sinais de controle aplicados nos motores são apresentados na Figura 108. O desvio padrão

calculado para estes sinais de controle é 2,36 para o motor esquerdo e 2,41 para o motor direito.

Figura 108 Sinais de controle para o pelo FLC em tempo real para o ambiente 2.

5.3.3 Controlador Preditivo A seguir são apresentados os experimentos utilizando o controlador preditivo descrito no

capítulo 4. Este controlador utiliza uma lei de controle mais elaborada que o controlador PID, o que

resulta em erros menores entre a trajetória planejada e percorrida, porém, não leva em consideração o

ângulo de estacionamento do robô, como no controlador fuzzy.

O critério para a comutação dos waypoints utilizado foi por tempo, pois é o único possível para

este controlador.

5.3.3.1 Ambiente 1 A trajetória percorrida e planejada é mostrada na Figura 109.

Page 146: RICARDO ARTIGAS LANGER

129

Figura 109 Trajetória percorrida em tempo real pelo controlador preditivo para o ambiente 1.

Na Figura 110 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,118 e 0,055 respectivamente.

Figura 110 Posição atual e referências em função do tempo para o controlador preditivo em tempo real para o ambiente 1.

Os sinais de controle aplicados nos motores são apresentados na Figura 111. O desvio padrão

calculado para estes sinais de controle foram 2,70 para o motor esquerdo e 2,95 para o motor direito.

Figura 111 Sinais de controle para o controlador preditivo em tempo real para o ambiente 1.

Page 147: RICARDO ARTIGAS LANGER

130

5.3.3.2 Ambiente 2 A trajetória percorrida e planejada é mostrada na Figura 112.

Figura 112 Trajetória percorrida em tempo real pelo controlador preditivo para o ambiente 2.

Na Figura 113 estão as posições do robô com relação aos eixos X e Y. Os valores de RMSX e

RMSY são 0,051e 0,100 respectivamente.

Figura 113 Posição atual e referências em função do tempo para o controlador preditivo em tempo real para o ambiente 2.

Os sinais de controle aplicados nos motores são apresentados na Figura 114. O desvio padrão

calculado para estes sinais de controle foram 2,42 para o motor esquerdo e 2,77 para o motor direito.

Figura 114 Sinais de controle para o controlador preditivo em tempo real para o ambiente 2.

Page 148: RICARDO ARTIGAS LANGER

131

Capítulo 6 Conclusões e Trabalhos Futuros

6.1 Conclusões

O escopo deste trabalho encontra-se dentro de um ramo da robótica designado robótica móvel,

que enfoca os robôs capazes de se deslocar por conta própria. As aplicações práticas em robótica

móvel requerem a análise de diversos fatores, incluindo-se o conhecimento do modelo, técnicas de

sensoriamento, a representação espacial do robô e do seu ambiente, sistema de controle, navegação e

planejamento de trajetória. Com isso, os robôs móveis são uma promissora plataforma para aplicação

e validação de técnicas de controle novas ou consolidadas em diferentes áreas da engenharia, tais

como programação em tempo real e visão computacional. Para atender a estes objetivos, a

multidisciplinaridade se faz necessária. Os conceitos de mecânica, elétrica/eletrônica e computação

são integrados para dar suporte à esta área.

O segundo capítulo da dissertação apresentou um estudo sobre métodos de planejamento de

trajetórias que podem ser usados em robôs móveis. Ao final deste capítulo é proposto um método

novo, que une vantagens dos métodos tradicionais e tenta explorar ao máximo as informações a

respeito da geometria dos obstáculos quando estas estão disponíveis. Tal algoritmo, denominado de

K-Bug, pode ser utilizado tanto para melhorar o desempenho de métodos de busca locais quanto como

uma técnica de planejamento global de trajetórias. Quando comparado com métodos consagrados da

literatura, o K-Bug mostrou-se eficiente, pois foi o algoritmo de menor esforço computacional

implementado. Levando em consideração a informação global do ambiente, o algoritmo proposto

mostrou-se robusto o suficiente para gerar trajetórias viáveis mesmo para ambientes que geralmente

apresentam problemas de mínimos locais para os métodos clássicos, a citar por exemplo os campos

potenciais e os algoritmos genéticos.

O algoritmo K Bug se mostrou promissor principalmente para ambientes estáticos. Apesar de

não ter sido fornecida nenhuma prova matemática da otimização dos resultados, todos os testes

realizados geraram trajetórias muito próximas das geradas pelo A*. Além disso, o K Bug não

necessita decompor o ambiente, como é necessário nos métodos de busca enumerativos como o A*.

Page 149: RICARDO ARTIGAS LANGER

132

As operações de decomposição em células, grafos de visibilidade e diagramas de Voronoi, estas

ferramentas bastante usadas para tal fim, são tão custosas computacionalmente que, em alguns casos,

superam o processamento do próprio algoritmo de busca. O tempo computacional gasto para

processar os ambientes pelo algoritmo K Bug foi inferior a todos os demais métodos estudados. Este

baixo tempo computacional permitiu a sua implementação com sucesso em tempo real.

Nos capítulos 3 e 4 foram apresentados três controladores diferentes para realizar o seguimento

da trajetória planejada, um controlador PID, um controlador baseado em lógica fuzzy e um

controlador preditivo baseado em modelo. O controlador PID foi o de concepção mais simples, menor

custo computacional e menor complexidade de implementação. O controlador fuzzy foi o que

apresentou o maior número de parâmetros a serem sintonizados, porém a sua sintonia é feita através

de termos lingüísticos amigáveis. A base de regras proposta mostrou-se adequada para controlar o

seguimento da trajetória do robô móvel e também o seu ângulo de aproximação em cada waypoint. O

controlador preditivo apresentou o melhor desempenho, porém possui o maior custo computacional.

O modelo linear do robô móvel mostrou-se suficientemente adequado para que o controlador

preditivo fosse capaz de controlar a sua trajetória tanto em simulação quanto em tempo real. Alguns

ensaios foram conduzidos com o intuito de inserir restrições, em amplitude e variação, nas variáveis

de controle, porém o seu alto custo computacional tornou impeditiva a sua utilização em tempo real e

esta opção não foi considerada nesta dissertação.

O controlador fuzzy apresenta uma característica diferente dos demais controladores

apresentados, pois este consegue produzir trajetórias de estacionamento afastando-se da referência em

determinadas situações. Para que o robô executasse trajetórias de estacionamento utilizando os

controladores PID ou preditivo é necessário um planejamento executado a priori, podendo estas

referências de aproximação serem inseridas como waypoints intermediários

Através da configuração adequada da sua base de regras do controlador baseado em lógica

Fuzzy foi possível fazer com que o robô se aproximasse do ponto de destino com uma orientação

controlada sem ser necessário qualquer alteração nas trajetórias planejadas. Neste trabalho, foram

considerados valores constantes para o raio das curvas de aproximação. Entretanto, nada impede que

os valores dos erros de posição sejam escalados em função do tamanho do robô, o que torna o

controle invariante com as dimensões do robô ou do ambiente. Para modelos com diferentes

parâmetros dinâmicos faz-se necessário reconfigurar apenas as funções de pertinência, mantendo as

tabelas de inferência.

A plataforma de simulação apresentada no capítulo 3 e 4 foi capaz de simular o modelo do

robô móvel utilizado e, através de diferentes algoritmos de planejamento e controle de trajetórias,

também simulou a contento o controle do robô. Os experimentos com diferentes combinações de

algoritmos de planejamento e controle e cada um dos algoritmos foram customizados com relação aos

seus parâmetros. Mesmo no controlador fuzzy, que possui mais de 50 parâmetros, todos podem ser

escolhidos pelo usuário.

Page 150: RICARDO ARTIGAS LANGER

133

Assim sendo, a plataforma de simulação pode ser utilizada também para fins didáticos, pois

além de permitir uma grande diversidade de combinações de controladores, planejadores e modelos, a

sua interface gráfica e os recursos visuais são amigáveis mesmo para alunos de engenharia que

estejam iniciando o aprendizado relativo a sistemas controle.

A implementação em tempo real apresentada no capitulo 5 averiguou a viabilidade dos

algoritmos estudados. O sistema de controle do robô móvel proposto alcançou os objetivos desejados

pois, com maior ou menor grau de otimização, atendeu aos requisitos de planejar e controlar a

trajetória de um robô móvel com uma câmera aérea, comprovando ser viável a utilização de sistemas

de visão computacional para determinar a posição de robôs móveis. O fato de existir apenas um laço

na malha de controle facilitou a implementação prática tanto quanto ao software quanto ao hardware.

Nesta abordagem não há sensores que provoquem um aumento acumulativo de erros de medição, tais

como giroscópios, acelerômetros ou encoders. Como a câmera fornece a posição absoluta do robô, o

desempenho do sistema apresentado não é alterado com o passar do tempo, como acontece em

sistemas que utilizam sensores inerciais.

Todo o sistema foi implementado com uma concepção modular, portanto, qualquer uma das

suas partes pode ser facilmente substituída. A câmera e o sistema de transmissão e recepção via rádio

são padrões comuns encontrados no mercado nacional, podendo serem substituídos sem quaisquer

alteração de software ou hardware. Até o robô pode ser substituído, desde que seja mantida a sua

tração diferencial, apenas é necessária a sintonia dos controladores para os novos parâmetros

cinemáticos e dinâmicos.

6.2 Trabalhos Futuros

O funcionamento do algoritmo de planejamento de trajetórias proposto neste trabalho, o K

Bug, é diretamente influenciado pelo método que é usado para determinar o lado que será usado para

contornar um dado obstáculo. Em futuras pesquisas propõe-se experimentar configurações de outros

parâmetros ao invés do perímetro na determinação do lado a ser escolhido. Um exemplo seria

verificar o centro de massa de cada uma das metades do obstáculo. A metade cujo centro de massa

possui a menor distância até a reta origem destino e do ponto de origem será levada em consideração.

Uma nova linha para futuras pesquisas está no estudo da convergência do algoritmo. Espera-se

comprovar que o K Bug gera caminhos válidos para quaisquer ambientes, desde que um caminho até

o destino exista. Também propõe-se estudar a viabilidade do K-Bug em ambientes dinâmicos, porém,

sabe-se que a geração de trajetórias para estes ambientes envolve também o controlador empregado,

pois de nada adianta determinar trajetórias válidas sem um controlador capaz de percorrê las no

momento correto, de forma a evitar os obstáculos que se deslocam.

Page 151: RICARDO ARTIGAS LANGER

134

Em trabalhos futuros espera-se verificar a estabilidade dos controladores apresentados nesta

dissertação e, caso esta não se aplique em todos os casos, determinar quais são as situações limites e

quais as condições para a sua ocorrência.

Também pode-se utilizar estratégias de controle híbridas, alternando comportamentos do

controle PID, fuzzy e preditivo, ou ainda de forma integrada em um mesmo controlador. Para os

controladores com maior custo computacional, já existem estudos (Camacho e Bordons, 2004; Lages

et al., 2001; Seyr et al., 2005) sobre a utilização de redes neurais para agilizar o processo do cálculo

da lei de controle. Uma rede neural pode ser treinada para reproduzir o comportamento de um dado

controlador e então ser aplicada no sistema real substituindo o mesmo.

Neste trabalho, apenas os parâmetros do controlador PID foram determinados através de um

algoritmo de otimização, a Evolução Diferencial. As trajetórias de estacionamento do controlador

fuzzy, que afastam o robô da referência, tornam a determinação de uma função de custo que avalie a

trajetória percorrida pelo robô uma tarefa nada trivial. A grande quantidade de parâmetros do

controlador também dificultam a sua sintonia por métodos numéricos que não levam em consideração

a experiência do operador. Para trabalhos futuros propõe-se o estudo de técnicas de otimização com

múltiplos objetivos para sintonizar o controlador fuzzy de forma automática, baseada nos modelos de

simulação.

No sistema de controle em tempo real podem ser adicionados mais robôs móveis, desde que

todos estejam visíveis para a câmera. Pode-se, como é comum neste tipo de aplicação, utilizar

câmeras coloridas ou diferenças geométricas para identificar os robôs. Esta abordagem abre frentes de

trabalho novas para o estudo de técnicas de cooperação de robôs.

Outra área a ser estudada seria o desenvolvimento de algoritmos para a determinação

automática dos obstáculos do ambiente. Neste trabalho, os obstáculos são pre-selecionados

manualmente sobre a imagem da câmera. Isto impede de considerar ambientes dinâmicos nos

algoritmos de planejamento e controle. Com um sistema que seja capaz de determinar online a

posição e forma dos obstáculos seria possível, por exemplo, desviar de uma pessoa que estivesse

passando pelo caminho do robô móvel.

O fato de existir apenas um laço na malha de controle facilitou a construção do sistema, porém,

para aumentar a precisão da movimentação e melhorar o desempenho dos controladores quanto a

perturbações externas, pode-se adicionar outras formas de sensoriamento, conectadas a laços mais

internos de controle. Pode-se utilizar sistemas de medição inercial, odometria, sensores ultra sônicos,

células de carga, entre outros. Sistemas de medição que utilizam sensores inerciais e encoders

possuem incertezas características, como escorregamento e bias. Porém, estes sensores podem

contribuir fechando um laço de controle de velocidade local no robô, de forma transparente para o

controlador de alto nível, que terá a sua topologia simplificada. Os sensores ultra-sônicos podem

ajudar a evitar obstáculos dinâmicos e células de carga podem informar alterações na dinâmica do

robô, como por exemplo uma alteração na sua massa devido ao aumento da sua carga transportada.

Page 152: RICARDO ARTIGAS LANGER

135

Bibliografia

Abidi, M. A.; Gonzales, R. C. (1992) Data Fusion in Robotics and Machine Intelligence. Academic Press Professional, Inc. San Diego, CA, USA.

Agirrebeitia, J.; Avile s R.; Bustos, I. F.; Ajuria, G. (2005) A New APF Strategy for Path Planning in Environments with Obstacles, Mechanical Engineering Department, University of the Basque Country, Alameda de Urquijo, Bilbao, Spain.

Ahn, C.W.; Ramakrishna, R. S. (2003) Elitism-Based Compact Genetic Algorithms. IEEE Transactions on Evolutionary Computation, vol. 7, no. 4, pp. 367 385.

Alamir, M.; Sheibat Othman, N.; Othman, S. (2007) Constrained Nonlinear Predictive Control for Maximizing Production in Polymerization Processes. IEEE Transactions on Control Systems Technology, vol. 15, no. 2, pp. 315 323.

Almeida, A. D. V. de (2005) B Spline: CEAP

Algoritmos Culturais para a Geração de Trajetórias B Spline de Robôs Móveis. Dissertação de Mestrado do Programa de Pós Graduação em Engenharia de Produção e Sistemas. PUC PR, Curitiba, PR.

Amidi, O. (1990) Integrated Mobile Robot Control. Carnegie Mellon University, Robotic Institute. Technical Report. Pittsburgh, USA.

Antonelli, G.; Chiaverini, S.; Fusco, G. (2007) A Fuzzy Logic Based Approach for Mobile Robot Path Tracking. IEEE Transactions on Fuzzy Systems, vol. 15, no. 2, pp. 211-221.

Aracil, R.; Garcia, N.; Perez, C.; Sabater, J.M.; Azorn, J.M.; Reinoso, O.; Saltaren, R. (2005) Perfermance Analysis of a Continuous Vision Based Control System for the Navigation of a Mobile Robot. 16o IFAC World Congress. Prague, Czech Republic.

Asami, S. (1994) Robots in Japan: Present and Future. IEEE Robotics and Automation Magazine, vol. 1, no. 2, pp. 22 26.

Åström, K.J. (1970) Introduction to Stochastic Control Theory, New York: Academic Press.

Åström, K.J.; Wittenmark, B. (1997) Computer-Controlled Systems: Theory and Design. 3rd ed. Prentice-Hall, Inc. Upper Saddle River, NJ, USA.

Bäck, T.; Hammel, U.; Schwefel, H.P. (1997) Evolutionary Computation: Comments on the History and Current State, IEEE Transactions on Evolutionary Computation, vol. 1, no. 1, pp. 3 17.

Bäck, T.; Schwefel, H.; (1993) An Overview of Evolutionary Algorithms for Parameter Optimization. Journal of Evolutionary Computation, vol. 1, no. 1, pp. 1 23.

Bender, E. A. (1996) Mathematical Methods in Artificial Intelligence. IEEE Computer Society Press.

Berardinis, L. A. (1992) Clear Thinking On Fuzzy Logic. Machine Design. pp. 46-52.

Bishop, R. H. (2003) Learning With LabVIEW 7 Express, Prentice Hall.

Page 153: RICARDO ARTIGAS LANGER

136

Brand, V.C.; Paulis, C.W.; da Silva, M.V.G.; van Kaick, O.M.; Schwartz, W.R.; Pedrini, H. (2002) Um Algoritmo Eficiente para Rastreamento de Objetos em Futebol de Robôs. EVINCI

UFPR,

Curitiba, PR.

Buckland, M.; Collins, M. (2002) AI Techniques for Game Programming. Premier Press. Portland, OR, USA.

Camacho, E. F.; Bordons, C. A. (2004) Model Predictive Control. Springer-Verlag New York, Inc. Secaucus, NJ, USA.

Casacurta, A; Osório, F; Figueroa, F; Musse, S: (1998) Apostila de Computação Gráfica. UNISINOS Centro de Ciências Exatas e Tecnológicas Informática. São Leopoldo, RS.

Chang, Shih Jie; Li, Tzuu Hseng; (2002) Design and Implementation of Fuzzy Parallel Parking Control for a Car Type Mobile Robot. Journal of Intelligent and Robotic Systems. vol. 34, no. 2, pp. 175 194.

Chenney, S. (2005) Computer Game Technology. Acesso em 04/2005: http://www.cs.wisc.edu/~schenney/courses/cs638 f2001/

Clarke, D. W.; Mohtadi, C.; Tuffs, P. S. (1987) Generalized Predictive Control

Part I. The Base Algorithm. Automatica. vol. 23, no. 2, pp. 137-148.

Comitê de Promoção da Indústria de Desenvolvimento de Jogos Eletrônicos no Brasil. (2006). Plano Diretor da Promoção da Indústria de Desenvolvimento de Jogos Eletrônicos no Brasil. Associação Brasileira de Desenvolvedores de Jogos Eletrônicos.

Cuesta, F.; Ollero, A.; Arrue, B.C.; Braunstingl, R.(2003) Intelligent Control of Nonholonomic Mobile Robots with Fuzzy Perception. Fuzzy Sets and Systems, vol. 134, no. 1, pp. 47-64.

Curie, A. (1999) Acesso em março de 2007. http://www.faculty.ucr.edu/~currie/roboadam.htm

Cutler, C. R.; Ramacker, B. L. (1980) Dynamic Matrix Control: a Computer Control Algorithm. IEEE Joint Automatic Control Conferente, San Francisco, CA, USA.

Dubois, D.; Prade, H. (1980). Fuzzy Sets and Systems

Theory and Applications. Academic Press, USA.

Dudek, G.; Jenkin, M. (2000) Computational Principles of Mobile Robotics. New York: Cambridge University Press.

Dynamic Optimization Technologi Products (1996) Technical Description of NOVA Nonlinear Controller. Hydrocarbon Processing, Issue on Advanced Control and Information Systems, Houston, TX, USA.

Essen, H. V.; Nijmeijer, H. (2001) Non-linear Model Predictive Control of Constrained Mobile Robots. Proceedings of the European Control Conference, pp. 1157 1162, Porto, Portugal.

Feng, G. (2006) A Survey on Analysis and Design of Model Based Fuzzy Control Systems IEEE Transactions on Fuzzy Systems, vol. 14, no. 5, pp. 676 697.

Ferentinos, K.P.; Arvanitis, K.G.; Sigrimis, N. (2002) Heuristic Optimization Methods for Motion Planning of Autonomous Agricultural Vehicles. Journal of Global Optimization, vol. 23, no. 2, pp. 155-170.

Foka, A. F.; Trahanias, P. E. (2003) Predictive Control of Robot Velocity to Avoid Obstacles in Dynamic Environments. Proceedings of the 2003 IEEE/RSJ. International Conference on Intelligent Robots and Systems, vol. 55, no. 7, pp. 561-571.

Franklin, G. F.; Powell, J. D.; Workman, M. L. (1990) Digital Control of Dynamic Systems. 2nd ed, Massachussets: Addison Wesley, USA.

Fu, K. S.; Gonzalez, R. C.; Lee, C. S. G. (1987) Robotcs: Control, Sensing, Vision and Intelligence. Ed. McGraw Hill, New York NY, USA.

Page 154: RICARDO ARTIGAS LANGER

137

Fuller, A.T. (1976) The Early Development of Control Theory. ASME

Dynamic Systems,

Measurement & Control. vol. 98G, no. 2, pp. 109 118.

Garcia, C. E.; Morshedi, A. M. (1986) Quadratic Programming Solution of Dynamic Matrix Control (QDMC). Chemical Engineering Communications, New York, NY, USA, pp. 73 87.

Garcia, C. E.; Prett, D. M.; Morari, M. (1989) Model Predictive Control: Theory and Practice

a

Survey. Automatica, New York, NY, USA, vol. 25, no. 3, pp. 335 348.

Gasparini, A. F. L. (2004) Infra Estrutura, Protocolos e Sistemas Operacionais de LANs

Redes Locais, Ed. Érica, São Paulo, SP.

Goldberg, D.E. (1989). Genetic Algorithms in Search Optimization and Machine Learning, Reading, MA: Addison-Wesley.

Goldberg, D.E. (1994) Genetic and Evolutionary Algorithms Come of Age, Communications of the ACM, vol. 37, no. 3, pp. 113-119.

Gómez-Ortega, J. (1994) Navegación en Móviles Basada en Técnicas de Control Predicitvo Neuronal. PhD thesis. Escuela Superior de Ingenieros, Universidad de Sevilla, Spain.

Gómez-Ortega, J.; Camacho, E. F. (1996) Mobile Robot Navigation in a Partially Structured Static Environment, Using Neural Predictive Control. 4th Control Engineering Practice, vol. 12, no. 12, pp. 1669-1679.

Gomide, F. A. C.; Rodrigues, C. C. (1994) Guiagem de Veículos Autônomos Utilizando Sensor de Visão. Anais do 10° Congresso Brasileiro de Automática, Rio de Janeiro, RJ, pp. 873 878.

Grimble, M. J.; Ordys, A. W. (2001) Predictive Control for Industrial Applications. Annual Reviews in Control. vol. 25, no. 5, pp. 13 24.

Gu , D.; Hu, H. (2005) A Stabilizing Receding Horizon Regulator for Nonholonomic Mobile Robots. IEEE Transactions on Robotics, vol. 21, no. 5, pp. 1022 1028.

Hammouda, K. (2000) A Comparative Study of Data Clustering Techniques. SYDE 625: Tools of Intelligent Systems Design. Course Project. University of Waterloo, Ontario, Canada.

Harden, T.A. (1997) The Implementation of Artificial Potential Field Based Obstacle Avoidance for a Redundant Manipulator. Ph.D. Thesis, University of Texas, Austin, USA.

Hart, P. E.; Nilsson, N. J.; and Raphael, B. (1968). A Formal Basic for the Heuristic Determination of Minimum Cost Paths. IEEE Transactions Systems, Man, and Cybernetics. vol. 4, no. 5, pp. 100-107.

Heinen, F. J. (2000). Robótica Autônoma: A Integração entre Planificação e Comportamento Reativo. Editora Unisinos, São Leopoldo, RS.

Honda (2000) Acesso em março de 2007. http://world.honda.com/ASIMO/

Horn, B. K. P. (1986). Robot Vision. MIT Press, Cambridge, USA.

Howard, A.; Tunstel, E.; Edwards, D.; Carlson, A. (2001) Enhancing Fuzzy Robot Navigation Systems by Mimicking Human Visual Perception of Natural Terrain Traversability. Joint 9th IFSA World Congress, Vancouver, BC, Canada, pp. 7-12.

Jain, A. K.; (1989) Fundamentals of Digital Image Processing. Prentice Hall, Inc. Upper Saddle River, NJ, USA.

Kalman, R. E. (1960) A New Approach to Linear Filtering and Prediction Problems. Transaction of the ASME - Journal of Basic Engineering, vol. 82D, no. 1, pp. 35-45.

Kambhampati, S.; Davis, L. (1986) Multiresolution Path Planning for Mobile Robots. IEEE Journal of Robotics and Automation, vol. RA-2, no.3, pp. 135-145.

Kamon, I.; Rivlin, E. (1997) Sensory Based Motion Planning with Global Proofs. IEEE Transactions on Robotics and Automation. vol. 13, no. 6, pp. 814-822.

Page 155: RICARDO ARTIGAS LANGER

138

Kathib, O. (1986). Real time Obstacle Avoidance for Manipulators and Mobile Robots. International Journal of Robotics Research. vol. 5, no. 1, pp. 90-98.

Keramas, J. G. (1999) Robot Technology Fundamentals. Delmar Publisher. Albany, USA.

Khosla, P.; Volpe, R. (1988) Superquadratic Artificial Potentials for Obstacle Avoidance and Approach, Proceedings of the IEEE Conference on Robotics and Automation, pp.1178-1784.

Klan ar, G.; krjanc I.(2007) Tracking Error Model Based Predictive Control for Mobile Robots in Real Time. Proceedings of Robotics and Autonomous Systems vol. 55, no. 6, pp. 460-469.

Krogh, B. H. (1984) A Generalized Potential Field Approach to Obstacle Avoidance Control, Proceedings of International Robotics Research Conference, Bethlehem, Pennsylvania, PA, USA.

Lages, W. F.; Oliveira, V. M.; de Pieri, E. R. (2001) Controle em Malha Fechada de Robôs Móveis Utilizando Redes Neurais e Transformação Descontínua. V Simpósio Brasileiro de Automação Inteligente. Canela, RS.

Lampinen, J.; Zelinka, I. (2000) On Stagnation of the Differential Evolution Algorithm. Proceedings of 6th International Mendel Conference on Soft Computing. Brno, Czech Republic. Institute of Automation and Computer Science. vol. 1, pp. 76-83.

Landau, E. (1909) Handbuch der Lehre von der Verteilung der Primzahlen. 2 vols. Leipzig: B. G. Teubner.

Latombe, J.C. (1991) Robot Motion Planning, Kluwer Academic Publishers, Norwell, MA, USA.

Lee, D.T.; Schachter, B.J. (1980) Two Algorithms for Constructing the Delaunay Triangulation. International Journal of Computer and Information Sciences, vol. 9, no. 3, pp. 219-242.

Lin Cai., Chen C.K., Chen, C.L. (1999) Path Planning and Dynamic Control of a Redundant Robot Manipulator for Conveyor Tracking, International Journal of Systems Science, vol. 30, no. 5, pp. 491-503.

Lin Cai; Rad, A. B.; Chan, Wai Lok (2007) A Genetic Fuzzy Controller for Vehicle Automatic Steering Control. IEEE Transactions on Vehicular Technology, vol. 56, no. 2, pp. 529-543.

Littman, M. L., Dean, T., Kaelbling, L. P. (1994) Markov Games as a Framework for Multi Agent Reinforcement Learning, Proceedings of the 9th International. Conference on Machine Learning, San Francisco, CA, pp. 157 163.

Lumelsky V. J.; Skewis T. (1990) Incorporating Range Sensing in the Robot Navigation Function, IEEE Transactions on Systems, Man and Cybernetics, vol. 20, no. 7, pp. 1058-1068.

Lumelsky V. J.; Stepanov, A. A. (1987) Path Planning Strategies for a Point Mobile Automaton Moving Amidst Obstacles of Arbitrary Shape, Algorithmica, vol. 2, pp. 403-430.

Lyapunov, M.A. (1907) Problème général de la stabilité du mouvement. Annales de la faculté des sciences de Toulouse, vol. 9, no. 2, pp. 203-474.

Ma, Y.; Kosecká, J.; Sastry, S. S. (1999) Vision Guided Navigation for a Nonholonomic Mobile Robot. IEEE Transactions on Robotics and Automation, vol. 3, no. 15, pp. 521-536.

Mahjoubi, H.; Bahrami, F.; Lucas, C. (2006) Path Planning in an Environment with Static and Dynamic Obstacles Using Genetic Algorithm: A Simplified Search Space Approach. 2006 IEEE Congress on Evolutionary Computation. Vancouver, BC, Canada, pp. 8853 8860.

Mamdani, E.; Assilian, S. (1975) An Experiment in Linguistic Synthesis with a Fuzzy Logic Controller, International Journal of Man Machine Studies, vol. 7, no. 1, pp. 1-13.

Mandow, A.; Gomes de Gabriel, J. M.; Martinéz, J. L.; Muñoz, V. F.; Ollero, A.; Garcia Cerezo, A. (1996) The Autonomous Mobile Robot AURORA for Greenhouse Operation. IEEE Robotics and Automation Magazine, vol. 1, no. 4, pp. 18-28.

Page 156: RICARDO ARTIGAS LANGER

139

Martin, G. (1997) Nonlinear Model Predictive Control with Integrated Steady State Model Based Optimization. Proceedings of the Alche National Meeting, Houston, TX.

Martínez Alfaro, H.; Gómez García, S. (1998) Mobile Robot Path Planning and Tracking Using Simulated Annealing and Fuzzy Logic Control. Expert Systems with Applications, vol. 15, no. 1, pp. 421-429.

Maxwell, J.C. (1868) On Governors. Proceedings of the Royal Society of London, vol. 16, pp. 270-283.

Mayne, D. Q.; Rawlings, C. V. R.; Scokaert, P. O. M. (2000) Constrained Model Predictive Control: Stability and Optimality. Automatica, vol. 36, no. 6, pp. 789-814.

Mclurkin, J. (1995) Using Cooperative Robots for Explosive Ordnance Disposal. Artificial Intelligence Laboratory, Massachussets Institute of Technology, Cambridge, MA, USA.

Mendel, J. M. (1995). Fuzzy Logic Systems for Engineering: A Tutorial. Processing for a Self Navigation Veicle. IEEE Transactions Industrial Eletronics. vol. 40, no. 1, pp. 145-154.

Minorsky, N. (1922) Directional Stability and Automatically Steered Bodies. Journal American Society Navigation Engineering, vol. 34, no. 2, pp. 280-309.

Mucientes, M.; Iglesias, R.; Regueiro, C.V.; Bugar, A.; Barro, S. (2003) A Fuzzy Temporal RuleBased Velocity Controller for Mobile Robotics. Fuzzy Sets and Systems, vol. 134, n. 1, pp. 83-99.

N.A.S.A. (1997) Mars Pathfinder. Jet Propulsion Laboratory, California Institute of Technology, Pasadena, CA, USA.

Nareyek, A. (2004) AI in Computer Games. ACM Queue, vol. 1, no. 10. Carnegie Mellon University.

Nehmzow, U. (2000) Mobile Robotics: A Practical Introduction. Springer. Londres.

Nguyen, H. T.; Walker, E. A. (2000) A first course in fuzzy logic. 2nd ed Boca Raton: Chapman & Hall.

Nilsson, N.J. (1969) A Mobile Automaton: an Application of Artificial Intelligence Techniques. Proceedings of the 1st International Joint Conference on Artificial Intelligence, pp. 509 520. Washington, DC, USA.

Normey Rico, J. E.; Gómez Ortega, J.; Camacho, E. F. (1999) A Smith-Predictor-Based Generalised Predictive Controller for Mobile Robot Path-tracking. Control Engineering Practice, vol. 7, no. 6, pp. 729-740. Pittsburgh, PA, USA.

Ogata, K. (2004) Engenharia de Controle Moderno. Prentice Hall. Quarta Edição.

Oliveira, G. H. C. (1997) Controle Preditivo para Processos com Incertezas Estruturadas baseado em Séries de Funções Ortonormais. Tese de Doutorado. Universite de Nice Sophia Antipolis, UNSA, França.

Oliveira, G. H. C.; Carvalho, J. R. H. (1999) Trajectory Tracking For Nonholonomic Mobile Robots using Predictive Methods. In: European Control Conference (ECC). Proceedings of the 5th Europen Control Conference. Karlshue, Germany.

Oliveira, G. H. C.; Carvalho, J. R. H. (2003) A non-linear predictive control scheme for nonholonomic mobile robots. Proceedings of the 7th IFAC on Symposium on Robot Control. Wroclaw, Polónia.

Ollero, A.; Amidi, O. (1991) Predictive Path Tracking of Mobile Robots. Applications to the CMU Navlab. Proceedings of the IEEE 5th International Conference on Advanced Robotics, p. 1081-1086, Pisa, Italy.

Ollero, A.; Garcia Cerezo, A.; Martinez, J. L. (1994) Fuzzy Supervisory Path Tracking of Autonomous Vehicles. Control Engineering Practice, vol. 2, no. 2, pp. 313-319.

Page 157: RICARDO ARTIGAS LANGER

140

Parker, J. R. (1997) Algorithms for Image Processing and Computer Vision. New York, NY, USA: Wiley Computer Pub.

Paula, B. C. De, (2004) Pesquisa Sobre Pathfinding e Path Planning, dissertação de mestrado, Programa de Pós-Graduação em Informática, PUC PR. Curitiba, PR.

Pazos, F. (2002).Automação de Sistemas e Robótica. Editora Axcel, Rio de Janeiro, RJ.

Qin, S. J.; Badgwell, T. A. (1997) An Overview of Industrial Model Predictive Control Technology. Proceedings of the 5th International Conference on Chemical Process Control, vol. 93, no. 316, pp. 232 256, Tahoe City, CA.

Ragazzini, J.R.; Franklin, G.F. (1958) Sampled Data Control Systems,: McGraw Hill, New York, NY, USA.

Ragazzini, J.R.; Zadeh, L.A. (1952) The Analysis of Sampled Data Systems, Trans. AIEE, vol. 71, no. 2, pp. 225-234.

Rashid, M. H. (1999) Eletrônica de Potência: Circuitos, Dispositivos e Aplicações. Makron Books, São Paulo, SP.

Rich, E. (1988) Inteligência Artificial. Ed. McGraw Hill, São Paulo, SP.

Richalet, J.; Rault, A.; Testud, J.L.; Papon, J. (1976) Algorithmic Control of Industrial Processes. 4th IFAC Symposium on Identification and System Parameter Estimation. pp. 1119 1167. Tbilisi, URSS.

Righes, E. R. (2004) Processamento de Imagens para Navegação de Robôs Autônomos. Monografia, Universidade do Vale do Rio dos Sinos, São Leopoldo, RS.

Routh, E.J. (1888) A Treatise on the Stability of a Given State of Motion. Macmillan & Co. London, UK.

Routledge, R. (1900) Discoveries & Inventions of the Nineteenth Century. 13ª edição.

Samsom, C.; AIT-Aberrahim, K.; (1990) Mobile Robot Control Part 1: Feedback control of a Nonholonomic Wheeled Cart in Cartesian Space. Institut National de Recherche en Informatique et en Automatic, France.

Sandi, F. S.; Hemerly, E. M.; Lages, W. F. (1998) Sistema para Navegação e Guiagem de Robôs Móveis Autônomos. SBA Controle & Automação. vol. 9, no. 3, pp. 107-110.

Santos, V. M. F.; (2001) Apostila de Robótica Industrial. Universidade de Aveiro, Portugal.

Schraff, R. D. (1994) Mechatronics and Robotics for Service Applications. IEEE Robotics and Automation Magazine. vol. 1, no. 4, pp. 31 35

Schwartz, D. G.; Klir, G. J. (1992) Fuzzy Logic Flowers In Japan. IEEE Spectrum, vol. 29, no. 7, pp. 32-35.

Sedra, A. S.; Smith, K. C. (1998) Microelectronic Circuits. 4th ed. Oxford University Press, New York, NY, USA.

Seyr, M.; Jakubek, S. (2005) Mobile Robot Predictive Trajectory Tracking. Proceedings of the Second International Conference on Informatics in Control, Automation and Robotics, pp. 112119. Barcelona, Spain.

Seyr, M.; Jakubek, S.; Novak, G. (2005) Neural Network Predictive Trajectory Tracking of an Autonomous Two-Wheeled Mobile Robot. Proceedings of the 16th IFAC World Congress, Prague, Czech Republic.

Preparata, F. P.; Shamos, M. I. (1985) Computational Geometry: an Introduction. Springer-Verlag New York, Inc. New York, NY, USA

Shaw, I. S.; Simões, M. G. (1999) Controle e Modelagem Fuzzy. E. Blücher, São Paulo, SP.

Page 158: RICARDO ARTIGAS LANGER

141

Siegwart, R; Nourbakhsh, I. (2004) Introduction to Autonomous Mobile Robots. MIT Press, Cambridge, Massachusetts, USA.

Sierakowski, C.A. Costa, A.C.P.L.; Coelho L. S.; (2004) Uma Comparação de Algoritmos Genéticos, Programação Evolucionária e Evolução Diferencial para Otimização de Trajetórias de Robôs Móveis. 2nd Encontro de Robótica Inteligente, Congresso da SBC, Salvador, BA.

Silva, C. A. S. (2001) Representations for Visual Perception and the Interpretation of Occlusions. Tese de Doutorado, Universidade Técnica de Lisboa, Departamento de Engenharia Eletrotécnica e de Computadores. Lisboa, Portugal.

Silveira, J.; Aude, E.; Martins, M. (1997) Trajectory Planning with Obstacle Avoidance within CONTROLAB. Workshop em Robótica Inteligente, Brasília DF.

Souza, D. J. (2003) Desbravando o PIC. 1a ed. São Paulo, SP: Erica.

Storn, R.; Price, K. (1997) Differential Evolution

A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces. Journal of Global Optimization. vol. 11, no.4, pp. 341 359.

Sujan, V. A.; Meggiolaro, M. A.; Belo, F. A. W. (2006) A New Technique in Mobile Robot Simultaneous Localization and Mapping. Revista Controle & Automação, vol. 17, n. 2, pp. 189203.

Takahashi, Y.; Komeda, T.; Koyama, H. (2004) Development of Assistive Mobile Robot System: AMOS. Advanced Robotics, vol. 18, no. 5, pp. 473-496.

Tsuji, T.; Tanaka, Y.; Morasso, P.G.; Sanguineti, V.; Kaneko, M. (2002) Bio mimetic trajectory generation of robots via artificial potential field with time base generator. IEEE Transactions on Systems, Man and Cybernetics Part C, vol. 32, no. 4, pp. 426-439.

Tu, J.; Yang, S. X. (2003) Genetic algorithm based path planning for a mobile robot. Proceedings of the IEEE International Conference on Robotics & Automation, Taipei, Taiwan, no. 3, pp. 1221-1226.

Vadakkepat P., Tan, C. K.. Ming Liang W. (2000). Evolutionary Artificial Potential Fields and their Application in Real Time Robot Path Planning, Proceedings of Congress of Evolutionary Computation, pp. 256 263, San Diego, CA, USA.

Vaneck, T. W. (1997) Fuzzy Guidance Controller for an Autonomous Boat. IEEE Control Systems. Prentice Hall, Englewood Cliffs, USA.

Xiao, J., Z. M., Zhang, L.; Krzysztof, T. (1997). Adaptive Evolutionary Planner/Navigator for Mobile Robots. IEEE Transactions on Evolutionary Computation, vol. 1, no. 1, pp. 18-28.

Yager, R. R.; Filev, D. P. (1994) Essentials of Fuzzy Modeling and Control. New York, NY, USA: John Wiley & Sons.

Yang, X.; He, K.; Guo, M.; Zhang, B. (1998) An Intelligent Predictive Control Approach to Path Tracking Problem of Autonomous Mobile Robot. Proceedings of the IEEE International Conference on Systems, Man and Cybernetics, San Diego, CA, USA.

Yao, X.; Liu, Y. Lin, G. (1999) Evolutionary programming made faster. IEEE Transactions on Evolutionary Computation, vol. 3, no. 2, pp. 82-102.

Zadeh, L. A (1965) Fuzzy Sets. Information and Control, vol. 8, pp. 338-353.

Zavlangas, P. G.; Tzafestas, S. G. (2003) Motion Control for Mobile Robot Obstacle Avoidance and Navigation: A Fuzzy Logic Based Approach. Systems Analysis Modeling Simulation. vol. 43, no. 12, pp. 1625-1637.

Zhang, H.; Ostrowski, J. P. (1999). Visual Servoing with Dynamics: Control of an Unmanned Blimp. In Proceedings of the IEEE International Conference on Robotics & Automation, vol. 1, pp. 618-623, Detroit, Michigan, USA.

Page 159: RICARDO ARTIGAS LANGER

142

Lista de Anexos

ANEXO A Diagrama elétrico do transmissor e receptor para o robô ANEXO B Memorial descritivo do projeto do hardware ANEXO C Código do micro-controlador do robô

Page 160: RICARDO ARTIGAS LANGER

143

ANEXO A - Diagrama elétrico do transmissor e receptor para o robô

Page 161: RICARDO ARTIGAS LANGER

144

ANEXO B - Memorial descritivo do projeto do hardware

1) Especificações Gerais

Módulo de controle de velocidade de dois motores DC de 9V/5.4W, com resolução de 100

níveis am ambos os sentidos de rotação;

Controle dos motores através de sinal PWM com freqüência de 20kHz;

Sinal de referência dos motores vindo do computador pela interface serial;

Comunicação entre o computador e o robô via rádio;

Atualização do sinal de referência dos controladores PWM a cada 10ms;

Alimentação com duas baterias de 9V;

2) Módulo Transmissor

a) Par Transmissor / Receptor

Conforme especificação do projeto deveria ser utilizado um par transmissor-receptor de dados

sem fio para a comunicação entre o robô e o computador controlador. Após uma pesquisa por

diversos componentes, optou-se por utilizar um par Rx/Tx comercial fabricado pela Telecontrolli, o

RR3 433.93 como receptor e o RT4 433.92 como transmissor. Tal escolha foi baseada em critérios de

custo, dimensões físicas, facilidade de compra e reposição, taxa de transmissão de dados, facilidade

de utilização, alcance e imunidade a ruídos.

A máxima taxa de transmissão conseguida foi de 2.4Kbps. Assim o projeto disponibilizou duas

taxas diferentes, 2.4Kbps e 1.2Kbps.

A alimentação do módulo transmissor é feita por uma bateria de 9V, uma vez que o

componente permite tensões de até 14V.

b) Conversor RS232-TTL

Para a conecção do transmissor a porta serial do computador, faz-se necessário um conversor

de níveis de tensão RS232 ( 9V) para TTL (0V a 5V). O componente da MAXIN tipo MAX-232 foi

usado para tal fim

3) Módulo Receptor/Controlador

a) Alimentação

A placa de circuito que é presa ao robô e alimentada com duas baterias de 9V em série,

resultando em uma tensão de entrada de 18V. A fonte de alimentação do robô prevê dois níveis de

Page 162: RICARDO ARTIGAS LANGER

145

tensão diferentes para atender aos requisitos dos componentes da placa receptora. A alimentação

principal é de 5V, que é obtida através do componente LM7805 diretamente das baterias.

A alimentação do circuito de potência e feita com um regulador série sem realimentação. A

tensão de entrada do regulador vinda diretamente das baterias poderia variar entre 18V e 14V sem

problema algum para o circuito de potência. A saída do regulador é uma tensão de 10.7V com uma

corrente máxima de 2A.

b) Microcontrolador e controle PWM

O microcontrolador escolhido foi o PIC16F74 da Microchip, pois inclui a comunicação serial,

dois módulos de controle PWM, módulos de temporização e memória tipo FLASH que permite escrita

e leitura de programa através de gravadores simples, facilitando o desenvolvimento do firmware.

Para a seleção da taxa de comunicação foi ligada uma chave diretamente na entrada RA0 do

microcontrolador. Um nível de tensão de 0V na inicialização do sistema provoca uma comunicação

em 1.2Kbps. Caso contrário a velocidade é de 2.4Kbps.

O circuito conta com um led indicador na cor verde para sinalizar o status da comunicação.

Quando o led estiver aceso, a conexão entre o robô e o computador foi estabelecida (depois do

Login), caso contrário o robô não atenderá aos comandos enviados pelo computador. O led é apagado

na inicialização ou quando o Logoff é recebido.

As saídas dos controladores PWM estão disponíveis nos pinos RC1/CCP2 e RC2/CCP1. Como

o sentido de rotação dos motores é bidirecional, foi necessário a adição de uma lógica multiplicadora

para poder comutar os sinais de controle entre as entradas do componente de acionamento. O

multiplicador CD4053 seleciona quais entradas da ponte H receberão os sinais do PWM.

c) Circuito de Potência

Para o acionamento dos motores foi usado o L298. Tal componente possui duas pontes H

embutidas funcionando de maneira independente. Sua capacidade de corrente máxima é de 2A por

motor e a tensão de alimentação é de até 37V. Os diodos que compõe as pontes H provocam uma

queda de no mínimo 1.7V. Dessa forma, para uma alimentação de 9V nos motores é necessário a

alimentação de no mínimo 10.7V.

Page 163: RICARDO ARTIGAS LANGER

146

ANEXO C - Código do micro-controlador do robô

ESTE FIRMWARE IMPLEMENTA O CONTROLE DE VELOCIDADE DE DOIS MOTORES DE UM ROBO ATRAVÉS DE DUAS SAÍDAS PWM. O CONTROLE DOS MOTORES É FEITO BASEADO EM PALAVRAS DE CONTROLE PROVENIENTES DE UMA INTERFACE SERIAL WIRELESS. ; O ROBO ESPERA POR UM LOGIN INICIAL QUE DEVERÁ SER ENVIADO PELO PC. ESTE LOGIN EQUIVALE À ;RECEPÇÃO DE PELO MENOS TRÊS PALAVRAS MORTAS (F0 H) E EM SEGUIDA UMA PALAVRA DE LOGIN (FA H). O ;LOGOFF SERÁ EFETUADO COM A RECEPÇÃO DE DUAS VEZES A PALAVRA DE LOGOFF (FF H). ; A VELOCIDADE DOS MOTORES VARIA EM 100 VALORES DIFERENTES EM AMBAS AS DIREÇÕES ; FRENTE: 27D = 0% 127D = 100%, TRÁS: 128D = 0% 228D = 100%

;************************************************************************************ ; ANTES DE GERAR ARQUIVO CÓDIGO, CONFIGURAR OS BITS DE CONFIGURAÇÃO DO PIC16F74 NO ; COMPILADOR CONFORME DESCRIÇÃO ABAIXO: ; OSCILLATOR: HS WDT: OFF PWR UP: OFF BOD: OFF CODE: OFF ;************************************************************************************ #INCLUDE <P16F74.INC> ;************************************************************************************ ; DECLARAÇÃO DAS VARIÁVEIS UTILIZADAS NO PROGRAMA. ;************************************************************************************ T1 EQU 0X20 T2 EQU 0X21 T3 EQU 0X23 DADO EQU 0X24 COUNTER EQU 0X25 VARI EQU 0X26 RES1 EQU 0X27 RES2 EQU 0X28 PWM1H EQU 0X29 PWM1L EQU 0X2A PWM2H EQU 0X2B PWM2L EQU 0X2C W_TEMP EQU 0X2E STATUS_TEMP EQU 0X2F PCLATH_TEMP EQU 0X30 FLAGS EQU 0X31 DADO1 EQU 0X32

ORG 0X00 ; ENDEREÇO DE RESET. NOP GOTO INIC ; DESVIA PARA INICIO DO PROGRAMA

;************************************************************************************ ; INTERRUPÇÃO, OCORRE A CADA 10MS GRACAS AO TIMER 1. ;************************************************************************************

ORG 0X04 BANKSEL PORTA ; SALVA VARIÁVEIS ANTES DE TRATAR INTERRUPÇÃO MOVWF W_TEMP SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TEMP MOVF PCLATH, W MOVWF PCLATH_TEMP CLRF PCLATH BANKSEL PIR1 ; LIMPA FLAG DE INTERRUPÇÃO CLRF PIR1 BANKSEL T1CON ; REINICIALIZA TIMER 1 BCF T1CON, 0 BANKSEL TMR1H MOVLW 0X3C MOVWF TMR1H MOVLW 0XCA MOVWF TMR1L BANKSEL T1CON BSF T1CON, 0

ATM1: BANKSEL PORTA ; ATUALIZA MOTOR 1 COM ULTIMOS VALORES RECEBIDOS MOVF PWM2H, W BANKSEL CCPR2L MOVWF CCPR2L BANKSEL CCP2CON MOVLW 0XCF ANDWF CCP2CON, F BANKSEL PORTA MOVF PWM2L, W BANKSEL CCP2CON IORWF CCP2CON, F BANKSEL PORTA BTFSC FLAGS, 2 ; TESTA FLAG DE DIREÇÃO DO MOTOR 1 GOTO FRN2 BCF PORTA, 2 ; DIREÇÃO = TRÁS GOTO ATM2

FRN2: BSF PORTA, 2 ; DIREÇÃO = FRENTE ATM2:

BANKSEL PORTA ; ATUALIZA MOTOR 2 COM ULTIMOS VALORES RECEBIDOS MOVF PWM1H, W

Page 164: RICARDO ARTIGAS LANGER

147

BANKSEL CCPR1L MOVWF CCPR1L BANKSEL CCP1CON MOVLW 0XCF ANDWF CCP1CON, F BANKSEL PORTA MOVF PWM1L, W BANKSEL CCP1CON IORWF CCP1CON, F BANKSEL PORTA BTFSC FLAGS, 3 ; TESTA FLAG DE DIREÇÃO DO MOTOR 2 GOTO FRN3 BCF PORTA, 3 ; DIREÇÃO = TRÁS GOTO VOLTAR

FRN3: BSF PORTA, 3 ; DIREÇÃO = FRENTE VOLTAR:

BANKSEL PORTA ; RETORNA VARIÁVEIS ANTES DE TRATAR INTERRUPÇÃO MOVF PCLATH_TEMP, W MOVWF PCLATH SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE

;************************************************************************************ ; INÍCIO DO PROGRAMA E CONFIGURAÇÃO DAS INTERRUPÇÕES. ;************************************************************************************

ORG 0X60 INIC: NOP

BANKSEL PORTA CLRF PWM1H ; LIMPA VARIÁVEIS CLRF PWM1L CLRF PWM2H CLRF PWM2L CLRF FLAGS BANKSEL PIR1 ; HABILITA INTERRUPÇÃO DO TIMER 1. CLRF PIR1 BANKSEL INTCON MOVLW 0XC0 MOVWF INTCON BANKSEL PIE1 MOVLW 0X01 MOVWF PIE1 BANKSEL T1CON ; INICIALIZA TIMER 1 PARA GERAR UM INTERRUPÇÃO MOVLW 0X00 ; A CADA 10 MS MOVWF T1CON BANKSEL TMR1H MOVLW 0X40 MOVWF TMR1H MOVLW 0X2E MOVWF TMR1L

;************************************************************************************ ; INÍCIALIZAÇÃO DAS PORTAS DE ENTRADA E SAÍDA. ;************************************************************************************

BANKSEL PORTA CLRF PORTA CLRF PORTC BANKSEL ADCON1 ; CONFIGURA PORTA RA COMO I/O DIGITAL MOVLW 0x06 MOVWF ADCON1 BANKSEL TRISA MOVLW 0XF1 ; CONFIGURA RC1, RC2 E RC3 COMO SAÍDAS DIGITAIS. MOVWF TRISC MOVLW 0XE1 ; CONFIGURA RA1 - RA4 COMO SAÍDAS DIGITAIS MOVWF TRISA BANKSEL PORTC ; E RA0 E RA5 COMO ENTRADAS DIGITAIS. CLRF PORTC ; ZERA SAÍDAS DA PORTA RC CLRF PORTA ; HABILITA 4053, DIREÇÃO = FRENTE BSF PORTA, 1 ; HABILITA L298D CALL TEMP

;************************************************************************************ ; CONFIGURAÇÃO DA USART. ;************************************************************************************

MOVF PORTA, W ; LÊ PORTA RA0 PARA DETERMINAR QUAL BTFSC PORTA, 0 ; A VELOCIDADE DE COMUNICAÇÃO A SER GOTO HSPD ; UTILIZADA. SE RA0 = 1, A VELOCIDADE MOVLW 0XFF ; SERÁ DE 2.4 KBPS, CASO CONTRÁRIO SERÁ GOTO VELOC ; 1.2 KBPS

HSPD: MOVLW 0X81 VELOC:

BANKSEL SPBRG ; SETA A VELOCIDADE DE COMUNICAÇÃO E MOVWF SPBRG ; CONFIGURA A USART BANKSEL TXSTA BCF TXSTA, SYNC BANKSEL RCSTA

Page 165: RICARDO ARTIGAS LANGER

148

BSF RCSTA, SPEN

;************************************************************************************ ; CONFIGURAÇÃO DOS MÓDULOS PWM. ;************************************************************************************ PWM:

BANKSEL PR2 ; CONFIGURA OS MÓDULO DE PWM PARA FUNCIONAMENTO MOVLW 0XFF ; COMO PWM, COM FREQUÊNCIA = 19,43 KHZ MOVWF PR2 BANKSEL CCPR1L ; INICIALIZA OS MOTORES COM VELOCIDADE = 0% MOVLW 0X00 MOVWF CCPR1L BANKSEL CCPR2L MOVLW 0X00 BANKSEL CCP1CON BCF CCP1CON, 4 BCF CCP1CON, 5 BANKSEL CCP2CON BCF CCP2CON, 4 BCF CCP2CON, 5 MOVWF CCPR2L BANKSEL T2CON MOVLW 0X04 MOVWF T2CON BANKSEL CCP1CON MOVLW 0X0C MOVWF CCP1CON BANKSEL CCP2CON MOVWF CCP2CON

;************************************************************************************ ; LOGIN ;************************************************************************************ LOGIN:

BANKSEL RCSTA BSF RCSTA, CREN ; HABILITA RECEPÇÃO SERIAL

LOG0: CALL LESER1 ; ESPERA ENVIO PELA USART BANKSEL PORTA MOVF DADO, W XORLW 0XF0 BTFSS STATUS, Z ; PALAVRA MORTA? GOTO LOG1 ; NÃO INCF COUNTER, F ; INCREMENTA CONTADOR DE PALAVRAS MORTAS MOVF COUNTER, W XORLW 0X03 BTFSS STATUS, Z ; 3 PALAVRAS MORTAS? GOTO LOG0 ; NÃO GOTO LOG2

LOG1: CLRF COUNTER ; ZERA CONTADOR DE PALAVRAS MORTAS GOTO LOG0

LOG2: CALL LESER1 ; ESPERA ENVIO PELA USART BANKSEL PORTA MOVF DADO, W XORLW 0XF0 BTFSC STATUS, Z ; PALAVRA MORTA? GOTO LOG2 ; SIM, AGUARDA NOVA PALAVRA MOVF DADO, W XORLW 0XFA BTFSS STATUS, Z ; LOGIN? GOTO LOG3 ; NÃO BSF PORTC, 3 ; LIGA LED DE "READY" CLRF COUNTER BANKSEL T1CON BSF T1CON, 0 BSF INTCON, 7 BSF INTCON, 6 GOTO PROX ; INICIA CONTROLE DOS MOTORES

LOG3: CLRF COUNTER ; ZERA CONTADOR DE PALAVRAS MORTAS GOTO LOG0 ; REINICIA LOGIN

;************************************************************************************ ; LOGOFF ;************************************************************************************ LOGOFF:

BCF INTCON, 7 ; DESABILITA INTERRUPÇÕES BCF INTCON, 6 BANKSEL PORTA CLRF PWM1H ; PÁRA OS MOTORES CLRF PWM1L CLRF PWM2H CLRF PWM2L CLRF FLAGS BANKSEL T1CON BCF T1CON, 0 MOVLW 0X00 BANKSEL PORTC ; DESLIGA LED DE 'READY' MOVWF PORTC BANKSEL CCP1CON ; PÁRA OS MOTORES

Page 166: RICARDO ARTIGAS LANGER

149

MOVLW 0X0C MOVWF CCP1CON BANKSEL CCP2CON MOVLW CCP2CON BANKSEL CCPR2L MOVLW 0X00 MOVWF CCPR2L BANKSEL CCPR1L MOVLW 0X00 MOVWF CCPR1L GOTO LOGIN ; ESPERA UM NOVO LOGIN

;************************************************************************************ ; CICLO PRINCIPAL DO PROGRAMA. ;************************************************************************************ PROX:

CALL LESER1 ; ESPERA ENVIO PELA USART BANKSEL PORTA MOVF DADO, W XORLW 0XF0 BTFSC STATUS, Z ; PALAVRA MORTA? GOTO PROX1 ; SIM, IGNORA MOVF DADO, W BCF STATUS, Z XORLW 0XFF BTFSS STATUS, Z ; LOGOFF? GOTO M1 ; NÃO INCF COUNTER, F MOVF COUNTER, W XORLW 0X02 BTFSS STATUS, Z ; 2 LOGOFF'S? GOTO PROX ; NÃO GOTO LOGOFF

PROX1: CLRF COUNTER GOTO PROX

M1: MOVF DADO, W ; SETA VELOCIDADE DO MOTOR 1 MOVWF DADO1 BCF STATUS, Z ANDLW 0X80 BTFSC STATUS, Z ; TESTA DIREÇÃO PARA O MOTOR 1 GOTO SUB281 ; DIREÇÃO = TRÁS MOVLW 0X80 ; DIREÇÃO = FRENTE SUBWF DADO1, F GOTO M11

SUB281: MOVLW 0X1B SUBWF DADO1, F

M11: CALL MULT ; NORMALIZA VALOR PARA RESOLUÇÃO DE 10 BITS BCF INTCON, 7 ; DESABILITA TEMPORARIAMENTE INTERRUPÇÕES BCF INTCON, 6 MOVF RES2, W MOVWF PWM2H ; SALVA VELOCIDADE DO MOTOR 1 MOVF RES1, W MOVWF PWM2L MOVF DADO, W BCF STATUS, Z ANDLW 0X80 BTFSC STATUS, Z ; TESTA DIREÇÃO DO MOTOR 1 GOTO TR1 BSF FLAGS, 2 ; DIREÇÃO = FRENTE BSF INTCON,7 ; REHABILITA INTERRUPÇÕES BSF INTCON, 6 GOTO M2

TR1: BCF FLAGS, 2 ; DIREÇÃO = TRÁS BSF INTCON,7 ; REHABILITA INTERRUPÇÕES BSF INTCON, 6

M2: CALL LESER1 ; SETA VELOCIDADE DO MOTOR 2 BANKSEL PORTA MOVF DADO, W MOVWF DADO1 BCF STATUS, Z ANDLW 0X80 BTFSC STATUS, Z ; TESTA DIREÇÃO PARA O MOTOR 2 GOTO SUB282 ; DIREÇÃO = TRÁS MOVLW 0X80 ; DIREÇÃO = FRENTE SUBWF DADO1, F GOTO M22

SUB282: MOVLW 0X1B SUBWF DADO1, F

M22: CALL MULT ; NORMALIZA VALOR PARA RESOLUÇÃO DE 10 BITS BCF INTCON, 7 ; DESABILITA TEMPORARIAMENTE INTERRUPÇÕES BCF INTCON, 6 MOVF RES2, W MOVWF PWM1H ; SALVA VELOCIDADE DO MOTOR 2 MOVF RES1, W MOVWF PWM1L

Page 167: RICARDO ARTIGAS LANGER

150

MOVF DADO, W BCF STATUS, Z ANDLW 0X80 BTFSC STATUS, Z ; TESTA DIREÇÃO DO MOTOR 2 GOTO TR2 BSF FLAGS, 3 ; DIREÇÃO = FRENTE BSF INTCON,7 ; REHABILITA INTERRUPÇÕES BSF INTCON, 6 GOTO M3

TR2: BCF FLAGS, 3 ; DIREÇÃO = TRÁS BSF INTCON,7 ; REHABILITA INTERRUPÇÕES BSF INTCON, 6

M3: GOTO PROX

PARAR: GOTO PARAR ;************************************************************************************ ; SUBROTINAS UTILIZADAS NO PROGRAMA. ;************************************************************************************ LESER1: ; SUBROTINA PARA LEITURA DA PORTA SERIAL

BANKSEL PIR1 BTFSS PIR1, RCIF ; TESTA SE RECEPÇÃO SERIAL TERMINOU GOTO LESER1 BANKSEL RCREG MOVF RCSTA, W MOVF RCREG, W BANKSEL PORTA MOVWF DADO ; SALVA A PALAVRA RECEBIDA BANKSEL RCSTA BTFSS RCSTA, OERR ; TESTA SE HOUVE ERRO GOTO LES1 BCF RCSTA, CREN BSF RCSTA, CREN

LES1: BANKSEL PIR1 BCF PIR1, RCIF ; RESETA FLAG DE RECEPÇÃO TERMINADA RETURN

MULT: ; NORMALIZA VALOR ENVIADO PELA SERIAL PARA UMA ESCALA DE 0 A 1023

BANKSEL PORTA ; OS VALORES SÃO SALVOS NAS REGISTRADORES RES1 E RES2 CLRF RES2 CLRF RES1 CLRF VARI MOVF DADO1, W MOVWF VARI BCF STATUS, C RLF VARI, F ; MULTIPLICA VALOR POR 8 RLF RES2, F RLF VARI, F RLF RES2, F RLF VARI, F RLF RES2, F MOVF VARI, W MOVWF RES1 MOVF DADO1, W MOVWF VARI RLF VARI, F ; MULTIPLICA VALOR POR 2 BTFSC STATUS, C INCF RES2, F MOVF VARI, W ADDWF RES1, F ; SOMA BTFSC STATUS, C INCF RES2, F MOVF DADO1, W MOVWF VARI BCF STATUS, C MOVLW 0X02 ADDWF VARI, F RRF VARI, F ; DIVIDE POR 4 BCF STATUS, C RRF VARI, F BCF STATUS, C MOVF VARI, W ADDWF RES1, F ; SOMA BTFSC STATUS, C INCF RES2, F BCF STATUS, C MOVF DADO1, W MOVWF VARI MOVLW 0X20 ADDWF VARI, F RRF VARI, F ; DIVIDE POR 64 RRF VARI, F RRF VARI, F RRF VARI, F RRF VARI, F

Page 168: RICARDO ARTIGAS LANGER

151

RRF VARI, F MOVLW 0X03 ANDWF VARI, F BCF STATUS, C MOVF VARI, W SUBWF RES1, F ; SUBTRAI BTFSC STATUS, C GOTO MULT1 DECF RES2, F

MULT1: BCF STATUS, C ; AJUSTA REGISTRADORES PARA QUE RES2 = MSB RLF RES1, F ; E RES1 = 2 BITS LSB (BIT 5 E BIT 4) RLF RES2, F RLF RES1, F RLF RES2, F RLF RES1, F RLF RES2, F RLF RES1, F RLF RES2, F RLF RES1, F RLF RES2, F RLF RES1, F RLF RES2, F RRF RES1, F RRF RES1, F RETURN

TEMP: ; SUBROTINA DE TEMPORIZAÇÃO BANKSEL PORTA MOVLW 0XFF MOVWF T1

TEMP1: DECFSZ T1, F GOTO TEMP1 RETURN END ; FIM