Robô para Mapeamento de Ambientes Estruturados



Documentos relacionados
GUINDASTE CONTROLADO POR PC ATRAVÉS DE INTERFACE SERIAL RS- 232

DESENVOLVIMENTO DE UM ROBÔ MANIPULADOR INDUSTRIAL

INTRODUÇÃO A ROBÓTICA

Acionamento através de senha*, cartão de proximidade e biometria. Compatível com fechaduras magnéticas, eletroímãs e cancelas.

Permite a coleta de dados em tempo real dos processos de produção, possuindo, também, interfaces para a transferência dos dados para os sistemas

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat:

Infra estrutura precária Máquinas e Equipamentos

UNIVERSIDADE FEDERAL DE SANTA MARIA COLÉGIO TÉCNICO INDUSTRIAL DE SANTA MARIA Curso de Eletrotécnica

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Topologia de rede Ligação Ponto-a-Ponto

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Medição tridimensional

ANEXO VI ESPECIFICAÇÃO DO SISTEMA DE MONITORAMENTO E CONTROLE OPERACIONAL

DEFINIÇÃO DE UMA REDE DE SENSORES SEM FIO PARA A ARQUITETURA AGROMOBILE 1

Tecnologia de faixa para falha

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

IW10. Rev.: 02. Especificações Técnicas

Processos de gerenciamento de projetos em um projeto

Sensores e Atuadores (2)

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Introdução a Banco de Dados Aula 03. Prof. Silvestri

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

2 Fundamentação Conceitual

SISTEMA INTELIGENTE DE NAVEGAÇÃO E LOCALIZAÇÃO DE ROBÔS MÓVEIS

Projeto de controle e Automação de Antena

LONWORKS VISÃO DO PROTOCOLO DE COMUNICAÇÃO

Sistemas de Informação I

USO DA ARQUITETURA AURA - AUTONOMOUS ROBOT ARCHITECTURE EM UM ROBÔ EXPLORADOR DE LABIRINTO CONTROLADO POR RASPBERRY PI.

Manual de instalação e configuração do módulo de entradas WEBER-REP

Sistema GNSS. (Global Navigation Satellite System)

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade

COBERTURA EM UMA REDE DE SENSORES SEM FIO

Olimpíada Brasileira de Robótica 2008

Trabalho sobre No-breaks

CAPÍTULO 4 Interface USB

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

CRONÔMETRO MICROPROCESSADO

INTRODUÇÃO À ROBÓTICA

Unidade IV GERENCIAMENTO DE SISTEMAS. Prof. Roberto Marcello

MODELAGEM DE PROCESSOS USANDO BPMN (BUSINESS PROCESS MODEL AND NOTATION) E IOT (INTERNET DAS COISAS)

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio

Núcleo de Pós Graduação Pitágoras

OANAFAS é um programa computacional

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Casos de uso Objetivo:

CVMDDC - CONTROLE DE VELOCIDADE DO MOTOR DC

REDES DE COMPUTADORES HISTÓRICO E CONCEITOS

Hamtronix CONTROLE REMOTO DTMF. CRD200 - Manual de Instalação e Operação. Software V 2.0 Hardware Revisão B

ALC. Ricardo Geraldes David João. Rodrigo Carlucci da Luz. Lucas Pinheiro Berto

Resolução da lista de exercícios de casos de uso

Invenções Implementadas por Computador (IIC) Patentes

Kit Laboratório de Robótica Escolar 411 PLUS

1 Esfera de aço 1 Transitor BC547

PROCESSOS DE CRIAÇÃO DE APLICATIVOS

Diretrizes para determinação de intervalos de comprovação para equipamentos de medição.

SOCIEDADE DE EDUCAÇÃO E CULTURA DE GOIANIA LTDA FACULDADE PADRÃO SUMÁRIO CAPÍTULO I 4 DA ORGANIZAÇÃO 4 CAPÍTULO II 5 DOS FUNCIONÁRIOS 5

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Banco de Dados Orientado a Objetos

Modem e rede local. Guia do usuário

Inteligência Artificial. Agentes Inteligentes

ROBÔ SEGUIDOR DE LINHA PARA COMPETIÇÕES RESUMO

DESENVOLVIMENTO DE UM DINAMÔMETRO PARA MOTORES ELÉTRICOS EMPREGADOS EM VEÍCULOS EM ESCALA, COM MEDIDA DE DIRETA DE TORQUE E CARGA VARIÁVEL

Introdução ao Controlo Numérico Computorizado I Conceitos Gerais

Métodos normalizados para medição de resistência de aterramento

Módulo 16 Redes sem Fio (Wireless)

XIX CONGRESSO DE PÓS-GRADUAÇÃO DA UFLA 27 de setembro a 01 de outubro de 2010

Guia de utilização da notação BPMN

"O LabVIEW envia e recebe dados do DAQ e o DAQ atua sobre os sensores e atuadores do reator." - Eleilson S. Silva,

Sistemas supervisórios

1- Scilab e a placa Lab_Uino. 2- Instalação do ToolBox

Manual do Usuário e Instalação - FIT100

Descrição do Produto. Altus S. A. 1

Sistema de Detecção de Vazamento de Gás

ipea políticas sociais acompanhamento e análise 7 ago GASTOS SOCIAIS: FOCALIZAR VERSUS UNIVERSALIZAR José Márcio Camargo*

AUTOMAÇÃO DE CÚPULA DE OBSERVATÓRIO ASTRONÔMICO

ARQUITETURA DE COMPUTADORES

BOMBEAMENTO DE ÁGUA COM ENERGIA SOLAR FOTOVOLTAICA

ITIL v3 - Operação de Serviço - Parte 1

Requisitos de Software

DESENVOLVIMENTO DE UM SISTEMA AUTOMATIZADO PARA INSPEÇÃO ULTRA-SÔNICA EM CASCO DE NAVIO

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Desenvolvimento de Aplicações Embarcadas

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

COMISSÃO DE COORDENAÇÃO DE CURSO INTRA-UNIDADE

Cartilha Explicativa sobre o Software de Medição de Qualidade de Conexão (Serviço de Comunicação Multimídia)

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET - Centro de Ciências Exatas e de Tecnologia Engenharia de Computação VELOHIDRO CURITIBA

Sumário. Administração de Banco de dados Módulo 12. Ilustração Backup-Recovery. Recuperação (Recovery) - Definição

Infra-estrutura para inovação e desenvolvimento

Redes de Computadores II

Manutenção Elétrica. Entre os elementos de processamento de sinais podemos citar:

LASERTECK LTA450 MANUAL DE USO

CORRENTE CONTÍNUA E CORRENTE ALTERNADA

Quadro de consulta (solicitação do mestre)

Transcrição:

UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA DA COMPUTAÇÃO ROBERTO AUGUSTO PASCHOAL Robô para Mapeamento de Ambientes Estruturados Trabalho de Conclusão de Curso. Prof. Valfredo Pilla Jr Orientador Curitiba, 14 de dezembro de 2009.

UNIVERSIDADE POSITIVO Reitor: Prof. Oriovisto Guimarães Vice-Reitor: Prof. José Pio Martins Pró-Reitor de Graduação: Prof. Renato Casagrande Diretor do Núcleo de Ciências Exatas e Tecnológicas: Prof. Marcos José Tozzi Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin

TERMO DE APROVAÇÃO Roberto Augusto Paschoal Robô para Mapeamento de Ambientes Estruturados Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação da Universidade Positivo, pela seguinte banca examinadora: Prof. Valfredo Pilla Jr (Orientador) Prof. Edson Pedro Ferlin Prof.ª Maristela Regina Weinfurter Curitiba, 14 de dezembro de 2009.

AGRADECIMENTOS Agradeço aos meus amigos que nos momentos difíceis me ajudaram a manter a estabilidade física e mental, e também ao professor Valfredo Pilla Jr que sempre com muita tranquilidade incentivou a conclusão desse projeto e orientou da melhor forma possível.

SUMÁRIO LISTA DE FIGURAS... 10 LISTA DE TABELAS... 12 LISTA DE SIGLAS... 13 RESUMO... 14 ABSTRACT... 15 CAPÍTULO 1 INTRODUÇÃO... 16 CAPÍTULO 2 - FUNDAMENTAÇÃO TEÓRICA... 17 Conceito... 17 Controle Reativo... 21 Controle Deliberativo... 21 Arquitetura de Controle Hierárquico... 22 Arquitetura de Controle Hibrido... 22 Controle Robótico Robusto e Inteligente... 22 Projetos de Sistemas de Robôs Móveis Inteligentes... 22 Localização... 23 Mapeamento... 23 Navegação Robótica... 24 Aplicações práticas de Robótica Móvel... 24 Navegação autônoma em ambientes externos... 24 Aplicação de Sucesso de Robôs Móveis... 25 CAPÍTULO 3 - ESPECIFICAÇÃO DO PROJETO... 26 Sistema... 26 Sensores... 27

Microcontrolador... 28 Motores... 28 ZigBee... 29 Software - SICROMAE... 30 Protocolo de comunicação... 30 CAPÍTULO 4 - PROJETO... 32 Projeto do Hardware... 32 Módulo do Microcontrolador... 32 Módulo do Sensor... 34 Módulo dos Motores... 34 Módulo de Comunicação... 36 Integração dos Módulos... 37 Circuito Impresso... 38 Protótipo... 38 Projeto do Firmware... 39 Projeto do Software SICROMAE... 40 Testes e validações... 47 Robô... 47 Software SICROMAE... 48 Sistema... 48 CAPÍTULO 5 - RESULTADOS... 49 Robô... 49 Software SICROMEA... 51 Sistema... 51 CAPÍTULO 6 CONCLUSÃO... 53 Conclusão... 53 Trabalhos Futuros... 53 Dificuldades Encontradas... 53 REFERENCIAS BIBLIOGRÁFICAS... 54 ANEXO A ARTIGO CIENTÍFICO... 56 ANEXO B MANUAL... 61

Instalação do software SICROMAE... 61 Acessando o software SICROMAE... 64 Manual do software SICROMAE... 65 Manual do Robô PAS01... 69 ANEXO C CÓDIGO DA INTELIGÊNCIA DO ROBÔ... 71 Classe ccerebro... 71 Métodos... 72

10 LISTA DE FIGURAS Figura 2-1 Roomba... 18 Figura 2-2 Auto Mower... 18 Figura 2-3 Aibo... 19 Figura 2-4 Os Rovers gêmeos Spirit e Opportunity... 25 Figura 3-1 Diagrama do Sistema... 27 Figura 3-2 Desenho da reflexão dos sensores... 27 Figura 3-3 Protótipo dos motores montados... 28 Figura 3-4 Módulo ZigBee... 29 Figura 3-5 Módulo CON-USBBEE... 29 Figura 3-6 Sistema de comunicação (non-beacon)... 30 Figura 3-7 Frame de dado padrão RS232... 30 Figura 4-1 Diagrama esquemático do módulo microcontrolador... 33 Figura 4-2 Diagrama esquemático do sensor... 34 Figura 4-3 Diagrama esquemático do módulo de controle dos motores... 35 Figura 4-4 Circuito Integrado L298... 36 Figura 4-5 Diagrama esquemático módulo de comunicação... 36 Figura 4-6 Diagrama do esquemático do hardware... 37 Figura 4-7 Diagrama esquemático do circuito impresso do hardware... 38 Figura 4-8 Protótipo do robô... 39 Figura 4-9 Fluxograma do firmware... 40 Figura 4-10 Fluxograma do software SICROMAE... 41 Figura 4-11 Tela principal do software SICROMAE... 42 Figura 4-12 Tela do software da opção Comunicação... 43 Figura 4-13 Tela do software da opção Mapeamento... 44

