ricardo artigas langer
TRANSCRIPT
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
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
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.
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.
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.
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
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
VI
6.1 Conclusões ................................................................................................................... 131 6.2 Trabalhos Futuros......................................................................................................... 133 Bibliografia....................................................................................................... 135 Lista de Anexos ................................................................................................ 142
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
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
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
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
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
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
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
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 ]
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.
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
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
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).
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).
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.
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.
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.
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.
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 ];
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)
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
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.
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
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.
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
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.
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
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).
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
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.
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.
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
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
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;
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.
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.
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.
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.
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
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
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.
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.
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 ,
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.
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.
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
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).
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).
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
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.
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.
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
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.
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
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.
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.
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
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
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.
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.
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)
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.
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.
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.
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.
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
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.
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
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.
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).
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.
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.
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.
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 .
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,
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.
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
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.
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.
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);
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.
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
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.
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.
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
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.
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.
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 ];
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,
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
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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).
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;
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.
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
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.
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
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
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.
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
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.
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)
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
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
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.
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.
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.
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.
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
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.
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
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,
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).
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).
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ô.
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
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.
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
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
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.
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:
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
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).
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.
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.
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.
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.
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.
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.
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.
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.
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*.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ô
143
ANEXO A - Diagrama elétrico do transmissor e receptor para o robô
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
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.
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
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
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
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
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
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