IMPLEMENTAÇÃO E ANÁLISE DE LOCALIZAÇÃO EM ROBÓTICA MÓVEL POR FILTRO DE KALMAN Claudiney Calixto da Silva (PG), Juliano Augusto Pereira (PG) Divisão de Ciência da Computação - Instituto Tecnológico de Aeronáutica (ITA) Praça Marechal Eduardo Gomes, 50 - Vila das Acácias - CEP: 12228-901 São José dos Campos SP Brasil {ccalixto,julianop}@comp.ita.br Resumo. Este artigo apresenta a verificação de estimativas de posição continuadas de um robô móvel utilizando quatro sensores (três sonares e um odômetro). Essas estimativas são realizadas por meio de um algoritmo, computacionalmente eficiente, de formulação recursiva denominado Filtro de Kalman. O robô tem capacidade de locomover-se em ambientes estáticos e reconhecer tanto a sua posição inicial, quanto a dos obstáculos do ambiente. Com base nessas informações, o Filtro de Kalman é utilizado para estimar a posição real do robô em ambientes discretizados, compensando os erros acumulados obtidos pelas informações sensoriais. Abstract. This paper presents the verification of continuous positioning estimation for a mobile robot using four sensors (three sonars and one odometer). These estimations are performed by a computationally efficient algorithm, with recursive formulation called Kalman Filter. The robot has the capability of moving on static environments, knowing its initial position and all environment obstacles. According to this information, the Kalman Filter is used to estimate the actual robot position on discrete environments, compensating accumulated errors provided by sensorial information. 1. INTRODUÇÃO A Robótica Móvel representa uma linha de pesquisa focada no controle de veículos autônomos e semiautônomos, com ênfase nos problemas relacionados à locomoção, em ambientes dinâmicos e estáticos. Esses ambientes direferenciam-se, respectivamente, pela possibilidade de movimentação ou não dos objetos neles contidos. Para operar nesses ambientes, o robô deve ser capaz, autonomamente, de utilizar e adquirir conhecimentos sobre os mesmos, obter estimativas de localização, reconhecer obstáculos e responder a diferentes situações que possam ocorrer, devendo essas funcionalidades operar em conjunto. Essas características, enquadradas nas tarefas de planejamento de missões, geração de mapas, locomoção e localização em mapas, constituiem-se em problemas típicos de robótica móvel presentes em todos os projetos [1;2]. Dentre essas funcionalidades, a localização destaca-se como essencial, para os sistemas de controle de navegação em quaisquer ambientes. Existem três formas de localização: a local, onde se estima a posição por meio de um estado inicial conhecido; a global, onde se estima a posição sem conhecer o estado inicial; e o seqüestro, onde o estado inicial é conhecido e o intermediário não [3]. Entende-se por estado a variável que definirá, de modo único, a localização de um objeto móvel no mapa, ao longo do tempo. Em 1960, Rudolph. E. Kalman [4] publicou um artigo que descrevia uma solução recursiva para o problema de filtragem de dados discretos num sistema linear, e na robótica móvel, muitos
grupos de pesquisa têm utilizado o Filtro de Kalman e suas extensões para modelar e propagar incertezas na posição do robô, quanto a sua localização local. O presente artigo apresenta os resultados dos testes, realizados em simulação, da implementação de uma técnica de localização por Filtro de Kalman para Robôs Móveis, onde assumese a existência de um mapa preciso do ambiente e as informações sensoriais obtidas dos sensores de proximidade, visando avaliar a eficiência deste Filtro na resolução de problemas inerentes a localização. Na implementação, utilizou-se a linguagem Java com o objetivo de facilitar a integração com o simulador, Java Mobile Robot (JMR) [5]. Ela resultou numa aplicação Cliente/Servidor, com interface de visualização. Dividido em seções, este artigo possui uma introdução; uma seção 2 descrevendo os conceitos do Filtro de Kalman; uma seção 3 apresentando a implementação do filtro e a obtenção de parâmetros para o mesmo; uma seção 4 exibindo os resultados mais contundentes obtidos pelo experimento; e, por último, uma seção 5 abordando algumas conclusões. 2. FILTRO DE KALMAN O Filtro de Kalman, apresentado por Rudolph. E. Kalman [4], é um algoritmo recursivo ótimo, utilizado para prever os estados de um sistema dinâmico, baseado na medição da confiabilidade dos dados observados a partir de uma matriz denominada Matriz de Covariâncias, calculada a cada novo processo de estimação que se utiliza o filtro. A partir de uma posição inicial conhecida, este algoritmo combina todos os dados disponíveis, adicionados ao conhecimento anterior do sistema e de seus dispositivos, para produzir uma estimativa das variáveis desejadas, de tal sorte que, o erro seja reduzido estatisticamente ao longo do tempo. 2.1 O Algoritmo Discreto do Filtro de Kalman O Filtro de Kalman utiliza um processo de controle por realimentação, ou seja, estima-se o estado do processo num dado instante, e então se obtém o feedback, sob a forma de medidas geralmente ruidosas. Assim, as equações para o Filtro de Kalman dividem-se em dois grupos distintos para atualização das equações: o grupo de tempo e o de medição. As equações de tempo são responsáveis por projetar, com antecedência, as estimativas da covariância do estado atual e do erro, visando obter, a priori, as da próxima etapa. Já as equações de medição, responsáveis pelo feedback, incorporam uma nova medida na estimativa a priori, visando obter, a posteriori, uma estimativa melhorada. As equações de atualização podem também ser visualizadas como equações de predição, e as de medição como equações de correção, atuando em ciclos, conforme mostrado na Figura 1 abaixo. Equações de Atualização (Predição) Equações de Medição (Correção) Figura 1. O ciclo do Filtro de Kalman
3. IMPLEMENTAÇÃO PARA SIMULAÇÃO Como descrito anteriormente, a implementação baseou-se nas características do Simulador de robótica utilizado, o Java Mobile Robots (JMR) [5] e contemplou uma artiquetura divida em três módulos, apresentados na Figura 2 abaixo. (B) (A) (C) Figura 2. Arquitetura Implementada para Simulação A Figura 2 (A), apresenta a tela do simulador, que ilustra o Mundo Simulado numa visão aérea e a Posição do Robô. Um comportamento foi implementado, para interceptar as leituras dos Sonares e do Odômetro e as enviar para um Módulo Servidor, conforme ilustrado na Figura 2 (B). O Filtro de Kalman é executado nesse Módulo Servidor e o seus resultados são apresentados em tempo de execução, numa resolução maior, na Interface, conforme apresentado na Figura 2 (C). O Módulo de Interface é responsável pela execução do filtro e apresentação dos resultados discretizados. O Módulo Servidor encarrega-se da comunicação entre o Simulador e a Interface, e o Módulo de Comportamento informa a velocidade atual e a orientação do robô para o servidor, que por sua vez, comunica-se com a Interface. 3.1 Obtenção dos Parâmetros para Simulação As estimativas do Filtro de Kalman basearam-se em informações odométricas obtidas a partir das velocidades imediatas de deslocamento e rotação. Porém, devido as incertezas nas leituras das mesmas, utilizou-se também sonares, permitindo o reconhecimento da posição real do robô, ao detectar-se obstáculos conhecidos por um modelo do mundo, previamente fornecido. No experimento descrito neste artigo, as leituras dos Sonares S0, S3 e S6, conforme ilustrado na Figura 3, foram utilizadas para corrigir as estimativas de posição do Filtro de Kalman. Assim que um obstáculo, com posição conhecida, é detectado por esses Sonares, efetua-se a média do valor de suas leituras estimando-se a posição atual. Esse posição, torna-se parâmetro do próximo passo do algoritmo de Kalman implementado.
Figura 3. Ilustração Representativa dos Ângulos de Sonar em Relação ao Eixo x-y 4. ANÁLISE DOS RESULTADOS OBTIDOS Depois de realizar mais de 50 testes, sob condições variadas, selecionou-se os 3 resultados que mais realçavam a eficiência da aplicação do Filtro de Kalman, para estimar-se a posição do robô, e também o quanto as leituras dos sonares foram úteis para correção das estimativas do filtro. Todos os gráficos, obtidos nos testes, demonstram a trajetória do Robô num ambiente discretizado, onde cada Ponto, nas coordenadas X e Y, representa uma unidade de deslocamento no Plano. Por meio da análise desses testes, pôde-se notar, que enquanto as estimativas baseavam-se apenas em dados odométricos, com uma trajetória sinuosa, os resultados não eram aceitáveis para a estimação da posição real do robô. Porém, uma solução aceitável, foi encontrada por meio da utilização de leituras sensoriais para atualização do valor estimado, simulando-se uma reinicialização dos parâmetros do filtro, conforme demonstrado na Figura 4 abaixo. Os losângos da figura ilustram os instantes em que se executou a reinicialização do filtro. 65 55 45 35 25 15 5-5 -15-32 -22-12 -2 8 18 28 38 48 58 68 78 Real Odometro Refresh Estimado Figura 4. Aplicação do Filtro numa Trajetória Sinuosa
Com a execução do Filtro de Kalman numa trajetória que não apresenta mudanças bruscas de direção, notou-se que a estimativa aproximava-se mais do real e à medida que obstáculos eram encontrados, as informações sensoriais obtidas foram utilizadas, melhorando-se, ainda mais, a estimativa de posição, conforme mostrado na Figura 5 abaixo. 100 90 80 70 60 50 40 30 20 10 0-2 8 18 28 38 48 58 68 78 88 98 108 Real Odometro Refresh Estimado Figura 5. Aplicação do Filtro numa Trajetória pouco Sinuosa Quando simulou-se um atuador perfeito, ou seja, livre de ruídos, numa superfície que não produzia atritos, pôde constatar que somente a odometria era suficiente para se estimar a posição do robô. Porém, tal condição somente pode ocorrer em simulações. Conforme demonstrado na Figura 6 abaixo, as trajetórias real, estimada pelo odômetro e a estimada pelo filtro, foram praticamente coincidentes. 110 100 90 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 Real Odometro Refresh Estimado Figura 6. Aplicação do Filtro em condições Perfeitas
5. CONCLUSÃO O simulador Java Mobile Robots (JMR) mostrou-se uma boa aplicação de simulação para Robótica Móvel. Com ele, tornou-se possível elaborar uma implementação didática do Filtro de Kalman, com apresentação de resultados em tempo de execução. Tal característica, otimizou o tempo de realização de testes e aumentou a credibilidade dos resultados. Com base na Análise dos resultados obtidos pelo Filtro de Kalman, pôde-se constatar que ele é uma ferramenta eficiente para reduzir os erros acumulados por sensores de odometria. Porém em trajetórias longas e sinuosas, houve a necessidade de se utilizar leituras dos sonares, como auxílio ao filtro. Além disso, pôde-se constatar que, quanto menor for a precisão do odômetro utilizado, maior será a importância das correções de posição estimadas pelo Filtro de Kalman. Com este artigo verificou-se que, a utilização de sensores de proximidade, como sonares, é de fundamental importância para o melhoramento das estimativas do Filtro de Kalman na simulação em Robôs Móveis. Por isso, recomenda-se a utilização de todas informações sensoriais disponíveis para a execução do Filtro de Kalman, de forma a aumentar a precisão em suas estimativas de posição e reduzir as incertezas produzidas pelos ruídos nos sensores. AGRADECIMENTOS Agradecemos aos alunos de Pós-Graduação do Instituto Tecnológico de Aeronáutica (ITA), Marco A. Braga, Evandro Henrique e Robson S. Mendonça, pela colaboração durante a execução dos experimentos, e aos Profs. Carlos H. C. Ribeiro e Adilson Marques da Cunha, por toda orientação oferecida. REFERÊNCIAS [1] Borenstein J. and Feng, L. (1996), "Gyrodometry: A New Method for Combining Data from Gyros and Odometry in Mobile Robots." Proceedings of the 1996 IEEE International Conference on Robotics and Automation, Minneapolis, Minnessota, Apr. 22-28, 1996, pp. 423-428. [2] Borenstein, J., Everett, H.R., Feng, L., and Wehe, D. (1996) "Mobile Robot Positioning: Sensors and Techniques." Invited paper for the Journal of Robotic Systems, Special Issue on Mobile Robots. Vol. 14, No. 4, April 1997, pp. 231-249. [3] Ribeiro, H. C. (2003). Fundamentos Computacionais de Robótica Móvel. Notas de Aula, 1º Sem 2003. Instituto Tecnológico de Aeronáutica - ITA. São José dos Campos - SP. [4] Kalman, E. Rudolph. (1960), "A New Approach to Linear Filtering and Prediction Problems", Transactions of the ASME: Journal of Basic Engineering, vol 82, Series D, pp. 35-45. [5] Baeza, Ignacio Iborra; Ortega, Miguel Angel Lozano; López Domingo Gallardo. (2001) JMR 1.0 - Manual do Programador.