11 Figura 4-14 Tela do software da opção Configurações... 45 Figura 4-15 Tela do software de configuração do robô da opção Configurações... 46 Figura 4-16 Tela do software da opção Sobre... 46 Figura 4-17 Tela do software com o mapeamento em andamento... 47 Figura 4-18 Planta do projeto do ambiente estruturado dos testes e validações... 48 Figura 5-1 Validação do sensor da frente... 49 Figura 5-2 Validação do sensor da direita... 50 Figura 5-3 Validação do sensor da esquerda... 50 Figura 5-4 Validação do sensor de trás... 50 Figura 5-5 Validação do software... 51 Figura 5-6 Validação do sistema... 52

12 LISTA DE TABELAS Tabela 3-1 Especificação dos comandos de comunicação... 31 Tabela 3-2 Comandos de comunicação entre Robô e PC... 31 Tabela 4-1 Componentes do microcontrolador... 33 Tabela 4-2 Legenda de sinais do microcontrolador... 33 Tabela 4-3 Saida dos sensores/entrada no microcontorolador... 34 Tabela 4-4 Componentes do esquemático do sensor... 34 Tabela 4-5 Componentes do módulo de controle dos motores... 35 Tabela 4-6 Legenda de sinais do módulo de controle de motores... 35 Tabela 4-7 Legenda de sinais da comunicação... 37 Tabela 4-8 Componentes do módulo de hardware... 38

13 LISTA DE SIGLAS AMR - Autonomies Mobile Robots AGVs - Automated Guided Vehicles CER - Comissão Especial de Robótica PWM - Pulse Width Modulation RMA - Robô Móvel Autônomo SBC - Sociedade Brasileira de Computação SLAM - Simultaneous Localization And Mapping VANT - Veículos Aéreos Não-Tripulados

14 RESUMO Neste trabalho desenvolveu se uma planta de teste para um controlador baseado em computação reconfigurável. Esta planta é um robô móvel com telecomando, o qual possui sensores em duas dimensões para a medida de distâncias. O sistema controlador em teste é implementado via software em um computador remoto hospedeiro. Mais especificamente, este sistema tem como finalidade mapear um ambiente estruturado. Além disso, deseja-se ajudar na evolução da robótica, em especial ao desenvolvimento de Robôs Moveis Autônomos, conhecidos como RMA's. Palavras-chave: Robótica, Sem fio, Telecomando, Robôs Moveis Autônomos, Computação Reconfiguravel, Ambiente Estruturado

15 ROBOT FOR MAPPING STRUCTURED ENVIRONMENT ABSTRACT The main project objective is the development of a controller test map designed under reconfigured computer. This map is a mobile robot with controlled commands which have sensor in two dimensions for assign measures and distances. The test controller system is implemented via software in a client computer. Effectively, this system will map a structured environment. In addition, the expected result is to increase the robotic evolution, in special for development of new Autonomies Mobile Robots, known as AMR's. Keywords: Robotic, Wireless, Mobile, Autonomies Mobile Robots, Reconfigured Computer, Structured Environment

16 CAPÍTULO 1 INTRODUÇÃO Nesse capítulo é apresentada uma breve introdução sobre a robótica móvel. O estudo da robótica móvel é um tema bastante relevante e atual, sendo que esta área de estudo, pesquisa e desenvolvimento apresentou um grande salto em seu desenvolvimento nas últimas décadas. A aplicação prática de robôs móveis aliada a diferentes atividades na sociedade vem demonstrando o quanto promissor é o futuro desta área. Por exemplo, seu uso em aplicações domésticas (aspiradores de pó e cortadores de grama robóticos), industriais (transporte automatizado e veículos de carga autônomos), urbanas (transporte público, cadeiras com rodas robotizadas), militares (sistemas de monitoramento aéreo remoto, transporte de suprimentos e de armamento em zonas de guerra, sistemas táticos e de combate) e de segurança e defesa civil e militar (controle e patrulhamento de ambientes, resgate e exploração em ambientes hostis), demonstra grande gama de aplicações atuais dos robôs móveis e os interesses econômicos envolvidos em relação ao seu desenvolvimento e aplicação. Dentro deste contexto, constata-se a grande importância do desenvolvimento desta área de pesquisas em nosso país, de modo que essa revolução vai transformar nossas vidas em um futuro próximo. A pesquisa e desenvolvimento em robótica móvel requerem conhecimentos de diversas áreas, da Engenharia Mecânica, Engenharia Elétrica, Engenharia da Computação e das diferentes áreas dentro da Computação. Em particular, a área de computação possui um papel muito importante como área que provê o suporte de conhecimentos e técnicas que permitirão dotar estes robôs móveis de sistemas de controle mais robustos, seguros, autônomos e inteligentes. Dessa forma, faz-se necessária a formação de profissionais capacitados para atuar nesta área, e alem disso, é de grande importância que se possa incentivar a formação de pessoal capacitado a trabalhar nesta área. O objetivo com este trabalho de conclusão de curso é justamente o de apresentar uma visão geral da área para motivar e introduzir conceitos importantes e atuais relacionados à robótica móvel, contribuindo assim para disseminar conhecimentos e técnicas da área de computação que são atualmente empregadas no desenvolvimento dos robôs móveis inteligentes. Mais especificadamente, este projeto consiste em uma planta de teste para um controlador baseado em computação reconfigurável. Esta planta é um robô móvel com telecomando, o qual possui sensores em duas dimensões para a medida de distâncias. O sistema controlador em teste foi implementado via software em um computador remoto hospedeiro. Dessa forma, este sistema tem como finalidade mapear um ambiente estruturado.

17 CAPÍTULO 2 - FUNDAMENTAÇÃO TEÓRICA Neste capítulo são apresentados conceitos e técnicas atualmente empregas na robótica móvel. Assim como projetos da área. Conceito A evolução dos robôs, e em especial dos robôs móveis, tem recebido nos últimos anos um amplo destaque junto à mídia e à sociedade de um modo geral. Onde se falava muito em robôs industriais e braços mecânicos robóticos, atualmente as atenções se voltaram para robôs móveis, capazes de se deslocar no ambiente em que se encontram e principalmente nos Robôs Móveis Autônomos RMA s e Veículos Autônomos Inteligentes (JUNG, 2005). Os RMA s possuem como características fundamentais, as capacidades de locomoção e de operação de modo semi ou completamente autônomo. Também deve ser considerado que maiores níveis de autonomia serão alcançados somente à medida que o robô passe a integrar outros aspectos considerados da maior importância, como: capacidade de percepção (sensores que conseguem ler o ambiente onde ele atua), capacidade de agir (atuadores e motores capazes de produzir ações, tais como o deslocamento do robô no ambiente), robustez e inteligência (capacidade de lidar com as mais diversas situações, de modo a resolver e executar tarefas por mais complexas que sejam). O uso de técnicas de planejamento e controle robusto para a navegação e operação autônoma dos robôs é conhecido pelo termo Controle Robótico Inteligente, no qual este controle inteligente permite dotar os RMA s da capacidade de executar as mais diversas e complexas tarefas. Pode-se citar alguns exemplos famosos de Robôs Móveis, resultantes da pesquisa e desenvolvimento que vem ocorrendo nesta área: os robôs de exploração espacial como o Mars Pathfinder's Sojourner, Spirit e Opportunity Rovers (Bajracharya, 2008); robôs domésticos usados para limpar a casa como o Roomba (ver fig. 2-1) e Scooba (IROBOT, 2009), e para cortar grama como o AutoMower (HUSKVARNA, 2009), Sahin 2007 (ver fig. 2-2); os robôs com pernas capazes de caminhar como o cachorro Aibo (HONDA, 2009) (ver fig 2-3), o humanóide Asimo (SONY, 2009) e o BigDog (BOSTON DYNAMICS, 2009); veículos terrestres não tripulados como o Stanley de Stanford (THRUN 2006, GIBBS 2006, JUNG 2005); e veículos aéreos não tripulados (UAVs) como os VANTs brasileiros do Projeto Arara (NERIS, 2001) e AGplane (AVX, 2009). Estes exemplos demonstram claramente os progressos e resultados da pesquisa e desenvolvimento em robótica móvel desta última década.

18 Figura 2-1 Roomba Fonte: AMARKONMYWALL, 2008. Figura 2-2 Auto Mower Fonte: WALYOU, 2009

19 Figura 2-3 Aibo Fonte: SONY, 2009. Os Robôs Móveis Autônomos, como se pode constatar pelos exemplos acima, possuem diferentes configurações de dispositivos de hardware embarcados, de acordo com a função e as tarefas para as quais são projetados. Os principais dispositivos de hardware de um robô são seus sensores e atuadores. Um sistema robótico envolve a especificação e seleção de diferentes componentes (DUDEK, 2000), sensores e atuadores (cada um com suas especificidades), e a combinação destes em um sistema autônomo normalmente é complexa. Estes sistemas devem ser projetados de modo a ser dotado de dispositivos capazes de prover os dados necessários (obtidos por meio dos seus sensores), para que o sistema de controle robótico inteligente possa planejar e realizar o acionamento dos seus dispositivos de modo a executar a ação desejada. Um dos grandes desafios da robótica é justamente como integrar as informações vindas de todos estes sensores, de modo a gerar comandos e controlar os diferentes dispositivos de atuação do robô, garantindo que a tarefa seja executada de modo correto e sem colocar em risco tanto o robô quanto aqueles que o cercam. O robô deve preservar a sua integridade bem como dos elementos presentes no ambientes (seres humanos, objetos como utensílios e mobiliário, outros robôs). Um robô só deve agir de modo ativo sobre um determinado objeto-alvo, se realmente for programada, isto é, prevista a sua ação sobre este objeto. Esta questão sempre foi alvo de muitas discussões, pois um robô móvel pode causar danos tanto a pessoas como a objetos que o cercam, de modo deliberado ou não, constituindo-se assim de um Sistema Embarcado Crítico (executa missões críticas), onde seu desenvolvimento deve imperativamente envolver um cuidadoso projeto tanto de hardware como de software. Em função desta execução de tarefas críticas, que podem causar tanto danos em humanos como materiais, o projeto do sistema de controle de um robô móvel deve garantir um controle robusto, tolerante a falhas e a situações imprevistas (que não estão exatamente de acordo com um plano previamente estabelecido), constituindo assim um sistema de controle que denominamos aqui de sistema de controle inteligente. É importante destacar que o projeto do sistema de controle de um robô deve levar em conta uma série de quesitos e componentes, como por exemplo: Tipo de tarefa do robô; Tipo e precisão dos sensores embarcados; Tipo e precisão dos atuadores;

