Navegação Topológica Aplicada a Agentes Robóticos Móveis
Abstract
Dissertação de Mestrado Integrado em Engenharia Electrotécnica e de Computadores apresentada à Faculdade de Ciências e Tecnologia
Full text
Navegação Topológica Aplicada a Agentes Robóticos Móveis Pedro Guilherme Santos Carvalho Borges Ramos Coimbra, Setembro de 2018
Navegação Topológica Aplicada a Agentes Robóticos Móveis Orientador: Professor Doutor Paulo Jorge Carvalho Menezes Co-Orientador: Doutor João Manuel Leitão Quintas Júri: Prof. Dr. Rui Paulo Pinto da Rocha Prof. Dr. Jorge Nuno de Almeida e Sousa Almada Lobo Prof. Dr. Paulo Jorge Carvalho Menezes Dissertação de Mestrado Integrado em Engenharia Electrotécnica e de Computadores, ramo de especialização em Automação. Coimbra, Setembro de 2018
Agradecimentos Dedico este agradecimento não só aos que me acompanharam no presente curso, mas a todos os que me acompanharam na minha vida académica e pessoal, e ajudaram na realização deste objetivo. Em primeiro lugar gostaria de agradecer à minha família, particularmente à pessoa dos meus pais Guilherme e Maria José e à minha irmã Diana pelo esforço, apoio e incentivo ao longo deste percurso. Obrigado por me darem sempre a mão nos momentos em que nem eu acreditava em mim. Agradeço ao meu orientador, Professor Doutor Paulo Menezes e ao meu co-orientador Doutor João Quintas pelos conselhos, opiniões, dedicação, rigor científico e paciência os quais permitiram o desenvolvimento desta dissertação. Agradeço também aos meus colegas de laboratório, em particular ao Gonçalo Martins pelo apoio e paciência com que sempre me presenteou. Aos meus restantes amigos por todos os momentos proporcionados ao longo da minha vida académica, e pela sua amizade e apoio ao longo da vida. iii
iv
Resumo Actualmente, na sociedade em que vivemos, existe uma crescente necessidade de utilizar robôs autónomos para executar diferentes tarefas sem perturbar o ambiente onde elas são desempenhadas. Existe uma grande variedade de robôs, como robôs guia ou robôs de serviço e segurança, desenvolvidos para ajudar as pessoas a superar as dificuldades sentidas na realização de diferentes tipos de tarefas. Estes robôs estão rapidamente a ganhar um papel importante no nosso dia-a-dia, evoluindo de meros trabalhadores para companheiros. Este projecto visa criar um robô recepcionista-guia, a ser utilizado no Instituto de Sistemas e Robótica da Universidade de Coimbra. De modo a atingir este objectivo, desenvolvemos um sistema que suporta a navegação de um robô em um ambiente conhecido, baseado nos princípios da navegação topológica. Foram desenvolvidas capacidades sensoriais, de modo a assim poder evitar obstáculos que possam aparecer ao longo da trajectória. Para abordar o facto de que a estimativa da posição do robô acumula erros ao longo do tempo, um conjunto de marcadores visuais foi posicionado ao longo das trajectórias para auxiliar na localização do mesmo. Estes marcadores visuais, fornecem meios de posicionamento em relação a um sistema de coordenadas globais, podendo estes ser reconhecidos numa ampla gama de configurações de visualização. Esta é uma abordagem simples, barata, robusta e fácil de implementar para a obtenção de uma localização global. De modo a interagir com o utilizador, foi criada uma interface gráfica, onde o utilizador pode escolher entre visitas pré-planeadas ou ir diretamente a um determinado local. Foram realizadas experiências num cenário coberto, demonstrando a viabilidade e desempenho do sistema. Palavras chave: Odometria, Navegação Topológica, Marcadores Visuais, Desvio de Obstáculos, Robô de Serviços v
vi
Abstract In our modern society, there is a growing need to use autonomous robots to execute different types of tasks without disturbing the environment where they are introduced. There is a wide variety of robots such as guide robots or service and security robots, that were developed to help people overcome their difficulties while performing a multitude of different tasks. Robots are quickly earning an important role in our daily-life, evolving from laborers to companions. This project aims to create a recepcionist-guide robot to be used at the Institute of Systems and Robotics, University of Coimbra. To accomplish this goal, we have developed a system that supports the navigation of a robot in a known environment, based on the principles of topological navigation. In order to avoid obstacles that may appear along the trajectory, sensorial capabilities were added. To address the fact that the estimation of the position of the robot accumulates error throughout time, a set of visual markers were positioned along the trajectories to aid in localizing the robot. These landmarks provide means for positioning in reference to a global coordinare system over a wide range of viewing configurations. This is a simple, inexpensive, robust, and easy to implement aproach to global localization. To interact with the user a graphical user interface was created were the user can choose from between pre-planned visits or to go to a certain location. We have performed experiments in a indoor scenario, demonstrating the feasibility and performance of the system. Keywords: Dead Reckoning, Topological Navigation, Visual Markers, Obstacle Avoidance, Service Robot vii
xiv
Lista de Figuras 1.1 Segway RMP 200 ................................. 2 2.1 Comparação entre mapas métricos e topológicos. . . . . . . . . . . . . . . . . 8 2.2 Exemplo do mapeamento em grelhas de ocupação. . . . . . . . . . . . . . . . 8 2.3 Ilustração do Alpha puzzle benchmark. . . . . . . . . . . . . . . . . . . . . . 9 2.4 Comparação entre a pesquisa realizada pelo algoritmo Dijkstra e o algoritmo A∗.......................................... 10 3.1 Comparação entre o Bug-1 e o bug-2. . . . . . . . . . . . . . . . . . . . . . . 16 3.2 Comparação entre o Dist-bug e o IBA. . . . . . . . . . . . . . . . . . . . . . 16 3.3 Diagrama polar do algoritmo Bubble Rebound . . . . . . . . . . . . . . . . . 17 3.4 Representação da força atractiva virtual . . . . . . . . . . . . . . . . . . . . 18 3.5 Representação da transformação entre o referencial mundo e o referencial da plataformamóvel.................................. 19 3.6 SonarHC-SR04.................................. 20 3.7 Sensor de infravermelhos Sharp GP2Y0A02YK0F . . . . . . . . . . . . . . . 20 3.8 Comparação entre a curva de resposta do sensor dada pelo fabricante e da curvaapósacalibração. ............................. 21 3.9 Ajuste da curva de resposta do sensor de infravermelhos. . . . . . . . . . . . 21 3.10 Disposição dos sensores na plataforma móvel. . . . . . . . . . . . . . . . . . 23 3.11 Diagrama representativo da contribuição dos vectores repulsivos e atractivo para o calculo de uma nova direcção de movimento. . . . . . . . . . . . . . . 24 3.12 Diagrama representativo da integração do módulo de desvio de obstáculos. . 26 4.1 Exemplo da codificação binária dos marcadores visuais. . . . . . . . . . . . . 30 4.2 Descrição dos marcadores utilizados. . . . . . . . . . . . . . . . . . . . . . . 30 4.3 Ilustração do modelo de câmara pinhole. .................... 31 4.4 Ilustração dos diferentes parâmetros de uma câmara pinhole.......... 31 4.5 Transformações realizadas através do uso dos parâmetros extrínsecos e intrínsecos......................................... 32 4.6 Marcador visual colocado na parede do corredor do ISR. . . . . . . . . . . . 32 4.7 Detecção do marcador visual. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.8 Diagrama explicativo da obtenção da posição corrigida da plataforma. . . . . 33 4.9 Diagrama explicativo das transformações necessárias para a correcção da estimaçãodaodometria. .............................. 35 5.1 Vista geral dos módulos utilizados. . . . . . . . . . . . . . . . . . . . . . . . 38 5.2 Diagrama de ligações entre os diferentes nós de ROS. . . . . . . . . . . . . . 39 5.3 Máquina de estados representativa do funcionamento do módulo de navegação. 40 5.4 ComandoWii................................... 41 5.5 Exemplo de utilização do produto interno para a correcção da direcção a tomar. 42 xv
5.6 Suporte para os sensores de ultrasom e de infravermelhos. . . . . . . . . . . . 43 5.7 Esquema de ligação dos sensores ao Arduino. . . . . . . . . . . . . . . . . . . 43 5.9 Ilustração do funcionamento do planeador e interacção com o módulo de navegação....................................... 44 5.8 Representação gráfica do mapa usado pelo planeador. . . . . . . . . . . . . . 45 5.10 Janela principal da interface gráfica. . . . . . . . . . . . . . . . . . . . . . . . 46 5.11 Janelas de escolha do sitio destino na interface gráfica. . . . . . . . . . . . . 46 5.12 Janelas informativas do estado do robô. . . . . . . . . . . . . . . . . . . . . . 46 6.1 Percurso realizado durante os testes experimentais . . . . . . . . . . . . . . . 48 6.2 Representação de uma das trajectórias realizadas durante os testes experimentais. ...................................... 50 6.3 Evolução da posição do robô no eixo de coordenadas xey.......... 50 xvi
Lista de Tabelas 3.1 Qualidade da aproximação da calibração do sensor. . . . . . . . . . . . . . . 22 3.2 Desfasamento e arranjo dos sensores. . . . . . . . . . . . . . . . . . . . . . . 22 6.1 Coordenadas xyz da posição dos marcadores no referencial do mundo. . . . . 48 6.2 Resultados obtidos durante a experiência. . . . . . . . . . . . . . . . . . . . 49 6.3 Erro na coordenada xem relação à figura 6.3 (a), yem relação à figura 6.3 (b) e xy em relação à figura 6.2. . . . . . . . . . . . . . . . . . . . . . . . . . 51 xvii
Capítulo 1 Introdução Esta dissertação descreve e discute o tema de "Navegação Topológica para Agentes Robóticos Móveis". O trabalho foi desenvolvido no Laboratório de Robótica Móvel situado no Instituto de Sistemas e Robótica, Faculdade de Ciências e Tecnologia da Universidade de Coimbra. Existe, cada vez mais, um crescente número de robôs que trabalham em proximidade com o ser humano, interagindo e realizando tarefas em parceria com ele. O futuro passa por uma relação simbiótica entre os dois mundos. Foi neste âmbito que este projecto foi criado, tendo como objectivo o desenvolvimento de um sistema de suporte à navegação de um robô num espaço conhecido, baseando-se para tal nos princípios de navegação topológica, criando assim o suporte básico para um robô guia. Esta abordagem difere da navegação geométrica usual, no facto de que os movimentos são planeados com base na selecção dos locais a visitar e não nas primitivas de movimento geométrico que conectam os pontos inicial e final. Dito isto, a escolha do uso de mapas topológicos deve-se ao facto de a visita guiada ser feita entre locais pré-definidos (nós), e por isso adequados para a representação através de grafos. A pesquisa de um caminho que ligue a posição actual à posição destino, não é uma pesquisa geométrica, mas sim uma pesquisa num grafo de conectividade. Neste grafo, os locais de maior importância encontram-se ligados entre si, formando uma rede de caminhos possíveis. Pesquisando estes caminhos, encontra-se uma ligação entre a posição actual e a posição destino, e consequentemente uma trajectória a seguir. Durante a navegação por esta trajectória, caso o robô não tenha certeza acerca da sua localização exata, ao verificar uma característica visual sabe em que nó do grafo se encontra. Tomemos por exemplo o cenário seguinte: se considerarmos um ambiente constituído por salas que se ligam entre si e onde cada sala está pintada com uma cor diferente. Então pode-se saber em que sala estamos sem conhecer exatamente a posição geométrica atual. Para a realização desta dissertação foi usado o Segway RMP 200, figura 1.1, composto por uma plataforma circular, a qual pode efectuar o movimento de andar em frente ou para trás e rodar em torno de um eixo vertical que se situa no centro instantâneo de curvatura, o qual é definido pelo diferencial de velocidades das rodas da plataforma. A plataforma é constituída por duas rodas motrizes, colocadas num eixo que passa pelo seu centro, as quais dotam a mesma de características de locomoção diferencial. Este primeiro capítulo 1
apresenta o estado da arte sobre os robôs de serviços desenvolvidos ao longo dos tempos e os respectivos métodos de navegação utilizados, os objectivos e a estrutura desta dissertação. Figura 1.1: Segway RMP 200 1.1 Estado da Arte Na sociedade moderna existe cada vez mais contacto diário entre humanos e robôs. O campo de interação homem-máquina, aborda tópicos desde o design, à compreensão de sistemas robóticos, que envolvam algum tipo de comunicação entre seres humanos e robôs [24]. E portanto, o objectivo da investigação foi dar mais ênfase ao real significado destas palavras, usando sistemas robóticos para facilitar e auxiliar os humanos nas suas tarefas quotidianas. Como tal, em 1997 foi introduzido na Alemanha, no museu "Deutsches Museum Boon"o robô guia de seu nome RHINO [13]. O objectivo primário deste robô era oferecer uma navegação segura e fiável em ambientes públicos e bastante populados. O utilizador comunicava com o robô através de botões, sendo que o robô respondia através de mensagens de voz prégravadas. O RHINO oferecia também uma interface web, a qual permitia uma experiência interactiva pelas diferentes exposições. Era possível teleoperar o robô pelas diferentes salas ou apenas assistir o robô a fazer uma visita guiada à distância. Para se localizar, utilizava uma versão do método proposto por Markov [51], mantendo uma confiança probabilística acerca da posição em que o robô se encontra. A navegação, híbrida, é realizada através de um mapa métrico com a ajuda das leituras sensoriais. A duração desta experiência foi de seis dias, e embora o RHINO estivesse equipado com câmaras, sensores de ultrassom, sensores de infravermelhos, laser-range finders e sensores de colisão, a navegação continuava a ser difícil 2
dadas as características do ambiente oferecido pelo museu. Isto era derivado, por exemplo, à presença de esculturas de dimensão inferior à altura dos sensores colocados mais próximos do chão. O ambiente tornava-se dinâmico devido aos visitantes terem bancos móveis para descansarem e estarem constantemente a deixá-los em sítios diferentes. Durante uma visita, e estando o visitante a ser comandado pela sua própria curiosidade, este não pode, nem quer, esperar pelo robô. Caso isto acontecesse o robô passava de um guia para um estorvo que dificultava a experiência do visitante, tornado-a menos interessante. Para tal a velocidade de locomoção chegava a ser por vezes de 0.8 m/sec de modo a conseguir acompanhar o visitante. No entanto as maiores dificuldades, foram as impostas pelos humanos presentes no museu, que desafiavam constantemente o sistema, levando-o por vezes a ir para sítios não mapeados onde existiam perigos eminentes como escadas. Em 2002 foi introduzido no exposição nacional da Suiça o RoboX [50]. Durante cinco meses funcionou sete dias por semana, onze horas por dia, guiando perto de um milhão de pessoas. Era dotado de capacidades de comunicação com o ser humano, sendo capaz de sintetizar frases em quatro linguagens diferentes, seguir a localização da face das pessoas usando uma câmara RGB, seguimento do corpo através de laser range finders e até a capacidade de exibir expressões faciais através de uma matriz de leds colocada na sua cabeça. O planeamento da trajectória era baseado em mapas topológicos, sendo que utilizava as características presentes no ambiente em conjunto com um filtro de kalman extendido [4] para estimação da localização. De modo a evitar obstáculos combinava o algoritmo dynamic window approach [20] (DWA) e o método elastic band [48] para a geração de trajectórias suaves em torno dos mesmos. O Jinny [30], foi desenvolvido no Instituto da Ciência e Tecnologia da Coreia em Setembro de 2004 com o objectivo de permanecer permanentemente nas instalações do Museu nacional do país. Para uma estadia prolongada no museu, a interação homem-máquina tinha de ser simples e intuitiva de modo a que os empregados do museu pudessem facilmente fazer alterações consoante os eventos presentes no museu. Utilizava dois laser range finders , dois scanners de infravermelhos e um giroscópio de fibra optica para uma localização mais precisa. Caso algo falhasse tinha como redundância, à sua volta, sensores de colisão (bumpers). A localização era feita com base no método probabilístico de Monte Carlo [19] e a planeamento através de mapas topológicos. Utilizava quatro tipos de algoritmos de navegação diferentes, de entre os quais escolhia consoante o ambiente em que se encontrava. No caso do robô estar perante uma área aberta, usava uma navegação baseada no mapa que tinha ao seu dispor. Caso estivesse em regiões confinadas baseava a sua locomoção nos sensores disponíveis, utilizando para tal um algoritmo reactivo baseado em paredes. Para cumprir a função de guia, o robô tinha de cativar os seus visitantes e captar a sua atenção. Capaz de se expressar emocionalmente através de ícones representados numa matriz de leds, de dois braços com um grau de liberdade e um pescoço com dois graus de liberdade. Reconhecia e sintetizava expressões e era capaz de manter uma conversação sobre uma gama de tópicos limitada. No final acabou por implementar com sucesso quatros tarefas, de entre elas a realização de 3
entregas, patrulha, robô guia e limpeza do chão. Em [37] foi usado o PR2 numa maratona de navegação robusta em ambiente de escritório, percorrendo com sucesso 42km sem acidentes. A localização era feita de duas formas. Se existisse um mapa à priori a localização era probabilística e efectuada através do uso do algoritmo adaptive Monte Carlo localization (AMCL) [18]. No caso de não existir um mapa, possuía um inertial measurement unit (IMU) que permitia fazer fusão sensorial com a odometria podendo assim melhorar a estimação da posição. O planeamento era efectuado através da construção de um mapa de custo, com base na informação sensorial, onde era usado o algoritmo A* para planeamento da trajectória e o algoritmo DWA para desvio de obstáculos. O PR2 é um robô omnidireccional, construido por dois braços, cada um com um gripper possibilitando assim a manipulação de objectos. As tarefas realizadas eram diversas, como ir buscar cafés, itens ao frigorífico ou limpar mesas. 1.2 Objectivos Este trabalho tem como objectivo o desenvolvimento de um sistema simples e robusto de suporte à navegação de uma plataforma, num espaço conhecido à priori, usando técnicas de navegação topológica, criando assim a base para um robô guia. Para tal foram tomadas em conta as seguintes tarefas: 1. Criação de um algoritmo de navegação 2. Desenvolvimento de um módulo de localização a partir dos já existentes marcadores visuais da biblioteca OpenAR [40] 3. Integração deste módulo com a informação odométrica 4. Integração e configuração de um planeador topológico 5. Equipar a plataforma com sensores de distância e desenvolvimento da capacidade de desvio de obstáculos 6. Criação de uma interface gráfica 7. Testar a fiabilidade do sistema 1.3 Organização do documento Esta dissertação é constituída por 7 capítulos, estando o restante documento organizado da seguinte forma: O capitulo 2 aborda o planeamento da trajectória que leva o robô da posição onde ele se encontra para a posição destino, sendo que no capitulo 3 é explicado o algoritmo do calculo dos comandos de velocidade que permitam a realização dessa trajectória, assim como o método utilizado para o desvio de obstáculos que possam aparecer durante o 4
percurso. No capitulo 4 é explorada a utilização de marcadores visuais para melhoramento da estimação da posição ao longo do percurso, diminuindo assim o erro proveniente da estimação da posição através da odometria. Já no capitulo 5 é apresentada a arquitectura do sistema, implementação prática e a interface gráfica desenvolvida para uma comunicação com o utilizador do sistema. Por fim, no capitulo 6 são apresentados os resultados e no capitulo 7 as conclusões e possível trabalho futuro para esta dissertação. 5
12
Capítulo 3 Navegação Local Uma vez gerada a trajectória a seguir pela plataforma, é necessário começando do ponto inicial, navegar ao longo das linhas que unem nós consecutivos, até ao ponto destino. A forma escolhida para realizar a navegação no caso corrente, consiste em definir forças atractivas virtuais que iriam puxar o robô em direção a posições sucessivas da trajectória gerada até atingir o ponto destino. Essas forças virtuais, como será explicado mais adiante, servem para como formalismo de suporte à geração da sequência de comandos de velocidade necessários para guiar o robô. No entanto, em situações reais há sempre a possibilidade de obstáculos, não considerados durante a fase de planeamento, poderem aparecer pelo caminho os quais terão de ser contornados se possível. Todos os sistemas robóticos autónomos utilizam algum tipo de sistema com este objectivo pelo que este não será excepção. O comportamento em presença dos obstáculos pode ser simplesmente o de parar e solicitar o replaneamento da trajetória, à utilização de algoritmos e sistemas sensoriais que permitam comportamentos reactivos contornando desde que possível os obstáculos encontrados. A abordagem utilizada neste trabalho corresponde ao uso de um planeamento local discutido anteriormente no capitulo 2. Nas secções seguintes serão analisados os métodos usados tradicionalmente para a navegação na presença de obstáculos, seguindo-se da apresentação do método escolhido e sua implementação. Os resultados obtidos serão posteriormente apresentados no capítulo 6. 3.1 Estado da Arte da Navegação na Presença de Obstáculos 3.1.1 Potencial Fields Robustez e segurança são duas máximas de grande importância que qualquer sistema robótico deve ter em conta. A forma como se faz a navegação, o planeamento e se evita obstáculos, têm grande influência na forma como as pessoas reagem a um sistema autónomo. Andrews and Hogan em [2] e mais tarde Khatib em [29], sugeriram o conceito da existência de forças virtuais com ponto de aplicação no centro do robô, onde os obstáculos exercem uma força 13
repulsiva enquanto que o ponto objectivo exerce uma força atractiva. A resultante das forças, resultado do somatório da força atractiva com as repulsivas, é a nova direcção que o robô deve seguir. Krogh em [32], melhorou este conceito tendo em conta a velocidade do robô na proximidade dos obstaculos. No entanto Brooks em [11, 12], foi o pioneiro na implementação de uma variante destes métodos numa plataforma móvel. Para tal usou um array de sonares onde cada leitura dos sensores contribuia com uma força repulsiva. Se a magnitude resultante da soma das forças ultrapassa-se um certo limiar, o robô parava, redirecionava-se e continuava o movimento. Apoiados nesta abordagem, Borenstein and Koren em 1989 apresentaram o método Virtual Force Field (VFF). Este método teve uma grande procura devido à necessidade de um baixo poder de computação, à matemática utilizada e às trajectórias suaves que era capaz de reproduzir. Para tal, utiliza uma grelha cartesiana bidimensional (histograma bidimensional) para representar os obstáculos detectados sendo que em cada célula da grelha fica registada a confiança do algoritmo de como realmente existe um obstáculo nessa localização. Esta certeza aumenta com cada leitura do sensor que indique a presença de um obstáculo nessa célula. Esta abordagem deriva de uma técnica mais antiga chamada Grelhas de Certeza (certainty grid) [42]. Começa-se então por definir uma zona chamada região activa em torno do robô, caso se detecte a presença de um obstáculo nessa zona, essa célula contribui com uma força repulsiva sobre o robô. O valor dessa força é proporcional ao valor do histograma bidimensional e inversamente proporcional à distância entre a célula e o robô, sendo que a força atractiva para o ponto destino é constante. No entanto o VFF não era perfeito e tinha alguns problemas como ficar encurralado em mínimos locais, não encontrar uma passagem possível entre obstáculos com um espaçamento reduzido entre eles e apresentava oscilações em passagens estreitas como corredores ou portas [56][31]. De maneira a combater estas limitações foi desenvolvido pela mesma equipa de investigadores o Vector Field Histogram (VFH). Este algoritmo elimina as limitações do VFF, tentando no entanto manter todas as suas vantagens [9]. O funcionamento e tratamento do dados pode-se resumir a duas etapas: 1. Construção de uma grelha de ocupação tal como o VFF 2. Construção de um histograma polar relativo à distribuição de obstáculos em torno do robô. O histograma polar é obtido dividindo uma janela centrada no robô em sectores, e contabilizando o número de células ocupadas em cada sector. Obtendo o histograma polar, podemos então saber qual direcção o robô pode tomar sem haver perigo de colisão. Para tal, e devido à natureza discreta do histograma polar, este é filtrado através de um filtro passa-baixo de fase nula. O resultado desta filtragem contém picos que correspondem às regiões com maior densidade de obstáculos, sendo que os vales correspondem a regiões onde esses obstáculos são diminutos. Uma vez conhecida a posição destino e posição actual do 14
robô, é escolhido o vale do histograma, através de um limiar, que mais se aproxima dessa orientação objectivo. 3.1.2 Bug algorithms Esta abordagem combina planeamento local com um critério de convergência global. Inicialmente, o robô move-se diretamente em direcção ao ponto destino. Quando um obstáculo é detectado, este começa a seguir o seu contorno até que uma condição se saída (que salvaguarda o critério da convergência global) for cumprida. À posição que verifica esta condição de saída, dá-se o nome de ponto de saída. Uma vantagens destes em comparação aos Potencial Fields é o facto de estes não caírem em mínimos locais. Isto é derivado do facto destes apenas terem em conta as percepções actuais e não as passadas. Na abordagem Bug-1, quando detecta um obstáculo começa a seguir o contorno do mesmo, circundado-o, até chegar ao mesmo ponto em que o obstáculo foi detectado e o começou a contornar. Enquanto isto, encontra-se simultaneamente a cada instante a calcular a distância da posição actual ao ponto destino, guardando aquela que minimiza essa distância. Após um ciclo completo (contorno total do objecto encontrado) o robô passa para a segunda fase, de ir para o destino, onde o ponto de saída é o ponto previamente guardado como o ponto de menor distância ao ponto destino, figura 3.1 (b). Esta abordagem é bastante ineficiente e leva a que por vezes o robô vagueie para longe do objectivo ao tentar contornar o obstáculo [49, 1]. Outra desvantagem deste algoritmo é que aquando do inicio do seguimento do obstáculo, caso encontre um segundo pelo caminho pode colidir com ele, caso o espaçamento entre eles seja menor que o largura do robô. O funcionamento do Bug-2, que é uma iteração do Bug-1, começa por inicialmente ser calculado o segmento de recta que liga o ponto inicial ao ponto final. O robô começa por seguir a direcção desse segmento até se deparar com um obstáculo. Aí, começa por seguir o seu contorno, calculando a cada instante se já intersectou novamente o segmento de recta calculado inicialmente. Quando esta condição se verificar, abandona o modo de contorno de obstáculo e passa para o modo de ir de encontro ao ponto destino, figura 3.1 (c). A diferença da tomada de decisão em abandonar o modo de contorno de obstáculo, torna este algoritmo mais eficiente e mais rápido a convergir para o destino. Dito isto, e mesmo sendo uma melhoria considerável em relação ao seu antecessor Bug-1, este algoritmo não faz um uso optimo dos dados recebidos pelos sensores para o calculo de uma trajectória mais curta [36]. Este foi o mote para a criação de mais uma vertente desta família que foi o Dist-Bug [28, 61]. Esta abordagem encara o problema de uma maneira um pouco diferente. Quando deparado com um obstáculo e dado inicio ao modo de desvio do mesmo, é calculada a distância ao ponto destino a partir da posição actual e da posição seguinte. O ponto de saída é quando a distância da posição seguinte ao ponto destino é maior que a distância da posição actual ao mesmo ponto (dseguinte > dactual). Mesmo com estas melhorias, o dist-bug não é um método orientado ao destino e portanto, enquanto ocupado a evitar obstáculos, 15
Figura 3.1: Comparação entre o Bug-1(b) e o bug-2 (c). Adaptado de [62] Figura 3.2: Comparação entre o Dist-bug e o IBA. Adaptado de [62] pode levar o robô para longe do mesmo. Este foi o motivo impulsionador para Zohaib e Pasha criarem o Inteligente Bug Algorithm (IBA) [62]. A proposta destes investigadores consiste em modificar o Dist-bug tornando-o um algoritmo orientado para o destino e tendo em conta o tempo necessário para chegar ao mesmo. Para tal, inicialmente é calculado uma trajectória de referência que o robô segue até encontrar um obstáculo. Quando isto acontece, o robô começa a seguir o seu contorno tendo em consideração a posição do ponto destino, sendo o ponto de saída do modo de desvio de obstáculos, decidido com base no caminho livre em direcção ao destino. Este caminho livre é detectado pelos sensores a bordo do robô. Uma vez tomada a decisão de ir novamente em direcção ao ponto destino, é calculada uma nova trajectória de referencia e o processo é repetido até chegar ao local pretendido. 3.1.3 Bubble Rebound Algorithm O trabalho que deu mote a este algoritmo foi proposto por Quinlan em [48]. Quinlan definia a existência de uma "bolha"contendo o máximo de espaço livre à volta do robô, que podia ser navegada em qualquer direcção sem perigo de colisão. O tamanho e forma da bolha era 16
Figura 3.3: Diagrama polar realizado através das leituras dos sonares. Adaptado de [54] determinado através de um modelo simplificado da geometria do robô, e pelas distâncias devolvidas pelos sensores. Susnea [54], pegou neste principio e criou um algoritmo simples, reactivo, capaz de evitar obstáculos em tempo real através do uso de sensores de ultrasom ou infravermelhos e com o objectivo de ser implementado num microcontrolador. Este método define uma área em torno de robô, (bubble), que é igualmente ajustada de acordo com a forma do mesmo. Como os sensores estão distribuídos uniformemente pelo robô, perfazendo um arco de 180º, as leituras dos sonares podem ser representadas através de um diagrama polar, como pode ser verificado através da figura 3.3. Aquando da detecção de um obstáculo, o robô analisa o ambiente à sua volta, escolhendo a direcção com menor densidade de obstáculos, até o ponto objectivo ficar novamente visível ou outro obstáculo aparecer. 3.2 Locomoção O robô utilizado foi apresentado no capítulo 1, e o controlo dos seus movimentos é realizado através da definição, a cada instante, de uma velocidade de linear, v, e uma velocidade angular, w. Para tal é definido um vector em direcção ao ponto objectivo, figura 3.4, e os comandos de velocidade são então calculados através da equação 3.1, onde α1eα2representam constantes e −→ Axe−→ Ayrepresentam a projecção desse vector atractivo no eixo de coordenadas XeYrespectivamente. Este método pode ser visto como um controlo proporcional onde o erro é a distância do robô ao ponto objectivo. 17
X Y → A Ponto objectivo Robô Figura 3.4: Representação da força atractiva virtual (verde) que irá puxar o robô em direcção ao ponto objectivo. v=α1·−→ Ax w=α2·−→ Ay (3.1) Assim, caso v6= 0 ew= 0 o robô movimenta-se em linha recta, caso v= 0 ew6= 0 o robô descreve uma rotação sobre o seu centro, e por fim, combinações de v6= 0 ew6= 0 dão origem a uma trajectória com a forma de um arco. No entanto, para esta metodologia funcionar é necessário que as coordenadas do ponto objectivo estejam no referencial do robô. O planeador devolve os pontos objectivo em coordenadas do mundo, sendo então necessário transformar o ponto objectivo localizado no referencial mundo Wp, num ponto no referencial da plataforma móvel Rp, figura 3.5. É de salientar que estes pontos são em 2D, mas são aqui tratados em coordenadas homogéneas. Esta transformação é conseguida através da equação 3.2, onde (W RT)−1é a inversa da matriz de transformação presente em 3.3, que por sua vez, representa a transformação entre o referencial mundo e o referencial do robô, onde θ,XeYrepresentam a posição actual da plataforma proveniente da localização estimada a partir da odometria. Rp= (W RT)−1·Wp (3.2) W RT= cos θ −sin θ X sin θ cos θ Y 0 0 1 (3.3) Assim obtem-se a equação 3.4, onde Xobjectivo eYobjectivo são pontos do referencial mundo 18
. . Ponto Objectivo X Referencial Robô Referencial Mundo p R T W R p W Figura 3.5: Representação da transformação entre o referencial mundo e o referencial da plataforma móvel. eXReYRsão os mesmos pontos transformados para o referencial do robô. XR YR 1 = (W RT)−1· Xobjectivo Yobjectivo 1 (3.4) 3.3 Desvio de Obstáculos Dando seguimento à mesma filosofia usada no calculo de velocidades e à semelhança de Brooks [11, 12], nesta implementação cada sensor que retorne a informação da presença de um obstáculo, contribui com um vector repulsivo. O comprimento desse vector é inversamente proporcional à distância entre o robô e o obstáculo, sendo o vector atractivo de comprimento constante. Uma ilustração do processo pode ser encontrada na figura 3.11. Foram utilizados sensores de ultrasom assim como sensores de infravermelhos para fazer a detecção de obstáculos durante o percurso a realizar pela plataforma. A escolha da utilização de dois tipos diferentes de sensores, foi derivada ao facto de existirem sítios onde um deles é ineficaz. Sítios estes como vidros, para os sensores de infravermelhos, e superfícies onde a onda sonora é refletida para longe do receptor, no caso dos sonares. 19
HC-SR04 Este sensor de ultrasom é bastante usado na comunidade da robótica devido à sua facilidade de utilização e ao custo reduzido. O principio de funcionamento baseia-se no facto da velocidade de propagação da onda sonora no ar ser conhecida. Para tal, o transdutor emissor envia uma onda sonora, enquanto que o transdutor receptor fica à espera da mesma. Quando recebida, é então produzido um pulso com a mesma duração do tempo de viagem da onda sonora. Figura 3.6: Sonar HC-SR04 Sharp GP2Y0A02YK0F É um sensor de distância por infravermelhos com um circuito de condicionamento de sinal integrado. Para adquirir a distância ao objecto detectado, o sensor devolve no seu terminal intermédio uma diferença de potencial, que vai corresponder à distância ao objecto. Para tal, o fabricante disponibiliza uma curva de resposta que faz correspondência entre a voltagem devolvida e a respectiva distância. Quando feitos os teste iniciais utilizando esta curva, reparou-se que os valores de distância devolvidos não eram os mais exactos. Figura 3.7: Sensor de infravermelhos Sharp GP2Y0A02YK0F Procedeu-se então à calibração do sensor, obtendo a curva de resposta distância-tensão do mesmo. Para distâncias espaçadas de dez centímetros entre si, foram adquiridas dez amostras de tensão, feita a sua média e armazenadas numa tabela. A comparação entre a curva de calibração e a curva do fabricante podem ser vistas no gráfico da figura 3.8. 20
0 50 100 150 Distancia [cm] 0 0.5 1 1.5 2 2.5 3 Voltagem [V] Curva fabricante Curva calibração Figura 3.8: Comparação entre a curva de resposta do sensor dada pelo fabricante e da curva após a calibração. Na figura 3.8 temos uma voltagem em função da distância. No entanto precisamos do inverso, pois o sensor devolve uma voltagem e precisamos de obter a distância correspondente. Obteve-se então o gráfico da figura 3.9, onde a função que aproxima a curva é a presente na equação 3.5. 0.5 1 1.5 2 2.5 Voltagem [V] 20 40 60 80 100 120 140 Distancia [cm] Figura 3.9: Ajuste da curva de resposta do sensor de infravermelhos. d= 61.8·V−1.1 o(3.5) Pode-se entender por da distância do sensor ao obstáculo e por V o a diferença de potencial devolvida pelo sensor. A qualidade da aproximação pode ser compreendida através da tabela 3.1. 21
responder ao problema do robô "raptado", onde o robô é levado para uma localização desconhecida, sem qualquer tipo de informação sobre o meio onde se encontra, com o objectivo de se localizar e navegar. No entanto, a localização absoluta é normalmente usada com o objectivo de mitigar o erro acumulado ao longo do tempo pelas técnicas de navegação relativa. 4.1.1 Localização relativa Actualmente a odometria é um dos métodos mais amplamente utilizados para efectuar a estimação da posição. Isto deve-se ao facto de ser uma técnica barata, fornecer bons resultados a curto prazo, e permitir uma taxa de amostragem elevada. No entanto, a acumulação de erros de orientação leva a erros na estimação da posição, os quais aumentam com a distancia percorrida [8]. No caso mais especifico da robótica móvel, a odometria pode ser estimada a partir da integração ao longo do tempo do deslocamento provocado pelas velocidades lineares e angulares com que o robô se movimenta. Esta integração do deslocamento leva à acumulação de erros que podem ser sistemáticos ou não sistemáticos [6]. Os erros sistemáticos são característicos do robô, ou dos sensores, e são uma fonte constante de erros aditivos. Exemplos disso são um diâmetro desigual das rodas e a incerteza sobre o ponto de contacto da roda com o piso. Os erros não sistemáticos são característicos da relação do robô com o ambiente, logo não podem ser contabilizados à priori pois são inesperados. Escorregamento das rodas e movimento sobre solos não uniformes são alguns exemplos destes erros [10]. Existem ainda outros sistemas de estimação de posição, como os sistema de navegação inercial, que usam giroscópios e acelerômetros para medir respectivamente a taxa de rotação e aceleração do robô. De modo a obter a posição a partir da aceleração é necessário integrar a resposta do sensor duas vezes, tornando-os sensíveis a desvios. Em alguns casos, utiliza-se fusão sensorial entre sensores odométricos e inerciais, sendo esta técnica conhecida como gyrodometry [7]. Byrne em [14], testou o uso de uma bússola eletrónica para medir a orientação do robô relativamente ao campo magnético da terra. No entanto, este sistema não é recomendado para o uso no interior de edificios, devido às distorções do campo magnético causadas pelos cabos elétricos e metal nas paredes. 4.1.2 Localização absoluta Quando pensamos em localização absoluta o método que nos vem logo à memória é o global positioning system (GPS). Este é um método já muito estudado, bem fundamentado e aceite pela comunidade cientifica. No entanto, em ambientes cobertos, a sua utilização não é uma opção devido à dificuldade que os sinais de GPS encontram em atravessar as paredes dos edifícios [58]. Os métodos de localização através de pontos de referência estão cada vez mais presentes 28
na investigação, podendo ser divididos em pontos de referência naturais ou artificiais. Ao utilizar pontos de referência naturais não existe a necessidade de modificar o ambiente, mas a escolha dos pontos de referência físicos a usar pode ser bastante complexa [35]. Por outro lado, os pontos de referência artificiais são cada vez menos intrusivos no ambiente e oferecem, no entanto, uma melhor detecção o que é necessário para uma localização fidedigna. Yoon e Kweon em [57] e Jang em [26], usaram técnicas de processamento de cor em imagens para detectar marcadores de diferentes cores. Os códigos de barras [27] também foram utilizados como pontos de referência artificiais . Em [52], uma equipa de investigadores portugueses, desenvolveu um método onde a localização é melhorada através do uso de uma câmara para identificação de códigos de barra e consequente estimação da posição da plataforma móvel. Mais recentemente, com o aparecimento dos códigos Quick Response (QR), e devido à facilidade de criação e detecção dos mesmos, foram desenvolvidas várias abordagens para estimar a pose de uma plataforma móvel relativamente a códigos QR colocados em sítios estratégicos. Estes podem ser visto como uma versão 2D dos códigos de barras, com a vantagem de poder conter muito mais informação. Exemplos de aplicação práticos podem ser encontrados em [22, 60], onde os códigos QR são colocados no tecto. Outas abordagens foram feitas usando técnicas como Wi-Fi [5], radio frequency identification (RFID) [45] e rádios de banda ultra larga [21]. Em [59] é medida a força do sinal wi-fi recebido e comparado com uma base de dados onde constam forças de sinal medidas em diferentes localizações do mapa. Em [34] são usadas etiquetas RFID onde cada um tem uma identificação única. Estas etiquetas, usam um campo eletromagnético para transmitir informação e podem ser activas ou passivas, dependendo se estão equipadas com uma bateria e constantemente a emitir, ou se apenas são activadas na presença do receptor. Quando o robô se aproxima destas etiquetas, o ID é detectado e obtida a posição aproximada. Neste caso, não se obtem a posição absoluta mas sim uma aproximação, pois apenas conseguimos concluir que estamos no raio de detecção possível daquele emissor em especifico. 4.2 Marcadores visuais utilizados Os marcadores visuais utilizados são bidimensional, compostos por um quadrado/frame preto em fundo branco, sendo assim constituídos por oito pontos de referencia, os quatro cantos externos e outros quatro cantos internos, figura 4.7. Estes possuem um código de identificação único que os distingue entre si, código este que consiste numa distribuição binária de oito entradas no interior de cada marcador, figura 4.1. É de salientar também o ponto de orientação, figura 4.2, que é essencial para a não ocorrência de erros na localização e estimação da rotação do marcador [46]. 29
(a) Marcador número 135 (b) Marcador número 255 Figura 4.1: Exemplo da codificação binária dos marcadores visuais. Adaptado de [46]. Quadrado/frame do marcador Pontos de identificação Ponto de orientação Figura 4.2: Descrição dos marcadores utilizados. Para o correcto funcionamento do sistema a calibração da câmara é imprescindível, pois só assim é possível a extração de informação métrica a partir de imagens 2D. Para tal usou-se um método também disponível na biblioteca OpenAR, onde se utiliza um padrão de xadrez de modo a assim obter os parâmetros intrínsecos e os parâmetros de distorção da câmara. Estes não variam ao longo do tempo, e são específicos para cada câmara, portanto a calibração só precisa de se realizar uma vez. Por outro lado, é necessário calcular os parâmetros extrínsecos da câmara em cada imagem da sequência de detecção, pois a posição desta varia em relação aos marcadores. A câmara utilizada funciona através do modelo pinhole. Este modelo é uma boa aproximação do modelo de câmara convencional e consiste numa caixa cúbica, fechada, com um pequeno orifício numa das faces, por onde os raios de projecção vão passar e formar uma imagem na face oposta à do orifício. Este tipo de modelo baseia-se essencialmente em dois parâmetros, a distância focal (fx, fy) e ponto principal (cx, cy). Estes representam os parâmetros intrínsecos da câmara (K), equação 4.1. A distância focal é a distância que separa o plano imagem do plano focal definido pelo centro óptico. O ponto principal é o ponto de intersecção do eixo óptico com o plano imagem, sendo o eixo óptico o raio perpendicular ao plano imagem. 30
Figura 4.3: Ilustração do modelo de câmara pinhole. Figura 4.4: Ilustração dos diferentes parâmetros de uma câmara pinhole. K= fx0cx 0fycy 0 0 1 (4.1) Ou seja, a cena que a câmara está a observar é registada através da projecção de pontos 3D do mundo real no plano imagem usando uma transformação perspectiva, equação 4.2. s m =K[R|t]M s u v 1 = fx0cx 0fycy 0 0 1 r11 r12 r13 t1 r21 r22 r23 t2 r31 r32 r33 t3 X Y Z 1 (4.2) Onde X, Y, Z são as coordenadas do ponto 3D no referencial do mundo (M), uevsão as coordenadas do ponto projectado no plano imagem (m), em pixeis, Ké a matriz dos parâmetros intrínsecos e a [R|t]dá-se o nome de matriz dos parâmetros extrínsecos. Esta é usada, em conjunto com a matriz dos parâmetros intrinsecos, para descrever o movimento da câmara em relação a uma cena estática ou de um objecto rígido (marcador) em relação à câmara estática. Isto é, K[R|t]traduz as coordenadas de um ponto 3D no mundo para um outro sistema de coordenadas com base nos parâmetros da câmara. 31
Coordenadas no referencial mundo [X Y Z] Coordenadas noreferencial da câmara Coordenadas em pixeis [u v] Rigida Projectiva 3D -->3D 3D --> 2D Parâmetros Extrínsecos Parâmetros Intrínsecos Figura 4.5: Transformações realizadas através do uso dos parâmetros extrínsecos e intrínsecos. Assumindo que o modelo físico do marcador, que define um plano, se encontra em Z= 0 no referencial do mundo, os pontos do modelo físico do marcador (f M) e os pontos da imagem (em) encontram-se relacionados por uma homografia. Esta consiste numa matriz 3×3definida a menos de um factor de escala, equação 4.3. sem=Hf M(4.3) Uma vez calculada a matriz de homografia, é calculada a rotação e translação que descrevem a transformação entre os pontos do marcador e os pontos imagem. Figura 4.6: Marcador visual colocado na parede do corredor do ISR. 32
Figura 4.7: Detecção do marcador visual. 4.3 Funcionamento do sistema Referencial Mundo T W R T W M T C M T R C Figura 4.8: Diagrama explicativo da obtenção da posição corrigida da plataforma. Aquando da aproximação da plataforma a um marcador e consequente detecção do mesmo, é então extraída a estimação da posição da câmara em relação ao marcador como explicado anteriormente. Esta transformação é definida por C MT. De maneira a obter a pose do robô em relação ao marcador R MT, equação 4.4, precisamos de mapear a câmara no referencial do robô. Para tal utiliza-se a matriz de transformação rígida definida por R CT. R MT=R CT·C MT (4.4) W RT=W MT·M RT (4.5) 33
Para cada número identificador de um marcador existe uma matriz de transformação rígida associada. Matriz de transformação essa que define a posição e orientação do marcador em relação ao referencial mundo, definida por W MT. Esta matriz é a verdade absoluta (ground truth) do sistema. Ao fecharmos o ciclo, como ilustrado na figura 4.8, e através da equação 4.5, obtemos a matriz W RT. 4.4 Implementação Explicado o método utilizado para a estimação da posição do robô no referencial mundo, através da detecção de um marcador visual, é agora explicado como é feita a integração desta estimação com a localização fornecida pela odometria do robô. Quando se inicia o sistema, a posição e orientação iniciais do robô em relação ao referencial mundo são obtidas através de um marcador. Dito isto, e de modo a resolver a questão da localização fornecida pelo robô ter um referencial não coincidente com o referencial mundo, é necessário calcular a transformação entre o referencial mundo e esse referencial. Chamemoslhe referencial da odometria. Para isso foi usada a cadeia de transformações presente na figura 4.9. Sabendo que W RTMrepresenta a posição e orientação do robô no mundo estimada a partir do marcador, e que O RT representa a posição e orientação do robô no referencial da odometria, ao fecharmos o ciclo, obtemos a transformação W OT. Esta tranformação representa a compensação necessária para mapear o referencial da odometria no referencial do mundo, sendo obtida através da equação 4.6. Assim, a posição e orientação do robô podem ser estimadas de acordo com o referencial do mundo, através da equação 4.7. Aquando do inicio da realização de uma trajectória e detecção de um novo marcador, é estimada uma nova matriz W RTM. Esta nova matriz corresponde a uma actualização da estimação da posição verdadeira do robô no mundo. Assim, é calculada novamente a matriz W OT, que tem a forma de 4.8, e a compensação entre o referencial mundo e o referencial da odometria é corrigida. W OT=W RTM·(O RT)−1(4.6) W RT=W OT·O RT (4.7) W OT= r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz 0 0 0 1 (4.8) No entanto, num sistema de visão por computador, a iluminação é um factor importante para o funcionamento correcto do mesmo. A detecção dos marcadores não é excepção, sendo influenciada pelas condições de luminosidade. Dito isto, o calculo da nova matriz W OT passa 34
T W R T W O T O R Referencial Mundo Referencial Robô Referencial Odometria Figura 4.9: Diagrama explicativo das transformações necessárias para a correcção da estimação da odometria. primeiro por um filtro passa-baixo. Este filtro tem em consideração que a transformação W OT deve variar muito devagar de acordo com o erro introduzido pela odometria. Ao detectar um marcador, é esperado receber um número considerável de leituras do mesmo, ou seja, várias estimativas da matriz W RTM. No caso de algumas destas leituras serem ruidosas, o filtro irá dar mais peso às leituras anteriores, de modo a que pequenas variações nas leituras tenham pouco efeito em W OT. O filtro, exponentally weighted moving average, tem um parâmetro heurístico, determinado experimentalmente, α, e formula-se do seguinte modo: tx[i+ 1] = α·tx[i] + (1 −α)·tx[i−1] ty[i+ 1] = α·ty[i] + (1 −α)·ty[i−1] rz[i+ 1] = α·rz[i] + (1 −α)·rz[i−1] (4.9) Onde tx corresponde à translação em x,ty à translação em yerzà rotação aplicado sobre o eixo dos zz. Aplicado o filtro, a matriz W OT é reconstruida, e aplicada a equação 4.7 corrigindo assim a estimação da posição da plataforma no referencial do mundo. 4.5 Resumo Neste capitulo foi abordado o uso de marcadores visuais, falando desde a sua detecção, estimação de posição e orientação, até ao seu contributo para um sistema mais robusto através da correcção da estimação da odometria e do erro acumulado pela mesma com o decorrer do tempo. O capitulo seguinte descreve a forma como todo o sistema foi implementado usando 35
a arquitectura ROS. 36
Capítulo 5 Arquitectura e Integração 5.1 Arquitectura modular baseada em ROS Com o objectivo de uma implementação robusta e estandardizada com a comunidade, toda a implementação foi feita usando a arquitectura ROS. Esta arquitectura é open source e contém uma gama de ferramentas, livrarias e serviços construidos especificamente a pensar no mundo da robótica. Permite a utilização de diferentes linguagens de programação (C++, Python, Octave e LISP) facilitando assim a adaptação do utilizador ao sistema. Aqui será dada um breve introdução aos conceitos necessários para a compreensão deste capítulo, sendo que uma explicação mais extensiva pode ser encontrada em [47]. Dito isto, a arquitectura ROS cria uma camada de comunicação que facilita a troca de mensagens entre múltiplos nós. Entende-se por nó, um programa que utiliza as ferramentas disponibilizadas pela arquitectura ROS para comunicar e realizar as tarefas pretendidas. A comunicação entre diferentes nós é obtida através de tópicos e serviços, sendo que ambos utilizam mensagens para o efeito. Os tópicos funcionam de forma assíncrona, sendo que quando um nó publica uma mensagem num tópico todos os nós que subscreveram a esse tópico iram receber a mensagem publicada. Por outro lado, os serviços, oferecem uma forma de comunicação síncrona entre apenas dois nós, sendo que é necessário o envio de um pedido e a consequente obtenção de uma resposta, para a comunicação ser bem sucedida. 5.2 Módulos Para uma arquitecura mais organizada, onde as partes, quando interligadas formam um todo, e devido à simplicidade de criar um sistema modular através do uso do ROS, esta foi a abordagem tomada. A figura 5.2 pretende ilustrar as comunicações entre os diferentes módulos criados. 37
5.2.5 Módulo Planeador Este módulo é responsável pelo planeamento da trajectória e pela representação gráfica do mapa, trajectória a seguir e posição do robô. O planeador recebe um mapa do tipo .xml. Este ficheiro na sua constituição tem a seguinte estrutura: <map> <segment> <point><x>0.0</x><y>0.0</y></ point> <point><x>0.0</x><y>20.4</y></ point> </segment> <segment> <point><x>0.0</x><y>20.4</y></ point> <point><x>−5.8</x><y>20.4</y></ point> </segment> <segment> . . . </segment> . . . </map> Cada segmento de recta é constituído por dois pontos cartesianos. Estes segmentos são considerados como uma fronteira entre o espaço livre e o espaço ocupado. Portanto, estes necessitam de ser orientados. A orientação é definida da seguinte forma: indo do primeiro ponto para o segundo, o espaço que fica à direita desse segmento é considerado espaço livre. Uma vez definido o mapa, a representação gráfica do mesmo foi feita através da biblioteca Pygame4e encontra-se representada na figura 5.8. Para realizar o planeamento de um trajectória, o planador recebe a posição actual e a posição destino, devolvendo uma pilha de pontos intermédios que serão enviados para o nó navigation através do serviço addpoint descrito anteriormente. Planeador Localização Actual Ponto Destino pilha com pontos intermedios Nó navigation serviço addpoint Figura 5.9: Ilustração do funcionamento do planeador e interacção com o módulo de navegação. 4Esta biblioteca pode ser encontrada em https://www.pygame.org/wiki/about 44
Figura 5.8: Representação gráfica do mapa usado pelo planeador. 5.3 Interface Gráfica Foi criada uma interface gráfica com o intuito de comunicação com o utilizador final. Este utilizador pode ser um visitante ao ISR, ou um grupo de alunos que venha conhecer os vários laboratórios existentes. Com base nestes casos de uso, foi desenvolvida uma interface gráfica simples e de entendimento fácil, facilitando assim o processo de utilização da mesma. Inicialmente o utilizador encontra a janela inicial presente na figura 5.10. Aqui, pode escolher entre ir para um sitio em especifico ou escolher entre um dos itinerários de visita pré-definidos. No primeiro caso a janela da figura 5.11 (a) é exibida e o utilizador escolhe o destino pretendido. Caso o utilizador escolha a segunda opção, é exibida a janela da figura 5.11 (b), e os itinerários disponíveis são exibidos. Escolhido o destino, e dada a indicação ao robô para iniciar a viagem, a janela da figura 5.12 (a) é exibida. Quando chegar ao destino, o utilizador irá ser avisado através da janela da figura 5.12 (b). Aqui é questionado sobre a próxima decisão a tomar. Caso se queira dirigir a outro sitio, assim o pode fazer, caso não queira, pode enviar o robô para a sua localização de repouso, onde irá esperar por outro utilizador. 45
Figura 5.10: Janela principal da interface gráfica. (a) Escolha do local a visitar (b) Escolha do itinerário a realizar Figura 5.11: Janelas de escolha do sitio destino na interface gráfica. (a) Janela exibida quando o robô se encontra em movimento (b) Janela exibida quando o robô chega ao destino Figura 5.12: Janelas informativas do estado do robô. 46
Capítulo 6 Resultados e Discussão De maneira a avaliar o desempenho do sistema, foram realizados testes experimentais em ambiente real. Tendo em conta que o sistema desenvolvido pretende criar a base para um robô recepcionista, a maneira mais apropriada para o testar seria analisar o sucesso da tarefa de navegação, tendo em consideração a chegada do robô ao destino e o erro associado. Outra análise importante seria observar a melhoria na localização resultante do uso dos marcadores visuais. 6.1 Condições de Realização da Experiência A experiência realizada consiste na navegação através do percurso ilustrado na figura 6.1. O robô parte da posição assinalada pela bandeira axadrezada, dirigindo-se em direcção ao ponto A, seguido do ponto B, voltando ao ponto A e terminando no sitio de onde partiu. Em cada ponto mencionado anteriormente, o robô efectua uma paragem e a distância da posição real de paragem do robô em relação ao ponto pretendido para a paragem é medida. A condição de paragem num ponto, é definida através da distância euclidiana a esse ponto ser inferior a 20 centímetros. A posição dos marcadores para correcção da estimação da posição e orientação ao longo da trajectória, encontra-se presente na tabela 6.1 e uma ilustração da posição dos mesmos em relação ao percurso efectuado na figura 6.1. O percurso foi realizado quatro vezes, com velocidades de 0.2, 0.3 e 0.6 m/s. 47
Laboratório de Robótica Móvel Sala de Testes Contabilidade S 3 I Lab Legenda: Marcador Visual Início/Fim Pontos de paragem A B Ida Volta y x (0,0) 6 3 7 21 4 5 89 Figura 6.1: Percurso realizado durante os testes experimentais. Tabela 6.1: Coordenadas xyz da posição dos marcadores no referencial do mundo, estando todos orientados para o interior do corredor. 1 2 3 4 5 6 7 8 9 x [m] 0.00 7.00 13.95 17.38 17.38 19.14 16.21 7.00 0.88 y [m] 1.80 1.80 1.80 3.02 6.48 5.14 0.00 0.00 0.00 z [m] 0.83 0.83 0.83 0.83 0.83 0.83 0.83 0.83 0.83 48
6.2 Resultados Para a análise dos dados da experiência foram usadas como métricas a média (µ) e o desvio padrão (σ) da distância euclidiana do ponto real de paragem do robô ao ponto real de destino. Tabela 6.2: Resultados obtidos durante a experiência. Distância Euclidiana [cm] Tempo Decorrido [min] % Sucesso µ σ desvio máximo v= 0.2 [m/s] Ponto A 20.96 6.438 29.76 7:53:6 100% Ponto B 17.01 9.115 30.06 Ponto A 25.64 12.235 36.49 Fim 23.18 9.979 31.95 v= 0.3 [m/s] Ponto A 14.84 7.536 23.19 5:01:4 100% Ponto B 12.28 6.865 21.47 Ponto A 10.91 11.974 28.02 Fim 15.73 10.807 28.65 v= 0.6 [m/s] Ponto A 17.42 3.856 21.84 2:32:0 75% Ponto B 32.55 4.569 35.46 Ponto A 20.66 13.721 36.40 Fim 29.82 8.096 38.27 Na tabela 6.2 encontram-se os resultados dos testes realizados. Nesta pode-se verificar que para as velocidades de 0.2 e 0.3 m/s a distância euclidiana média de paragem nos diferentes pontos de teste está próxima do limiar definido, que é de 20 centímetros. Já com a velocidade de 0.6 m/s o robô ficou a uma distância euclidiana média superior ao limiar, podendo esta ser justificada através do momento que o robô possui na chegada ao ponto destino, não cessando o movimento imediatamente após dada a indicação de paragem, e caso tenha um pequeno erro de orientação, devido ao número de leituras efectuada por marcador a esta velocidade ser inferior, este vai-se traduzir numa distância euclidiana ao ponto maior. No entanto, o objectivo deste trabalho é passar o suficientemente próximo dos pontos objectivo de modo a possibilitar a realização da trajectória, e não a passagem exatamente pelo ponto objectivo. Esta escolha foi tomada, pois caso fosse necessário passar o mais próximo possível do ponto, seria necessário fazer um controlo mais fino e reduzir a velocidade de modo a obter essa exactidão. Assim, o critério adoptado foi um critério mais permissivo. Posto isto, os resultados mostraram-se bastante satisfatórios. 49
0 5 10 15 20 25 X 4 2 0 2 4 6 8 10 Y Localizacao Localizacao Corrigida Figura 6.2: Representação de uma das trajectórias realizadas durante os testes experimentais. 0123456 Amostras 1e11+1.5358819e18 0 5 10 15 20 25 X Trajectoria em X X X Corrigido hhhh hhh 4.5x10^3 (a) Evolução da posição em x 0123456 Amostras 1e11+1.5358819e18 4 2 0 2 4 6 8 10 Y Trajectoria em Y Y Y Corrigido 4.5x10^3 (b) Evolução da posição em y Figura 6.3: Evolução da posição do robô no eixo de coordenadas xey, respectivamente. 50
Tabela 6.3: Erro na coordenada xem relação à figura 6.3 (a), yem relação à figura 6.3 (b) exy em relação à figura 6.2. |µ|σmáximo x [m] 1.555 2.002 1.740 y [m] 1.382 1.408 4.012 xy [m] 2.319 2.223 4.579 Na figura 6.2 encontra-se representada a trajectória realizada durante o percurso de testes, estando representada a localização através da odometria e a localização corrigida pelos marcadores. É possível verificar a notória melhoria proporcionada pelos marcadores visuais colocados ao longo do percurso, e como a localização estimada através da odometria diverge do mesmo, chegando a ter erros de 1.74 mem xe4.012 mem y. Na figura 6.3 (a) encontra-se representada a evolução da posição na coordenada xe na figura 6.3 (b) a evolução da posição na coordenada y. A tabela 6.3 contem a média em módulo, o desvio padrão e erro máximo entre a estimação de posição através da odometria e a estimação corrigida pelos marcadores. 51
52
Capítulo 7 Conclusão e Trabalho Futuro 7.1 Conclusão Ao longo deste trabalho foi desenvolvido um sistema com vista na criação de um robô recepcionista para o piso 0 do Instituto de Sistemas e Robótica, explorando a utilização de marcadores visuais para uma melhor estimação da localização da plataforma móvel. Os testes de desempenho efectuados permitem concluir que as soluções implementadas tem um desempenho satisfatório e que o uso dos marcadores visuais é uma abordagem viável, não intrusiva e barata. No entanto, para condições de ambiente nocturno, onde a luminosidade é baixa, a solução implementada não é recomendada. Os algoritmos utilizados não se encontram optimizados, sendo que uma implementação na linguagem C++ irá melhorar consideravelmente os tempos de processamento. 7.2 Trabalho Futuro Para trabalho futuro existem alguns melhoramentos e diferentes abordagens que se podem realizar. Entre elas estão: •O melhoramento do algoritmo de navegação para a realização de uma trajectória mais suaves, utilizando por exemplo o método de bandas elásticas [48] •Estudar a utilização de outro tipo de filtragem para a estimação da localização corrigida, como o filtro de Kalman, explorando os modelos de erro dos sensores •Melhoramento da aparência do interface gráfico No entanto, no desenvolvimento de um robô interactivo, faz todo o sentido existirem ainda outras funcionalidades extra que se podem implementar futuramente como: •A utilização de uma câmara a detectar o utilizador e a variar a velocidade de locomoção do robô de acordo com a velocidade da pessoa •A comunicação com o utilizador ser feita por voz para uma interação mais natural 53
[61] Muhammad Zohaib, M Pasha, RA Riaz, Nadeem Javaid, Manzoor Ilahi, and RD Khan. Control strategies for mobile robot with obstacle avoidance. arXiv preprint arXiv:1306.1144, 2013. [62] Muhammad Zohaib, Syed Mustafa Pasha, Nadeem Javaid, and Jamshed Iqbal. Iba: Intelligent bug algorithm–a novel strategy to navigate mobile robots autonomously. In International Multi Topic Conference, pages 291–299. Springer, 2013. 60