20 Os sensores individualmente fornecem apenas uma visão de mundo, parcial, incompleta e sujeita a erros, sendo papel do sistema de controle adquirir, unificar (realizar a fusão de sensores) e tratar estas informações de forma robusta e inteligente. Além disto, os comandos de atuação também não são precisos, sendo que muitas vezes uma instrução de avançar em linha reta ou de girar em certa direção também pode não ser executada de forma correta e precisa, pois está sujeita a erros de posicionamento do robô, de acionamento dos motores, bem como está sujeita também a forças e componentes externos (fricção, gravidade, aceleração, desaceleração, inércia, colisão com obstáculos e derrapagem das rodas). Cabe ao sistema de controle robusto prover técnicas que permitam compensar e corrigir estes erros de modo que as tarefas do robô possam ser executadas corretamente e em segurança. O projeto do sistema de controle de um robô deve também usualmente fazem adoção de uma arquitetura específica de controle, ser capaz de realizar algumas ou todas das seguintes tarefas de (DUDEK, 2000): Fusão de Sensores: adquirir e integrar os diversos dados recebidos a partir dos sensores, compensando as limitações de alcance e precisão de cada sensor, por meio da fusão dos dados; Desviar de obstáculos: detectar obstáculos e poder assim evitar a colisão com os mesmos, preservando a integridade do robô e dos elementos externos. O desvio de obstáculos deve evitar tanto obstáculos estáticos, como obstáculos dinâmicos (elementos móveis como pessoas e outros robôs); Auto-Localização: determinar a localização do robô no ambiente (posição e orientação), com ou sem o uso de um mapa do ambiente, de modo a poder planejar e executar o deslocamento seguindo uma determinada trajetória; Mapeamento do ambiente: exploração e construção de um mapa do ambiente, onde o robô é capaz de realizar uma reconstrução digital do mapa do ambiente, identificando onde existem paredes e obstáculos no ambiente gerando, por exemplo, um mapa de ocupação do ambiente. Uma técnicas muito usada é o SLAM (Simultaneous Localization And Mapping) (THRUN, 2005), que realiza ao mesmo tempo a auto-localização do robô, enquanto mapeia o ambiente. Planejamento de trajetórias: por meio do uso de um mapa é possível planejar ações de alto-nível, como definir previamente uma trajetória a ser executada pelo robô, especificando as ações elementares a serem realizadas de modo a se deslocar de uma posição-origem até uma posição-alvo; Planejamento de ações: uma vez definida a tarefa a ser realizada pelo robô móvel, é possível estabelecer um plano de ações, que pode ser composto da execução de sub-tarefas mais elementares, como por exemplo: explorar o ambiente; seguir uma parede ou corredor até o seu final, se deslocar em uma direção-alvo desviando de obstáculos, recolher objetos, seguir um comboio, patrulhar uma área, etc; Navegação robótica: capacidade de executar as ações planejadas de modo robusto, como por exemplo, executar o deslocamento de uma posição-origem até uma posição-alvo, realizando os devidos ajustes durante o deslocamento para evitar a colisão com obstáculos. A navegação robótica é a execução do plano de trajetórias e ações previamente definido; Interação e Comunicação: capacidade de interagir e se comunicar com outros agentes presentes no ambiente. Por exemplo, um robô pode ter a capacidade de agir de modo colaborativo, interagindo e trocando informações com outros robôs de modo a executar uma tarefa de forma cooperativa e compor assim um sistema multi robótico. Um exemplo clássico deste tipo de sistema é o futebol de robôs, no qual múltiplos robôs devem coordenar suas ações a fim de atingir objetivos comuns.

21 As arquiteturas computacionais de controle de robôs móveis autônomos permitem que tarefas como as listadas acima sejam planejadas e executadas, por meio do gerenciamento dos diferentes dispositivos embarcados no robô. Os principais aspetos destas arquiteturas são relativos à Percepção (incluindo a comunicação), Raciocínio/Decisão e Ação. As arquiteturas computacionais de controle de veículos autônomos são bastante diversas e mesmo na literatura são encontrados diferentes enfoques, entretanto, podem ser citadas algumas das arquiteturas de controle que se tornaram as mais conhecidas e reconhecidas pelas suas características e potencialidades: controle reativo, controle deliberativo, controle hierárquico e controle híbrido. Serão detalhadas a seguir estas principais arquiteturas de controle. Controle Reativo O controle reativo consiste de um sistema de reação sensorial-motora (DUDEK, 2000). Este tipo de controle normalmente é o mais simples de ser implementado, usualmente não necessitando de muitos recursos computacionais para sua implementação. O controle reativo é composto basicamente de um ciclo, como é descrito a seguir: Leitura dos sensores. Processamento imediato destas informações. Geração de um comando de resposta para os atuadores. Usualmente um esquema de controle reativo considera apenas as leituras sensoriais realizadas no presente para tomada de decisão e geração de comandos de ação. Um sistema reativo é bastante útil para implementar comportamentos elementares como: desviar de obstáculos (reage a presença de um obstáculo), seguir um objeto (acompanhar um elemento guia) e seguir uma fonte luminosa (mover em direção a uma fonte de luz). Controle Deliberativo O controle deliberativo (ou cognitivo) consiste na aplicação de um mecanismo de planejamento das ações (DUDEK, 2000), podendo ser estabelecido um plano prévio de execução de uma seqüência de ações, baseado nos conhecimentos que os sistema possuem sobre o problema a ser resolvido (mapa do ambiente, rotas disponíveis). No controle deliberativo é assumida a existência de um processo de alto nível de raciocínio e tomada de decisões, usualmente mais complexo de serem implementados do que os controles reativos. Este processo permite que sejam planejadas ações de modo a tratar e executar tarefas que exigem um nível de controle mais sofisticado, como exemplo, definir (traçar uma rota) e executar a tarefa de se deslocar de um ponto a outro do ambiente, considerando um mapa do mesmo. As arquiteturas baseadas em controle deliberativo, incorporam este tipo de estratégia para realizar o controle dos robôs móveis. Entretanto, o controle deliberativo puro possui limitações quando colocado frente a eventos imprevistos, como por exemplo, um obstáculo que se moveu obstruindo a sua rota. Neste caso, o controle deliberativo puro terá dificuldades de reagir a uma nova configuração do ambiente, que não havia sido prevista em seu planejamento inicial. Pode-se dizer que o ideal em um sistema de controle seria que este tivesse a capacidade de reação de um sistema reativo, com a capacidade de planejamento e execução de tarefas complexas de um sistema deliberativo. Desta combinação entre reativo e deliberativo surgem os sistemas hierárquicos e híbridos.

22 Arquitetura de Controle Hierárquico O controle hierárquico consiste da combinação de múltiplos módulos de controle reativo e/ou deliberativo em camadas dispostas de modo que estes possam operar de modo hierárquico. A combinação dos diferentes módulos de controle leva a adoção de um esquema de prioridades em relação às múltiplas camadas do sistema, em que é comum encontrar estes sistemas de controle classificados como: sistemas hierárquicos com decomposição vertical e decomposição horizontal (DUDEK, 2000). Arquitetura de Controle Hibrido Os sistemas híbridos apresentam a vantagem de poderem combinar os comportamentos obtidos de seus diferentes módulos (reativos e deliberativos), que podem inclusive ser executados em paralelo, a fim de obter um comportamento mais robusto e uma execução de tarefas mais complexas. Por exemplo, é possível implementar um módulo de controle deliberativo que realiza o planejamento e execução de uma trajetória com o uso de um mapa, ao mesmo tempo em que um módulo reativo de maior prioridade pode intervir para realizar o desvio no caso da presença de um obstáculos, e finalmente ainda podemos ter um outro módulo que realiza a auto-localização, permitindo que sejam realizados ajustes no plano de trajetória por meio de um constante monitoramento da posição atual do robô (JUNG, 2005). Este tipo de arquitetura é uma das mais sofisticadas e adotadas nas implementações dos sistemas de controle dos robôs móveis autônomos modernos. Controle Robótico Robusto e Inteligente O sistema computacional de controle robusto e inteligente é um sistema capaz de controlar um robô móvel autônomo, garantindo a execução de suas tarefas de modo autônomo, correto e seguro (DUDEK, 2000). Um sistema de controle robusto de um robô móvel autônomo deve ser projetado de modo a permitir a correta execução das tarefas que lhe são atribuídas, mesmo na presença de imprecisões, erros e eventos externos não planejados. Em algumas situações, um sistema de controle reativo pode ser adotado, demonstrando ser robusto o suficiente para a execução de uma determinada tarefa. Por exemplo, alguns sistemas simples de controle reativo permitem a um robô móvel executar tarefas como: seguir uma marcação no chão (AGVs Automated Guided Vehicles), seguir um comboio, se dirigir em direção a um foco de luz ou calor, realizar tarefas como a limpeza de um ambiente (alternando entre comportamentos de vagar livremente e se dirigir para uma base de recarga). Também é possível implementar com sucesso sistemas de controle deliberativo puro, que executam tarefas em ambientes bem estruturados e controlados, em que não há ocorrência de imprevistos na execução das tarefas e os erros/imprecisões são bem conhecidos e modelados no processo (inclusive pela adição de dispositivos que permitem compensar/adequar o sistema a estes erros). Porém, o desenvolvimento de uma arquitetura de controle robótico robusto com diferentes módulos, capazes de tratar questões como a fusão de sensores, a autolocalização, o mapeamento do ambiente (construção de mapas), o desvio de obstáculos estáticos ou dinâmicos, o planejamento de trajetórias (com ou sem uso de mapas), a navegação robótica autônoma em ambientes não estruturados, a execução de tarefas de alto nível e a comunicação e cooperação em sistemas multi robóticos, é uma tarefa bastante complexa e que demanda um grande esforço em termos do projeto e desenvolvimento de um sistema computacional de controle robótico com estas funcionalidades. Projetos de Sistemas de Robôs Móveis Inteligentes O projeto de um Sistema Robótico Móvel Inteligente, conforme apresentado anteriormente, envolve o projeto de hardware e o projeto de software (DUDEK, 2000). O hardware é responsável pela implementação física de sensores, atuadores, interfaces e do processamento dos dados por meio do uso de um processador embarcado: microprocessadores, microcontroladores, hardware dedicado, hardware reconfigurável (FPGAs,

23 Soft-Cores, SoPC, PSoC Programmable System-on-Chip). Grande parte da dificuldade em se programar robôs móveis deve-se ao fato de que os elementos que compõe o robô, como sensores e atuadores, apresentam um certo grau de incerteza nos dados obtidos ou nas ações desempenhadas. Além disso, o ambiente em que esses robôs operam, normalmente, é dinâmico e imprevisível. A simples tarefa de se mover de uma extremidade de um corredor até a outra pode se tornar consideravelmente mais difícil se existirem pessoas andando nos corredores, se objetos que possam bloquear a passagem do robô forem colocados em seu caminho ou se os sensores e atuadores do robô não funcionarem com precisão. Dentre os algoritmos usados na área de robótica móvel, a maioria é baseada em estimação estatística. A teoria das probabilidades vem sendo usada com sucesso para acomodar a incerteza existente, tanto internamente no robô, como no ambiente em que ele opera. Hoje em dia, a maior parte dos algoritmos de localização e mapeamento utilizam teoria probabilística de alguma forma. Localização Localização consiste em estimar a posição de um robô no ambiente. Determinar sua própria posição é uma capacidade básica para que qualquer tarefa de navegação seja executada. É fundamental que um robô consiga determinar exatamente a posição em que se encontra dentro de um ambiente para que o mesmo possa planejar a uma trajetória até o seu destino e cumprir as tarefas que lhe forem alocadas (FOX, 1999). A grande maioria dos robôs móveis possui um sistema de odometria que permite estimar o deslocamento dos mesmos e, consequentemente, calcular a posição dos robôs no ambiente. Normalmente, as informações odométricas são obtidas por meio de sensores acoplados às rodas dos robôs, de forma a calcular o deslocamento dos mesmos a partir do movimento destas. Na prática, existem diversos fatores que causam erros nesse tipo de dispositivo como a imprecisão mecânica do sistema e irregularidades do terreno em que o robô atua. Outro fator que dificulta e pode até inviabilizar a localização do robô a partir da odometria é o fato de que os pequenos erros causados durante o cálculo da posição do robô vão se acumulando ao longo do tempo. Uma pequena variação na pressão dos pneus de um robô pode facilmente gerar um erro de muitos metros na estimativa de localização após algum tempo de navegação do robô. Devido à sua grande importância dentro da área de robótica móvel, o problema da localização vem sendo amplamente estudado pelos pesquisadores da área e, atualmente, existem algoritmos bastante eficientes na solução do mesmo. Normalmente, é fornecido um mapa do ambiente e a localização é estimada com base nas informações fornecidas pelos sensores. O grande desafio na solução do problema de localização está no fato de que tanto as informações sobre o ambiente como os dados fornecidos pelos sensores são normalmente limitados e imprecisos. Nesse contexto, técnicas probabilísticas têm sido amplamente utilizadas na solução desse problema. O problema da localização de robôs móveis pode ser dividido nas categorias local e global. No problema de localização local (THRUN 2005), a posição inicial do robô é conhecida. A solução para esse problema consiste em lidar com a imprecisão dos sensores e manter uma estimativa consistente da posição do robô no ambiente. No caso da localização global, o robô não tem informações prévias de sua posição no mapa, o que torna o processo de localização consideravelmente mais complexo. Mapeamento O levantamento de dados sobre o ambiente e a conseqüente construção de mapas (criação de uma representação do ambiente onde está inserido o robô) é um problema de estimação que consiste em uma tarefa fundamental para o desenvolvimento de robôs móveis autônomos. Normalmente, tarefas básicas executadas por um robô necessitam de uma representação do ambiente para serem executadas. Supondo, por exemplo, que um robô deve planejar uma trajetória para se locomover de sua posição atual até uma posição de destino. Nesse caso, um mapa do ambiente é fundamental para que o caminho mais eficiente seja

24 encontrado. Utilizando o mapa, o robô verifica os possíveis caminhos que levam até a posição desejada e os obstáculos que devem ser evitados (THRUN, 2005). Outra aplicação robótica que normalmente necessita de um mapa é a localização, que consiste em estimar a posição de um robô em um ambiente previamente conhecido. Dentro do contexto da navegação, é necessário que o robô saiba com precisão sua localização dentro do ambiente para que o mesmo possa determinar uma trajetória até o ponto de destino. Uma vez que os sensores odométricos dos robôs comerciais normalmente apresentam algum grau de imprecisão, são utilizadas informações dos sensores, juntamente com um mapa do ambiente, para se estimar a posição do robô. Existem também técnicas que permitem que o mapa seja criado ao mesmo tempo em que o robô se localiza no ambiente. Essas técnicas são chamadas de localização e mapeamento simultâneos (SLAM - Simultaneous Localization And Mapping), e são consideravelmente mais complexas do que técnicas de mapeamento e localização em separado. Existem basicamente dois tipos de mapas criados por robôs móveis: topológicos e métricos. Os mapas topológicos representam o ambiente por grafos, no qual os vértices representam regiões de interesse no ambiente e os arcos representam as vias que interligam essas regiões. Os mapas topológicos são bastante eficientes para se estimar trajetórias em um ambiente, mas apresentam uma representação muito pobre do ambiente físico. Os mapas métricos representam os ambientes físicos em detalhes e também podem ser utilizados para se estimar trajetórias (DUDEK, 2000). Navegação Robótica O problema da navegação em robótica consiste em controlar o deslocamento do robô de uma posição inicial até uma posição de destino (DUDEK, 2000). Este tipo de tarefa envolve diferentes técnicas, como exemplo, o planejamento de uma trajetória e a execução da navegação utilizando um mapa previamente disponibilizado do ambiente, ou até mesmo a navegação baseada em uma experiência prévia de navegação supervisionada, usando técnicas como a navegação visual. A tarefa de navegação usualmente é implementada utilizando uma arquitetura de controle do tipo reativo, deliberativo ou hierárquico/híbrido, devendo incluir mecanismos para evitar colisões, incluindo o desvio de obstáculos e o tratamento de situações imprevistas. Aplicações práticas de Robótica Móvel O desenvolvimento de pesquisas e aplicações de robótica móvel autônoma e inteligente (DUDEK, 2000), seja no Brasil ou no exterior, tem crescido de forma muito ampla e consistente nos últimos anos. Pode-se constar isto por meio do alto nível das publicações de trabalhos científicos da área em diversos eventos internacionais especializados (IEEE IROS, IEEE ICRA, IEEE ICAR, ACM SAC Robot, EPIA IROBOT) e nos eventos nacionais (JRI/EnRI/LARS, SBIA, SBRN, ENIA, CBRN, SBAI, CBA, entre outros), além do crescimento do número de publicações e edições especiais em periódicos nacionais e estrangeiros. Em particular, a SBC (Sociedade Brasileira de Computação), possui atualmente entre as suas comissões especiais, uma que atende especificamente os interesses da comunidade brasileira de robótica, a CER Comissão Especial de Robótica da SBC, sendo um importante órgão de incentivo e apoio a eventos, competições e ao desenvolvimento da robótica junto à comunidade brasileira. Navegação autônoma em ambientes externos A navegação é um dos problemas fundamentais da robótica móvel, sendo um pré-requisito para que outras tarefas possam ser executadas (DUDEK, 2000). A grande maioria dos algoritmos de navegação é desenvolvida para atuar em ambientes internos estruturados, onde o grande desafio da navegação é o desvio de obstáculos. A navegação em ambientes externos consiste em um problema muito mais interessante e complexo. Além do desvio de obstáculos, é necessário que o robô identifique o terreno em que pode navegar. Uma aplicação direta dessa tecnologia é o desenvolvimento de sistemas de direção autônoma para veículos. Neste caso, é necessário identificar os limites da rua (área em que o carro pode navegar), e possíveis

25 obstáculos e depressões em seu caminho. Dentro desse contexto, são desenvolvidos sistemas de navegação em ambientes externos baseados em visão computacional. Baseado nas informações obtidas por uma câmera, o sistema deve encontrar a via navegável (rua ou calçada). Aplicação de Sucesso de Robôs Móveis Recebeu uma grande atenção da mídia e do público em geral a aplicação do caso dos Rovers (Sojourner, Spirit e Opportunity rovers) enviados a Marte (ROVERS, 2009). A missão dos robôs Spirit e Opportunity completou cinco anos no solo de Marte em Janeiro de 2009, demonstrando o grande avanço alcançado pela robótica móvel, que possibilitou esta sobrevivência em um ambiente hostil por um período bastante longo. Figura 2-4 Os Rovers gêmeos Spirit e Opportunity Fonte: RHEA, 2004.

26 CAPÍTULO 3 - ESPECIFICAÇÃO DO PROJETO Neste capítulo é apresentada a especificação do projeto. Podem ser encontradas informações do robô e do software controlador. Sistema O sistema é composto uma planta de teste controladora baseada em computação reconfigurável. A planta é constituída de um robô móvel com telecomando, o qual possui sensores em duas dimensões para a medida de distâncias. O sistema controlador em teste é implementado via software em um computador remoto hospedeiro. Mais especificamente, o sistema tem como finalidade mapear um ambiente estruturado. Esses ambientes não devem sofre interferências climáticas como chuvas e ventos, e o piso deve ser plano e com poucas deformações. O projeto pode ser dividido em seis blocos principais, sendo eles: Sensores Microcontrolador Motores e drives de potência Comunicação sem fio Computador central Interface gráfica e programa de controle Para cada bloco do projeto têm-se circuitos esquemáticos, protocolos de comunicação, diagramas de relacionamento e protótipo de telas respectivas. A lógica de funcionamento do projeto se da a cada instante de tempo, ou ciclo de processamento, o microcontrolador ler os sinais de cada sensor e enviar ao computador central, este verifica os dados enviados e retorna ao microcontrolador o que deve ser efetuado em seu andamento, acionando ou não os motores necessários para o desvio de obstáculos, assim o computador central irá desenhar este ponto na interface gráfica, isto será feito a cada ciclo de processamento, desenhando todo o trajeto na interface gráfica para o usuário.

27 Figura 3-1 Diagrama do Sistema O diagrama apresentado na figura 3-1 mostra um modelo de relacionamento entre os blocos que compõem o sistema. Neste o microcontrolador é o ponto principal do robô o qual lê as informações dos sensores envia, via rede ZigBee, para o computador central os dados e recebe deste mesmo computador as informações para acionamento dos motores. Sensores Os sensores utilizados são fotoelétricos, isto é, composto por um emissor infravermelho e um foto-transistor receptor. Estes sensores foram selecionados pela facilidade de implementação em circuitos, rápida resposta ao deslocamento e baixo consumo de energia. O princípio de funcionamento é, enquanto os sensores estiverem distantes de um anteparo o receptor não recebe nenhuma emissão de luz infravermelha na base do transistor, então a tensão de saída no foto-transistor é 0 volt. Com a proximidade dos sensores em um anteparo, o receptor tem o retorno da luz infravermelha emitida e a tensão de saída aumenta gradativamente conforme diminui a proximidade ao anteparo, conforme mostra a figura 3-2. Este pino do transistor é conectado diretamente a um pino do Microcontrolador que trata esta tensão. Figura 3-2 Desenho da reflexão dos sensores

28 Microcontrolador O Microcontrolador utilizado foi o PIC 16F877A, este micro-processador é alimentado com uma bateria fornecendo uma tensão de 5 volts, resultante de um regulador de tensão. Foi utilizado 4 portas analógicas para controle dos quatro sensores. O PIC trabalha com valores analógicos nestas portas, dessa forma, foi efetuada a leitura da tensão de saída dos sensores, utilizando os pinos RA0, RA1, RA2 e RA3. Em cada ciclo de processamento do PIC é lido os valores de cada porta dos sensores e enviado ao módulo ZigBee conectado em 2 pinos do Microcontrolador (RC7/RX e RC6/TX) estes pinos são utilizados para comunicação serial com o módulo. O PIC tem mais 4 portas utilizadas para o controle, acionamento ou não, dos motores. De acordo com a informação recebida do Computador Central, o PIC aciona ou desativa cada um dos motores, isto faz com que o robô vire na direção necessária para a correção do trajeto a ser seguido. A programação desenvolvida em linguagem C traz como benefício ao projeto, códigos mais curtos e mais claros, porém traz como um prejuízo que durante a compilação são carregados mais módulos, isto faz com que seja utilizada mais memória do PIC. Motores No robô são utilizados dois motores DC, um faz a tração das rodas da direita e outro para as rodas da esquerda, para alimentação dos motores se utiliza baterias que fornecem até seis volts em cada motor. Os dois motores possuem uma caixa de redução de 100:30 fazendo com que diminua a velocidade do robô, mas que aumente o torque. Como é necessário ser efetuada a inversão de polaridade dos motores possibilitando a movimentação do robô para todas as direções foi utilizado um circuito integrado L298, que possui duas pontes de Wheatstone. Na figura 3-3 tem-se o protótipo dos motores. Figura 3-3 Protótipo dos motores montados

29 ZigBee A utilização da comunicação via ZigBee traz como maior benefício a fácil mobilidade do robô para os ambientes, não restringindo o acesso a locais distantes do computador central ou de difícil acesso. O módulo ZigBee utilizado destina-se apenas a transferência dos dados entre Microcontrolador e Computador Central. O Módulo utilizado é o ZigBee-Pró/XBee da MaxStream, além de dois módulos deste modelo, é utilizado um outro módulo, CON-USBBEE, que destina-se a fazer a conversão do ZigBee para porta USB. O módulo ZigBee que está acoplado ao robô é alimentado por baterias fornecendo tensão de 3,3 volts e o módulo que fica acoplado ao conversor para USB é alimentado pela própria porta USB, esta fornece uma tensão de 5 volts, no módulo conversor possui um divisor de tensão para fornecer apenas 3,3 volts ao ZigBee. Nas figuras 3-5 e 3-6 tem-se respectivamente, o módulo ZigBee e o módulo COM-USBBEE. Figura 3-4 Módulo ZigBee Figura 3-5 Módulo CON-USBBEE Neste projeto, como serão utilizados dois módulos, a topologia, neste caso, é chamada peer-to-peer ou pontoa-ponto. Este tipo de topologia utiliza um módulo ZigBee como coordenador da rede, este é o módulo conectado o PC, e o outro módulo é denominado end-point ou dispositivo-final conectado ao robô. O protocolo utilizado par comunicação entre os dispositivos ZigBee é chamado de Comunicação via Mensagens (Communicating Via Messaging), isto significa que cada dispositivo comunica com outro, que esteja na mesma rede, por meio de mensagens. Cada dispositivo requer primeiramente descobrir e manter os endereços dos outros dispositivos possíveis de envio e cada mensagem enviada é direcionada diretamente para o dispositivo de interesse. Este tipo de comunicação é chamado Endereçamento Direto (Direct Addressing). A Faixa de freqüência utilizada na transmissão do ZigBee, por padrão é 2,4 GHz, a taxa de transferência dentro desta banda é 250 Kbps e a taxa de transferência entre o módulo e os circuitos implementados é 115,200 Kbps (XBEE, 2009). O sistema de comunicação de dados em uma rede é feita por meio do modo não guiado (non-beacon), cada dispositivo que deseja enviar um dado aguarda um canal disponível (become idle), dentro da banda de 2,4Ghz, como mostra a figura 3-7.

30 Figura 3-6 Sistema de comunicação (non-beacon) Os dados no ZigBee recebidos da UART pelo pino DI(RX) são colocados na fila para transmissão via RF. Já os dados recebidos do canal de RF, são transmitidos por meio do pino DO(TX). O módulo ZigBee estará configurado para o modo transparente, os dados são transmitidos e recebidos da mesma forma que uma comunicação Serial RS232 padrão. Os módulos dispõem de buffers de transmissão e recepção para um melhor desempenho na comunicação serial. Na figura 3-8 tem-se o frame de dado padrão do RS232. Figura 3-7 Frame de dado padrão RS232 Software - SICROMAE O software em C++ instalado no computador remoto foi batizado como SICROMAE (Sistema de Controle de Robôs para Mapeamento de Ambientes Estruturados), é capaz de teleguiar o robô utilizando uma rede sem fio ZigBee, por meio da porta serial com o auxilio de um módulo conversor conectado a porta USB. Também é capaz de mostrar o mapeamento online. Protocolo de comunicação A comunicação entre o PC e o Robô é efetuada por meio de um protocolo, descrito e especificado na tabela 3-2.

31 Tabela 3-1 Especificação dos comandos de comunicação Sentido do Sinal PC ROBO ROBO PC Comando Ação Sensor ativo Significado Vai para trás vai para frente vai para esq vai para dir Atrás Frente Esquerda Direita Comando/Byte 1000 100 10 1 0 0 0 0 Na tabela 3-3 tem-se os comandos para efetuar a comunicação PC->Robô e Robô->PC: Tabela 3-2 Comandos de comunicação entre Robô e PC Índice Comando Descrição 1 9 PC->Robô, conectar 2 9 Robô->PC, confirmação conectar 3 9 PC->Robô, desconectar 4 9 Robô->PC, confirmação desconectar 3 0 Robô->PC, nenhum sensor ativado 4 1 Robô->PC, sensor da direita ativado 5 10 Robô->PC, sensor da esquerda ativado 6 11 Robô->PC, sensor da direita e esquerda ativados 7 100 Robô->PC, sensor da frente ativado 8 101 Robô->PC, sensor da direita e frente ativado 9 110 Robô->PC, sensor da esquerda e frente ativados 10 111 Robô->PC, sensor da direita, esquerda e frente ativados 11 1000 Robô->PC, sensor de tras ativado 12 1001 Robô->PC, sensor da direita e tras ativados 13 1010 Robô->PC, sensor da esquerda e tras ativados 14 1011 Robô->PC, sensor da direita, esquerda e tras ativados 15 1100 Robô->PC, sensor da frente e tras ativados 16 1101 Robô->PC, sensor da direita, frente e tras ativados 17 1110 Robô->PC, sensor da esquerda, frente e tras ativados 18 1111 Robô->PC, todos os sensores ativos 19 1 PC->Robô, mover para direita 20 2 PC->Robô, mover para esquerda 21 4 PC->Robô, mover para frente 22 7 PC->Robô, girar 180 graus 23 8 PC->Robô, mover para trás

32 CAPÍTULO 4 - PROJETO Neste capítulo serão descritos os módulos do projeto. Em cada módulo do projeto têm-se diagramas esquemáticos, fluxogramas e protótipos de telas. Projeto do Hardware Para o projeto de hardware têm-se os diagramas esquemáticos dos módulos de: Microcontrolador Sensores Motores Comunicação Módulo do Microcontrolador Foram utilizados 4 pinos do PORTB como saída, 2 pinos de PWM, os pinos de RX e TX da porta serial e 4 pinos da entrada analógica do microcontrolador. As funcionalidades dos pinos utilizados serão descritas nas próximas seções. Na figura 4-2 tem-se o esquemático do módulo do microcontrolador, seguida da tabela 4-3 de componentes do esquemático.

33 Figura 4-1 Diagrama esquemático do módulo microcontrolador Legenda C2 X1 Tabela 4-1 Componentes do microcontrolador Componente 10n F 12K Hz Na figura 4-4 tem-se a legenda dos sinais do módulo do microcontrolador. Tabela 4-2 Legenda de sinais do microcontrolador Legenda Pinagem Sinal Vcc 1 Alimentação OSC1 13 Oscilador porta 1 OSC2 14 Oscilador porta 2 O-MD 16 Saída do PWM2 para motor direito O-ME 17 Saída do PWM1 para motor esquerdo I-SSD 19 Entrada do sinal do sensor da direita I-SSE 20 Entrada do sinal do sensor da esquerda I-SSF 21 Entrada do sinal do sensor da frente I-SST 22 Entrada do sinal do sensor de trás O-XBT 25 Saída serial para o módulo ZigBee I-XBR 26 Entrada serial para o módulo ZigBee O-ME-IN1 33 Saída para controle do motor esquerdo pino 1 O-ME-IN2 34 Saída para controle do motor esquerdo pino 2 O-ME-ENA 35 Saída para habilitar motor esquerdo O-MD-IN1 36 Saída para controle do motor direito pino 1 O-MD-IN2 37 Saída para controle do motor direito pino 2

34 O-MD-ENB 38 Saída para habilitar motor direito Módulo do Sensor O módulo de sensores é dotado de quatro sensores, direita, esquerda, frente e trás. Todos são alimentados com 5 volts e suas saídas são conectadas as portas de entrada analógicas do microcontrolador como mostra a tabela 4-1. Tabela 4-3 Saida dos sensores/entrada no microcontorolador Sensor Entrada Microcontrolador Direita RA0 Esquerda RA1 Frente RA2 Trás RA3 Na figura 4-1 tem-se o diagrama de esquemático do módulo de sensor, seguida da tabela 4-2 das legendas dos componentes do esquemático. Figura 4-2 Diagrama esquemático do sensor Legenda R1 R2 U3 Tabela 4-4 Componentes do esquemático do sensor Componente 0,0047K Oms 22K Oms Sensor de Infravermelho Módulo dos Motores Como já citado foi utilizado o drive de potência L298N para controle da polaridade e velocidade dos motores. Os pinos 5, 7, 10 e 12 são acoplados nos pinos 33, 34, 35 e 36 do microcontrolador para controle da polaridade e os pinos 6 e 11 acoplados no pinos 16 e 17, para controle da velocidade dos motores.

35 Na figura 4-3 tem-se o diagrama de esquemático do módulo de controle dos motores, seguida da tabela 4-5 dos componentes deste esquemático. Figura 4-3 Diagrama esquemático do módulo de controle dos motores Tabela 4-5 Componentes do módulo de controle dos motores Legenda Componente R2 1 Ohm C3 100 nf L298 Circuito integrado para inversão de polaridade Na tabela 4-6 tem-se a legendas dos sinais do módulo de controle dos motores. Tabela 4-6 Legenda de sinais do módulo de controle de motores Legenda Pinagem Sinal SENSA 1 Saída para o terra O-ME1 2 Saída 1 para o motor esquerdo O-ME2 3 Saída 2 para o motor esquerdo Vs 4 Tensão de referência I-ME-IN1 5 Entrada 1 do controle do motor esquerdo I-ME-ENA 6 Entrada para habilitar motor esquerdo I-ME-IN2 7 Entrada 2 do controle do motor esquerdo GND 8 Terra Vcc 9 Tensão de alimentação dos motores I-MD-IN1 10 Entrada 1 do controle do motor direito I-MD-ENB 11 Entrada para habilitar motor direito I-MD-IN2 12 Entrada 2 do controle do motor direito O-MD1 13 Saída 1 para o motor direito O-MD2 14 Saída 2 para o motor direito SENSB 15 Saída para o terra

36 Na figura 4-4 tem-se o diagrama esquemático do circuito integrado L298. Módulo de Comunicação Figura 4-4 Circuito Integrado L298 O módulo de comunicação utilizado foi o XBee da MaxStream, série 1. Para a comunicação foi utilizado os pinos de RX e TX (2 e 3) acoplados nos pinos RX e TX (26 e 25) do microcontrolador. Este módulo é alimentado com 3,3 volts. Na figura 4-5, tem-se o diagrama de esquemático deste, seguida da tabela 4-7 descrevendo as legendas dos sinais deste módulo. Figura 4-5 Diagrama esquemático módulo de comunicação

37 Tabela 4-7 Legenda de sinais da comunicação Legenda Pinagem Sinal Vcc 1 Tensão de alimentação O-XBT 2 Saída 1 para o motor esquerdo I-XBR 3 Saída 2 para o motor esquerdo GND 10 Terra Integração dos Módulos O circuito é alimentado por duas baterias, uma de 9 volts e outra de 6 volts utilizada apenas no módulo de controle dos motores. Possuí dois reguladores de tensão, um regulando 9 para 5 volts, utilizado para os módulos de sensor e microcontrolador, e outro regulando 5 para 3,3 volts utilizado no módulo de comunicação. Na figura 4-6 tem-se o diagrama de esquemático da integração dos módulos de hardware, formando assim o circuito do robô. Figura 4-6 Diagrama do esquemático do hardware

38 Na tabela 4-8 tem-se a tabela dos componentes do módulo de hardware. Legenda B1 B2 C1 C2 D1 R1 R2 R3 R4 R5 R6 R7 U1 U2 U3 U4 U5 Tabela 4-8 Componentes do módulo de hardware Componente Bateria de 9 volts Bateria de 6 volts Capacitor de 22pF Capacitor de 22pF LED de alto brilho na cor verde Resistor de 22K Ohm Resistor de 47 Ohm Resistor de 1 Ohm Resistor de 1 Ohm Resistor de 330 Ohm Resistor de 330 Ohm Resistor de 1K Ohm Microprocessador PIC 16F877A LM7805 Sensor de Infravermelho CI L298N LM317T Circuito Impresso Na figura 4-7 tem-se a placa de circuito impresso do hardware. Figura 4-7 Diagrama esquemático do circuito impresso do hardware Protótipo O robô pesa aproximadamente 350 gramas e suas dimensões são de 18x18x15 centímetros. Na figura 4-8

39 tem-se o protótipo do robô batizado de PAS01. Figura 4-8 Protótipo do robô Projeto do Firmware Como já foi citado, o firmware foi desenvolvido na linguagem C e foi utilizada a IDE MikroC, versão 8.0. O programa tem como função fazer a leitura dos sensores e enviar esses dados para o computador remoto, utilizando o módulo de comunicação citado neste capitulo, e assim ficará aguardando receber instruções da comunicação. E por fim fazer o tratamento dos dados recebidos. Na figura 4-9 tem-se o fluxograma do firmware.

40 Figura 4-9 Fluxograma do firmware Projeto do Software SICROMAE O software foi desenvolvido na linguagem C++, utilizando a IDE do Borland Builder 6.0. Na figura 4-10 tem-se o fluxograma do software.

41 Figura 4-10 Fluxograma do software SICROMAE A tela principal é composta de um menu, uma área de log utilizada para mostrar o mapeamento, uma área que mostra quais sensores estão ativados e desativados e uma área que indica que movimento o robô esta executando. Na figura 4-11 tem-se a tela principal do software.

Figura 4-11 Tela principal do software SICROMAE 42

43 Se pressionado a opção do menu Comunicação podemos conectar ou desconectar a comunicação com o robô, como mostrado na figura 4-12. Figura 4-12 Tela do software da opção Comunicação

44 Se a opção Mapeamento do menu for selecionada poderemos parar, continuar, carregar, salvar ou limpar o mapeamento, como mostra a figura 4-13. Figura 4-13 Tela do software da opção Mapeamento

45 Quando a opção Configurações do menu for solicitada, teremos a opção para selecionar a porta que está conectado o conversor USB/Serial do ZigBee ou a opção de configuração do robô, como mostra a figura 4-14. Figura 4-14 Tela do software da opção Configurações

46 Caso seja selecionado a opção Robô do menu Configurações, pode-se configurar os sensores e os movimentos do robô, como mostra a figura 4-15. Figura 4-15 Tela do software de configuração do robô da opção Configurações Os valores aceitos para configuração dos sensores variam de 0 à 999, sendo que 0 equivale à 0 volt e 999 à 5 volts. Se o sensor da direita for configurado com o valor 499, este sensor será ativado quando a leitura do sensor foi inferior a 2,5 volts. Para a configuração dos motores os valores variam de 0 à 255, sendo que 0 equivale a 0 volt e 255 à 5 volts. Para a configuração dos movimentos para a direita, esquerda e giro de 180º também tem-se a configuração do tempo que cada motor fica ativa. Esse valor varia de 0 à 999 milisegundos. Quando são efetuadas essas conversões os motores são acionados em sentidos oposto sequencialmente. Utilizando a conversão da direita como exemplo, têm-se os motores ativados na sequência: direita para trás, esquerda para frente, direita para trás e finalmente esquerda para trás. Os tempos configurados são os tempos exatos que os motores ficam ativos. Na opção Sobre tem-se as informações do software, como mostrado na figura 4-16. Figura 4-16 Tela do software da opção Sobre

47 Na figura 4-17 tem-se um exemplo do software efetuando o mapeamento de uma ambiente estruturado. Figura 4-17 Tela do software com o mapeamento em andamento A inteligência do robô não utiliza algoritimos genéticos existentes, foi desenvolvido totalmente pelo autor do projeto. Foi utilizado o conceito de Controle Reativo (ver Capítulo 2) no desenvolvimento.o código pode ser visualizado no apêndice C. Testes e validações Nesta seção serão descritos os teste e validações realizados no robô, software SICROMAE e sistema. Os resultados podem ser visualizados no Capítulo 5 Resultados. Robô Utilizando um programa de teste no computador remoto foram efetuadas as seguintes validações no robô: 1. Validar a comunicação com o PC. 2. Validar se o robô esta detectando corretamente os obstáculos aproximados dos sensores da direita, esquerda, frente e trás. Também será verificado se está enviando os dados corretamente para o PC. 3. Validar se o robô esta se movimentado em linha reta e efetuando as conversões para a esquerda, direita e giro de 180 graus corretamente.

48 Software SICROMAE Abaixo tem-se os as validações realizadas utilizando o software SICFROMEA: 1. Validar a comunicação com o robô. 2. Validar a inteligência do robô. 3. Validar o mapeamento online. Para validar a comunicação foi repetido o de comunicação realizado para validar a comunicação do robô com o computador remoto. Foram efetuados testes de mesa utilizando ambientes estruturados virtuais, para validar a inteligência do robô e o mapeamento online. Sistema Abaixo estão descritas as validações realizadas para a o sistema: 1. Validar comunicação entre PC->Robô e Robô->PC. 2. Analisar se as informações recebidas e enviadas ao robô foram corretas. 3. Verificar se as opções do software SICROMEA, Parar Mapeamento e Continuar Mapeamento estavam funcionando corretamente. 4. Verificar se o campo de Log do software SICROMEA está apresentando as informações corretas do mapeamento. 5. Verificar se o mapeamento online na tela do SICROMEA está correto. 6. Analisar a velocidade media em que o robô se movimenta e a distância percorrida por pixel no sistema SICROMEA. 7. Verificar a autonomia das baterias de 6 e 9 volts do robô. As configurações para o robô no software SICROMAE foram de 650 para os sensores, 145 para PWM da esquerda e 130 para PWM da Direita. Na figura 4-18 tem-se o projeto do ambiente estruturado utilizado nos testes: Figura 4-18 Planta do projeto do ambiente estruturado dos testes e validações

49 CAPÍTULO 5 - RESULTADOS Neste capítulo são apresentados os resultados obtidos nos teste e validações. Robô Para a validação da comunicação do robô foi utilizado um led de conexão conectado ao microcontrolador e após efetuada a conexão o led de cor verde foi ativado com sucesso. O teste foi repetido por dez vezes e em todas foi obtido êxito em todos. A segunda validação foi verificar se o robô esta detectando corretamente os obstáculos aproximados dos sensores e também se estava enviando os dados corretamente para o PC. Assim, foram desligados os motores e foram aproximados objetos na direção dos sensores. Todos os sensores detectaram os objetos sem problemas e enviaram corretamente as informações para o PC. A distância mínima e máxima entre os sensores e os objetos medida foi de três a seis centímetros. Essa variação é decorrente da luminosidade do ambiente. As validações foram repetidas dez vezes para cada sensor (direita, esquerda, frente e trás) e foi obtido êxito em todas. Figura 5-1 Validação do sensor da frente

50 Figura 5-2 Validação do sensor da direita Figura 5-3 Validação do sensor da esquerda Figura 5-4 Validação do sensor de trás Por fim foi validado se o robô estava efetuado as conversões para direita, esquerda e giro de 180

51 corretamente. Foram realizadas trinta conversões no total, sendo elas dividas igualmente para esquerda, direita e giro de 180. Todas as conversões foram efetuadas com êxito, mas em vinte por cento das conversões para a direita e esquerda o robô não fez a conversão próximo de 90 graus, variando entre 90 e 100. Para os giros de cento e oitenta graus não ocorreram erros. Software SICROMEA Para efetuar a validação da comunicação do software com o robô foi repetido o teste de comunicação realizado para o robô, mas agora utilizando o software SICROMAE. A validação foi repetida por dez vezes e em todas foi obtido êxito. Por fim, foram validadas a inteligência e o mapeamento do online do software. Foram efetuados testes de mesa minuciosos utilizando ambientes virtuais para estas validações. Também foram desligados os motores do robô e em seguida efetuada a comunicação do computador remoto com o robô. Assim, foram aproximados objetos na direção dos sensores do robô e verificado se a inteligência trabalhava corretamente e se o software efetuava o mapeamento online na tela. Os testes foram satisfatórios quando utilizados ambientes estruturados com ângulos derivados de 90 graus. Para estes ambientes a inteligência não encontrou dificuldades para efetuar o mapeamento. Na figura 5-5 tem-se o software executando o mapeamento. Figura 5-5 Validação do software Sistema Para efetuar a validação do sistema foi utilizado o ambiente estruturado mostrado na figura 4-18 do capítulo

52 4. Foram repetidas dez vezes o mapeamento deste ambiente e foram obtidos os resultados descritos abaixo: Velocidade Média do robô é igual a 0,2 m/s. Cada pixel apresentado na tela do software SICROMEA é equivalente a 0,13 metros mapeado, podendo ocorrer uma variação de um centímetro, tanto para cima como para baixo. A luminosidade do ambiente estruturado interfere na distância em que os obstáculos são detectados. O robô se comporta muito bem em ambientes estruturados com obstáculos de ângulos quadrados, derivados de noventa graus, caso existam obstáculos não derivados destes ângulos o mapeamento não será preciso. Tanto o software SICROMEA como o firmware não apresentaram erros. Houve correção da direção do robô em vinte por cento dos movimentos para frente. As causas podem estar relacionadas a obstáculos deformados ou calibração errada do robô para o ambiente (sensores e PWM s). A autonomia do robô foi de aproximadamente 25 a 30 minutos utilizando baterias alcalinas. Na figura 5-6 tem-se imagens da validação do sistema. Figura 5-6 Validação do sistema Vale ressaltar que o robô deve ser calibrado para cada ambiente estruturado, podendo ocorrer problemas no mapeamento caso isso não ocorra.

53 CAPÍTULO 6 CONCLUSÃO Neste capítulo é apresentada a conclusão do projeto, assim como trabalhos futuros e as dificuldades encontradas. Conclusão Ao final dos testes e validações realizadas com o sistema pode-se afirmar que ao final do projeto, o sistema para mapeamento de ambientes estruturados, composto de um robô telecomandado, um computador remoto e o software SICROMAE atendeu as expectativas inicialmente estabelecidas neste projeto, efetuando o mapeamento de ambientes estruturados. Logo, esse projeto se mostrou capaz de ser utilizado para aplicações domésticas, como robôs autônomos que limpam a casa e brinquedos autônomos. Trabalhos Futuros Para melhor funcionamento do sistema seria muito importante aumentar a quantidade de sensores, de quatro para oito, sendo alocados nas extremidades das arestas do robô, com isso aumentaria o desempenho para mapeamento de ambientes estruturados com obstáculos irregulares. Outra modificação importante seria a instalação de uma câmera fotográfica para o armazenamento de imagens do ambiente mapeado, com isso seria necessário utilizar motores com potência superior dos atuais de 0,5A. Mas a mais ambiciosa seria incrementar a inteligência para mapeamento de ambientes diversos, com diferentes tipos de solos e obstáculos móveis. Dificuldades Encontradas Foram encontradas poucas dificuldades em relação ao desenvolvimento do software SICROMEA, apenas um gasto maior de tempo com o desenvolvimento da inteligência do robô. Em relação ao desenvolvimento do firmware ocorreram problemas em virtude da falta da opção de debug apresentada no gravador de PIC, sendo ela solucionada efetuando testes minuciosos no firmware. No módulo de hardware as dificuldades foram maiores, a principal foi devido à caixa de redução do conjunto de rodas serem de plástico causando um desgaste diferenciado e abusivo em cada conjunto, também causando um desgaste desnecessário de tempo para a calibração em diferentes pisos para que o robô se movimentasse corretamente, em linha reta e efetuasse as conversões para a direita, esquerda e 180. Também encontrei dificuldades para a utilização de baterias seladas devido à baixa potência (0,5A) dos motores para transportá-las.

54 REFERENCIAS BIBLIOGRÁFICAS AGUIRRE, L. A.; DA SILVA, A.P.A.; Campos, M.F.M; Do Amaral, W.C. (2007). "Enciclopédia de Automática: Controle e Automação". Editora Blucher: São Paulo, Vol.3 (Robótica). AGX (2009). AGX - AGplane. Disponível em: http://www.agx.com.br/. Visitado em: 21 de outubro de 2009. AMARKONMYWALL. Disponível em: http://amarkonmywall.wordpress.com/2008/03/29/the-high-cost-ofkiddos/. Visitado em: 22 de outubro de 2009. ASIMOV, I. (1968) I, Robot (a collection of short stories originally published between 1940 and 1950), Voyager - HarperCollinsPublishers, 249p. BEKEY, GEORGE A. (2005) Autonomous Robots: From Biological Inspiration to Implementation and Control. The MIT Press: Cambrigde, London. 563p. DE SOUZA, D. J; LAVINIA, N. C. PIC16F877A Conectando o PIC: Recursos Avançados. São Paulo: Érica, 2008. 389p. DUDEK, G.; JENKIN, M. (2000). Computational Principles of Mobile Robotics. Cambridge, London, UK: The MIT Press, 280 p. FOX, D., BURGARD, W., AND THRUN, S. (1999A) Markov localization for mobile robots in dynamic environments, Journal of Artificial Intelligence Research, vol.11, pp.391-427. GISLASO, D. (2006). ZigBee Wireless Networking, CMP Books, 2006, 256 p. GUNTLE, G; SCHILDT, H. Borland C++ Builder: Referência Completa. São Paulo: Campus, 2001. 780p. HEINEN, M. R.; OSÓRIO, F. S. (2006a). Applying Genetic Algorithms to Control Gait of Physically Based Simulated Robots. In: IEEE Congress on Evolutionary Computation. Proceedings of the WCCI - CEC. Vancouver: IEEE Press. v. 1. p. 6714-6721. HONDA (2009). Humanoid robot ASIMO. Disponível em: http://world.honda.com/asimo/. Visitado em: 20 de outubro de 2009. IROBOT (2009). Cleaning Robots (Roomba, Scooba, Dirt Dog, Verro). Disponível em: http://www.irobot.com/ ou http://en.wikipedia.org/wiki/roomba. Visitado em: 20 de outubro de 2009. JUNG, C. R.; OSÓRIO, F. S.; KELBER, C.; HEINEN, F. (2005) Computação embarcada: Projeto e implementação de veículos autônomos inteligentes, In: Anais do CSBC 05 XXIV Jornada de Atualização em Informática (JAI). São Leopoldo, RS: SBC, v. 1, p. 1358 1406. Disponível em: http://osorio.wait4.org/palestras/jai2005.html Visitado em: 20 de outubro de 2009. MICROCHIP, PIC 16F87XA 28/40/44 PIN ENHANCED FLASH MICROCONTROLERS, Data Sheet, 2003.

55 NERIS, LUCIANO DE OLIVEIRA (2001). Um piloto automático para as aeronaves do projeto ARARA, USP ICMC. Dissertação de Mestrado do PGCCMC. Orientador: Onofre Trindade Junior. Disponível em: http://www.teses.usp.br/]. Visualizado em: 20 de outubro de 2009. RHEA. Disponível em: http://rhea.la.asu.edu/spl/missions/mer/. Visitado em: 22 de outubro de 2009. ROVERS. Disponivel em: http://pt.wikipedia.org/wiki/mars_exploration_rovers. Visitado em : 8 de dezembro de 2009. SONY. Disponível em: http://support.sony-europe.com/aibo/. Visitado em: 22 de outubro de 2009. ST MICROELECTRONICS, L298N DUAL FULL-BRIDGE DRIVER, Data Sheet, 2000. XBEE. Disponível em: http://www.digi.com/register/index.jsp?mu=/pdf/ds_xbeemultipointmodules.pdf. Visitado em: 08 de dezembro de 2009. WALYOU. Disponível em: http://www.walyou.com/blog/2008/11/17/automower-solar-powered-lawnmower/. Visitado em: 22 de outubro de 2009. THRUN, S.; BURGARD, W.; FOX, D. (2005). Probabilistic Robotics. Cambridge: The MIT Press. 667p.

56 ANEXO A ARTIGO CIENTÍFICO Robô para Mapeamento de Ambientes Estruturados Roberto Augusto Paschoal robertopaschoal@yahoo.com.br Valfredo Pilla Jr vpilla@up.edu.brs (Orientador) Resumo Este artigo foi realizado como parte das atividades desenvolvidas no trabalho de conclusão de curso e teve como objetivo desenvolver uma planta de teste para um controlador baseado em computação reconfigurável. Esta planta é um robô móvel com telecomando, o qual possui sensores em duas dimensões para a medida de distâncias. O software controlador em teste foi implementado via software em um computador remoto hospedeiro. Mais especificamente, este sistema tem como finalidade mapear um ambiente estruturado. Alem disso, espera-se também a ajudar na evolução da robótica, em especial para o desenvolvimento de novos Robôs Móveis Autônomos, conhecidos como RMAs. Palavras-chave: Robótica, Sem fio, Robôs Moveis Autônomos, Computação Reconfigurável, Telecomando 1. INTRODUÇÃO 2. FUNDAMENTAÇÃO TEORICA O estudo da robótica móvel é um tema bastante relevante e atual, sendo que esta área de estudo, pesquisa e desenvolvimento apresentou um grande salto em seu desenvolvimento nas últimas décadas. A aplicação prática de robôs móveis aliada a diferentes atividades na sociedade vem demonstrando o quanto promissor é o futuro desta área. Por exemplo, seu uso em aplicações domésticas (aspiradores de pó e cortadores de grama robóticos), industriais (transporte automatizado e veículos de carga autônomos), urbanas (transporte público, cadeiras com rodas robotizadas), militares (sistemas de monitoramento aéreo remoto, transporte de suprimentos e de armamento em zonas de guerra, sistemas táticos e de combate) e de segurança e defesa civil e militar (controle e patrulhamento de ambientes, resgate e exploração em ambientes hostis), demonstra à grande gama de aplicações atuais dos robôs móveis e os interesses econômicos envolvidos em relação ao seu desenvolvimento e aplicação. A evolução dos robôs, e em especial dos robôs móveis, tem recebido nos últimos anos um amplo destaque junto à mídia e à sociedade de um modo geral. Onde se falava muito em robôs industriais e braços mecânicos robóticos, atualmente as atenções se voltaram para robôs móveis, capazes de se deslocar no ambiente em que se encontram, e principalmente nos Robôs Móveis Autônomos RMA s e Veículos Autônomos Inteligentes (JUNG, 2005). Os RMA s possuem como características fundamentais, as capacidades de locomoção e de operação de modo semi ou completamente autônomo. Também deve ser considerado que maiores níveis de autonomia serão alcançados somente à medida que o robô passe a integrar outros aspectos considerados da maior importância, como: capacidade de percepção (sensores que conseguem ler o ambiente onde ele atua), capacidade de agir (atuadores e motores capazes de produzir ações, tais como o deslocamento do robô no ambiente), robustez e inteligência (capacidade de lidar com

57 as mais diversas situações, de modo a resolver e executar tarefas por mais complexas que sejam). O uso de técnicas de planejamento e controle robusto para a navegação e operação autônoma dos robôs é conhecido pelo termo Controle Robótico Inteligente, no qual este controle inteligente permite dotar os RMA s da capacidade de executar as mais diversas e complexas tarefas. Os Robôs Móveis Autônomos possuem diferentes configurações de dispositivos de hardware embarcados, de acordo com a função e as tarefas para as quais são projetados. Os principais dispositivos de Hardware de um robô são seus sensores e atuadores. Esses robôs possuem um projeto de sistema de controle que deve levar em conta uma série de quesitos e componentes, como por exemplo: Tipo de tarefa do robô; Tipo e precisão dos sensores embarcados: ; Tipo e precisão dos atuadores; O projeto do sistema de controle de um robô deve usualmente fazer adoção de uma arquitetura específica de controle, que seja capaz de realizar tarefas. Um sistema de controle de facil implemetação é o Controle Reativo, que consiste de um sistema de reação sensorial-motora (DUDEK, 2000). Normalmente não necessitando de muitos recursos computacionais para sua implementação. O controle reativo é composto basicamente de um ciclo, como é descrito a seguir: Leitura dos sensores; Processamento imediato destas informações; Geração de um comando de resposta para os atuadores; Usualmente um esquema de controle reativo considera apenas as leituras sensoriais realizadas no presente para tomada de decisão e geração de comandos de ação. Um sistema reativo é bastante útil para implementar comportamentos elementares como: desviar de obstáculos (reage a presença de um obstáculo), seguir um objeto (acompanhar um elemento guia) e seguir uma fonte luminosa (mover em direção a uma fonte de luz). 3. PROJETO O sistema é composto uma planta de teste controladora baseada em computação reconfigurável. A planta é constituída de um robô móvel com telecomando, o qual possui sensores em duas dimensões para a medida de distâncias. O sistema controlador em teste é implementado via software em um computador remoto hospedeiro. Mais especificamente, o sistema tem como finalidade mapear um ambiente estruturado. Esses ambientes não devem sofre interferências climáticas como chuvas, ventos, luz solar e o piso deve ser plano e com poucas deformações. O projeto foi dividido em seis blocos principais, sendo eles: Sensores Microcontrolador Motores e drives de potência Comunicação sem fio Computador central Interface gráfica e programa de controle A idéia principal do funcionamento do projeto é a cada certo instante de tempo, ou ciclo de processamento, o microcontrolador ler os sinais de cada sensor e enviar ao computador central, este verifica os dados enviados e retorna ao microcontrolador o que deve ser efetuado em seu andamento, acionando ou não os motores necessários para o desvio de obstáculos, assim o computador central irá desenhar este ponto na interface gráfica, isto será feito a cada ciclo de processamento, desenhando todo o trajeto na interface gráfica para o usuário. Figura 3-1 Diagrama do Sistema O diagrama, apresentado na figura 3-1, é um modelo de relacionamento entre os blocos que compõem o sistema. Neste o microcontrolador é o ponto principal do robô o qual lê as informações dos sensores envia, via rede ZigBee, para o computador central os dados e recebe deste mesmo computador as informações para acionamento dos motores. Os sensores utilizados são fotoelétricos, isto é, composto por um emissor infravermelho e um foto-transistor receptor. Estes sensores foram selecionados pela fácil implementação em circuitos, rápida resposta ao deslocamento e baixo consumo de energia. Com a proximidade dos sensores em um anteparo, o receptor tem o retorno da luz infravermelha emitida e a tensão de saída aumenta gradativamente conforme diminui a proximidade ao anteparo, este pino do transistor é conectado diretamente a um pino do Microcontrolador que trata esta tensão.

58 O Microcontrolador utilizado foi o PIC 16F877A, este micro-processador é alimentado com 5 volts, resultante de um regulador de tensão utilizando uma bateria de 9 volts. Foi utilizado 4 portas analógicas para controle dos quatro sensores. O PIC trabalha com valores analógicos nestas portas, dessa forma, foi efetuada a leitura da tensão de saída dos sensores, utilizando os pinos RA0, RA1, RA2 e RA3. Em cada ciclo de processamento do PIC é lido os valores de cada porta dos sensores e enviado ao módulo ZigBee conectado em 2 pinos do Microcontrolador (RC7/RX e RC6/TX) estes pinos são utilizados para comunicação serial com o módulo. O PIC tem mais 4 portas utilizadas para o controle dos motores, acionamento ou não. De acordo com a informação recebida do Computador Central, o PIC aciona ou desativa cada um dos motores, isto faz com que o robô vire na direção necessária para a correção do trajeto a ser seguido. O firmware foi desenvolvido na linguagem C. No robô foram utilizados dois motores DC, um faz a tração das rodas da direita e outro para as rodas da esquerda, a alimentação dos motores utiliza baterias que fornecem até 6 volts em cada motor. Os dois motores possuem uma caixa de redução de 100:30 fazendo com que diminua a velocidade do robô, mas que aumente o torque. Como é necessário ser efetuada a inversão de polaridade dos motores possibilitando a movimentação do robô para todas as direções foi utilizado um circuito integrado L298, que possui duas pontes de Wheatstone. O sistema de comunicação é dotado de dois módulos ZigBee, um conectado ao PIC e outro no computador remoto, utilizando um converso USB-COM fabricado pela empresa Rogercom (ROGERCOM, 2009). Os dados trafegam na rede por meio do modo não guiado (nonbeacon), cada dispositivo que deseja enviar um dado aguarda um canal disponível (become idle), dentro da banda de 2,4Ghz (XBEE, 2009). Na figura 3-2 tem-se a foto do protótipo do robô batizado de PAS01. O software controlador foi desenvolvido em C++, instalado no computador remoto é capaz de teleguiar o robô utilizando a rede sem fio ZigBee, por meio da porta serial com o auxilio de um módulo conversor conectado a porta USB. Por meio do software o robô e calibrado (sensores e motores). Também é capaz de apresentar o mapeamento online na tela. O software foi batizado de SICROMAE (Sistema de Controle de Robôs para Mapeamento de Ambientes Estruturados). A seguir na figura 3-3 temo uma tela do do software batizado de SICROMAE. Figura 3-3 Tela do software com o mapeamento em andamento 4. VALIDAÇÃO E RESULTADOS Para validar o sistema foi utilizado o ambiente estruturado mostrado na figura 4-1. Foram repetidas dez vezes o mapeamento deste ambiente. Figura 4-1 Projeto do ambiente estruturado utilizado nos testes As validaçoes efetuadas foram: Figura 3-2 Protótipo do robô 1. Comunicação entre PC->Robô e Robô->PC.

59 2. Analisar se as informações recebidas e enviadas ao robô foram corretas. 3. Verificar se as opções do software SICROMEA, Parar Mapeamento e Continuar Mapeamento estavam funcionando corretamente. 4. Verificar se o campo de Log do software SICROMEA está apresentando as informações corretas do mapeamento. 5. Verificar se o mapeamento online na tela do SICROMEA está correto. 6. Analisar a velocidade media em que o robô se movimenta e a distância percorrida por pixel no sistema SICROMEA. 7. Verificar a autonomia das baterias de 9 e 6 volts do robô. estabelecidas neste projeto, efetuando o mapeamento de ambientes estruturados. Alem disso, esse projeto mostrou que pode ser utilizado para aplicações domesticas, como robôs autônomos que limpam a casa e brinquedos autônomos. Algumas modificações para melhor funcionamento do sistema poderiam ser desenvolvidas como aumentar a quantidade de sensores, de quatro para oito, sendo alocados nas extremidades das arestas do robô, com isso se aumentaria o desempenho para mapeamento de ambientes estruturados com obstáculos irregulares. Outra modificação importante seria a instalação de uma câmera fotográfica para o armazenamento de imagens do ambiente mapeado, com isso seria necessário utilizar motores com torque superior dos atuais. Mas a mais ambiciosa seria incrementar a inteligência para mapeamento de ambientes diversos, com diferentes tipos de solos e obstáculos moveis. As configurações para o robô no software SICROMAE foram de 650 para os sensores, 145 para PWM da esquerda e 130 para PWM da Direita. Abaixo tem-se os resultado obtidos. Velocidade Média do robô encontrada foi de 0,2 m/s. Cada pixel apresentado na tela do software SICROMEA é equivalente a 0,13 metros mapeado, podendo ocorrer uma variação de um centímetro, tanto para cima como para baixo. O robô se comporta muito bem em ambientes estruturados com obstáculos de ângulos quadrados, derivados de 90º, caso existam obstáculos não derivados destes ângulos o mapeamento não será preciso. Tanto o software SICROMEA como o firmware não apresentaram erros. Houve correção da direção do robô em vinte por cento dos movimentos para frente. As causas podem estar relacionadas a obstáculos deformados ou calibração errada do robô para o ambiente (sensores e PWM s). A autonomia do robô foi de aproximadamente 25 a 30 minutos utilizando baterias alcalinas. 5. CONCLUSÃO Ao final dos testes e validações realizadas com o sistema pode-se afirmar que ao final do projeto, o sistema para mapeamento de ambientes estruturados, composto de um robô telecomandado, um computador remoto e o software SICROMEA atendeu as expectativas inicialmente 6. REFERENCIAS BIBLIOGRÁFICAS AGUIRRE, L. A.; DA SILVA, A.P.A.; Campos, M.F.M; Do Amaral, W.C. (2007). "Enciclopédia de Automática: Controle e Automação". Editora Blucher: São Paulo, Vol.3 (Robótica). AGX (2009). AGX - AGplane. Disponível em: http://www.agx.com.br/. Visitado em: 21 de outubro de 2009. AMARKONMYWALL. Disponível em: http://amarkonmywall.wordpress.com/2008/03/29/the-highcost-of-kiddos/. Visitado em: 22 de outubro de 2009. ASIMOV, I. (1968) I, Robot (a collection of short stories originally published between 1940 and 1950), Voyager - HarperCollinsPublishers, 249p. BEKEY, GEORGE A. (2005) Autonomous Robots: From Biological Inspiration to Implementation and Control. The MIT Press: Cambrigde, London. 563p. DE SOUZA, D. J; LAVINIA, N. C. PIC16F877A Conectando o PIC: Recursos Avançados. São Paulo: Érica, 2008. 389p. DUDEK, G.; JENKIN, M. (2000). Computational Principles of Mobile Robotics. Cambridge, London, UK: The MIT Press, 280 p. FOX, D., BURGARD, W., AND THRUN, S. (1999A) Markov localization for mobile robots in dynamic environments, Journal of Artificial Intelligence Research, vol.11, pp.391-427. GISLASO, D. (2006). ZigBee Wireless Networking, CMP Books, 2006, 256 p. GUNTLE, G; SCHILDT, H. Borland C++ Builder: Referência Completa. São Paulo: Campus, 2001. 780p.

60 HEINEN, M. R.; OSÓRIO, F. S. (2006a). Applying Genetic Algorithms to Control Gait of Physically Based Simulated Robots. In: IEEE Congress on Evolutionary Computation. Proceedings of the WCCI - CEC. Vancouver: IEEE Press. v. 1. p. 6714-6721. HONDA (2009). Humanoid robot ASIMO. Disponível em: http://world.honda.com/asimo/. Visitado em: 20 de outubro de 2009. IROBOT (2009). Cleaning Robots (Roomba, Scooba, Dirt Dog, Verro). Disponível em: http://www.irobot.com/ ou http://en.wikipedia.org/wiki/roomba. Visitado em: 20 de outubro de 2009. JUNG, C. R.; OSÓRIO, F. S.; KELBER, C.; HEINEN, F. (2005) Computação embarcada: Projeto e implementação de veículos autônomos inteligentes, In: Anais do CSBC 05 XXIV Jornada de Atualização em Informática (JAI). São Leopoldo, RS: SBC, v. 1, p. 1358 1406. Disponível em: http://osorio.wait4.org/palestras/jai2005.html Visitado em: 20 de outubro de 2009. MICROCHIP, PIC 16F87XA 28/40/44 PIN ENHANCED FLASH MICROCONTROLERS, Data Sheet, 2003. NERIS, LUCIANO DE OLIVEIRA (2001). Um piloto automático para as aeronaves do projeto ARARA, USP ICMC. Dissertação de Mestrado do PGCCMC. Orientador: Onofre Trindade Junior. Disponível em: http://www.teses.usp.br/]. Visualizado em: 20 de outubro de 2009. RHEA. Disponível em: http://rhea.la.asu.edu/spl/missions/mer/. Visitado em: 22 de outubro de 2009. SONY. Disponível em: http://support.sonyeurope.com/aibo/. Visitado em: 22 de outubro de 2009. ST MICROELECTRONICS, L298N DUAL FULL- BRIDGE DRIVER, Data Sheet, 2000. WALYOU. Disponível em: http://www.walyou.com/blog/2008/11/17/automower-solarpowered-lawn-mower/. Visitado em: 22 de outubro de 2009. XBEE. Disponível em: http://www.digi.com/register/index.jsp?mu=/pdf/ds_xbeemul tipointmodules.pdf. Visitado em: 08 de dezembro de 2009. THRUN, S.; BURGARD, W.; FOX, D. (2005). Probabilistic Robotics. Cambridge: The MIT Press. 667.

61 ANEXO B MANUAL Instalação do software SICROMAE Para efetuar a instalação do software SICROMAE siga os passos a seguir: Passo 1 - Executar o arquivo setup_sicromae.exe que consta no CD-ROM do trabalho de conclusão de curso. Dessa forma, será apresentada a tela de seleção do idioma, como mostra a figura 1. Figura Anexo B - 1 Seleção do idioma Passo 2 Seleciona o idioma desejado e clique em OK.

62 Passo 3 Após apresentada na figura 2, clique em Avançar. Figura Anexo B - 2 Inicio da instalação Passo 4 Selecione o local desejado para instalação e clique em Avançar na tela apresentada na figura 3. Figura Anexo B - 3 Local de destino da instalação Passo 5 Clique em Avançar na tela apresentada na figura 4.

63 Figura Anexo B - 4 Instalação do menu para inicialização Passo 6 Clicar em Instalar na tela apresentada na figura 5. Figura Anexo B - 5 Iniciar processo de instalação Passo 7 Aguarde a instalação e quando for apresentada a tela da figura 6, clique em Concluir para encerrar a instalação.

64 Figura Anexo B - 6 Concluir instalação Acessando o software SICROMAE Selecione no menu do Windows a opção Iniciar\Programas\SICROMEA\SICROMAE, como mostra a figura 7. Figura Anexo B - 7 Acessando o software SICROMAE Assim, será apresentada a tela principal do SICROMAE, como mostra a figura 8.

65 Figura Anexo B - 8 Tela principal do software SICROMAE Manual do software SICROMAE Abaixo tem-se a descrição das funções da tela principal do software: 1. Menu 2. Campo Conectado 3. Campo Conectado 4. Campo Desconectado 5. Movimento do robô 6. Sensores 7. Área Log 8. Área Mapeamento

66 Figura Anexo B - 9 Tela principal com as descrições Para efetuar a comunicação deve-se clicar sobre a opção Comunicação e em seguida Conectar, como mostra a figura 10. Figura Anexo B - 10 Efetuando a comunicação com o robô Para desconectar deverá ser acessada a opção do menu Comunicação e em seguida clicar sobre Desconectar. Na opção Mapeamento do menu, podemos parar, continuar, carregar, salvar ou limpar o mapeamento, como mostra a figura 11.

67 Figura Anexo B - 11 Opção do menu Mapeamento Na opção Configurações do menu, tem-se a opção para selecionar a porta que está conectado o conversor USB/Serial do ZigBee ou a opção de configuração do robô, como mostra a figura12. Figura Anexo B - 12 Opção do menu Configurações

68 Na opção Robô do menu, podemos configurar o robô, selecionado a opção Configurações. Para salvar as configurações clique em Salvar, caso contrario clique em Cancelar. Na figura 13 tem-se a tela de configurações. Figura Anexo B - 13 Tela de configurações do robô Os valores aceitos para configuração dos sensores variam de 0 à 999, sendo que 0 equivale à 0 volt e 999 à 5 volts. Se o sensor da direita for configurado com o valor 499, este sensor será ativado quando a leitura do sensor foi inferior a 2,5 volts. Para a configuração dos motores os valores variam de 0 à 255, sendo que 0 equivale a 0 volt e 255 à 5 volts. Para a configuração dos movimentos para a direita, esquerda e giro de 180º também tem-se a configuração do tempo que cada motor fica ativa. Esse valor varia de 0 à 999 milisegundos. Quando são efetuadas essas conversões os motores são acionados em sentidos oposto sequencialmente. Utilizando a conversão da direita como exemplo, têm-se os motores ativados na sequência: direita para trás, esquerda para frente, direita para trás e finalmente esquerda para trás. Os tempos configurados são os tempos exatos que os motores ficam ativos. Na opção Sobre do menu tem-se as informações do software, como mostrado na figura 14. Figura Anexo B - 14 Tela de informações do software