Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE JOSÉ DO ROSÁRIO VELLANO
UNIFENAS
MATHEUS DE BARROS CASTELLO
ROBÔ MÓVEL AUTÔNOMO PARA NAVEGAÇÃO EM AMBIENTE FECHADO UTILIZANDO LOCALIZAÇÃO WI-FI COM USO DE SISTEMA ARTIFICIAL DE CONVERSAÇÃO
COMO UM FATOR PARA MUDANÇA DE ESTADO
Alfenas - MG
2014
MATHEUS DE BARROS CASTELLO
ROBÔ MÓVEL AUTÔNOMO PARA NAVEGAÇÃO EM AMBIENTE FECHADO UTILIZANDO LOCALIZAÇÃO WI-FI COM USO DE SISTEMA ARTIFICIAL DE CONVERSAÇÃO
COMO UM FATOR PARA MUDANÇA DE ESTADO
Monografia apresentada à Universidade José do Rosário Vellano, como parte das exigências do Curso de Bacharelado em Ciência da Computação para conclusão do curso de graduação.
Orientador: Prof. MSc. Marcos Alberto de Carvalho
Alfenas - MG
2014
Matheus de Barros Castello
ROBÔ MÓVEL AUTÔNOMO PARA NAVEGAÇÃO EM AMBIENTE FECHADO UTILIZANDO LOCALIZAÇÃO WI-FI COM USO DE SISTEMA ARTIFICIAL DE
CONVERSAÇÃO COMO UM FATOR PARA MUDANÇA DE ESTADO
Monografia Apresentada como parte das Exigências para a conclusão do curso de Bacharelado em Ciência da Computação, da Universidade José do Rosário Vellano.
Aprovada em:___________________________________________
______________________________________________________ Prof. MSc. Marcos Alberto de Carvalho - Orientador
Universidade José do Rosário Vellano
______________________________________________________ Prof. MSc. José Claudio de Sousa Reis Universidade José do Rosário Vellano
______________________________________________________ Prof. Mauricio Moreira Júnior
Universidade José do Rosário Vellano
Dedico ao meu avô, Almério Magalhães de Barros, que me
influenciou, direta e indiretamente, desde bem cedo a entrar
nos mundos dos circuitos eletrônicos, computadores e ficção
científica.
Agradecimentos,
Agradeço aos meus pais, Carlos H. de Oliveira Castello e Simone de
Barros Castello, pelo apoio, incentivo, e por sempre investirem e se sacrificarem pelo
meu futuro. Se, cheguei a ver mais longe, foi por estar sob os ombros destes
gigantes.
Agradeço ao Prof. MSc. Marcos Alberto de Carvalho, por sempre me dizer
que era possível. Que acreditou me apoiou e compartilhou, com grande ansiedade e
curiosidade, das minhas loucuras, me mostrando o caminho correto para chegar a
concretizá-las.
Agradeço ao meu grande amigo, Lorenzo Couto, por ser meu braço direito
durante esses quatro anos. Por me acompanhar e ajudar nas aventuras acadêmicas,
sendo sempre genial. Pelos momentos alegres e tristes, por isso faço minhas as
palavras de Joseph Addison: “A amizade desenvolve a felicidade e reduz o
sofrimento, duplicando a nossa alegria e dividindo a nossa dor.”.
Agradeço ao pessoal do Núcleo de Educação a Distância UNIFENAS, por
me aguentarem enquanto estagiário, e depois como penetra utilizando a sala como
meu laboratório durante minhas pesquisas. Em especial ao Prof. Mauricio Moreira
Junior, ao qual tenho por grande amigo. Agradeço pelas preciosas trocas de
experiências, tanto profissionais como de vivência.
Agradeço aos coordenadores do curso de Bacharelado em Ciência da
Computação UNIFENAS, Prof. MSc. Alexandre Martins Dias e Profa. MSc. Marly
Moreira Dias, por serem minha fonte de inspiração e exemplo.
Agradeço aos meus familiares, que me apoiaram desde sempre. Aos
professores, e colegas de turma, que são parte da minha vida. E a todos os
funcionários e colaboradores do câmpus UNIFENAS – Alfenas, que com certeza
tiveram seu fator de contribuição para conclusão do presente projeto.
Agradeço ao Programa Institucional de Bolsas de Iniciação Científica
PROBIC/UNIFENAS, pelo fomento e incentivo à pesquisa.
“Quando um cientista distinto e experiente diz que algo é
possível, é quase certeza que tem razão. Quando ele diz que
algo é impossível, ele está muito provavelmente errado.”
(Arthur C. Clarke)
RESUMO
CASTELLO, Matheus de Barros. Robô Móvel Autônomo para Navegação em Ambiente Fechado Utilizando Localização WI-FI com uso de Sistema Artificial de Conversação como um Fator para Mudança de Estado
Ambientes com redes sem fio tornam-se cada vez mais normais, além do acesso à
internet possibilitam também outras aplicações. O objetivo do projeto foi desenvolver
um robô móvel com navegação autônoma, com controle fuzzy e sistema de
posicionamento Wi-Fi, procurando padrões na potencia de sinais através de redes
neurais. Para entrada do destino da navegação é utilizado um sistema artificial de
conversação que utiliza síntese e reconhecimento de voz. As redes neurais
obtiveram resultados satisfatórios nos testes de localização.
Palavras-chave: Robô Móvel. Navegação Fuzzy. Localização Wi-Fi. Chatterbot.
ABSTRACT
CASTELLO, Matheus de Barros. Mobile Robot Autonomous Navigation for Closed Enviroment Using Wi-Fi Localization with the use of Artificial Conversation System as a factor for Change of State
Environments with wireless networks become more and more normal, in addition to
Internet access also enable other applications. The project goal was to develop a
mobile robot with autonomous navigation, with fuzzy control and Wi-Fi positioning
system, looking for patterns in signal power through neural networks. For input
navigation destination is used an artificial conversational system that uses synthesis
and speech recognition. Neural networks have obtained satisfactory results in
localization testing.
Keywords: Mobile Robot. Fuzzy Navigation. Wi-Fi Localization. Chatterbot.
SUMÁRIO
1 INTRODUÇÃO ............................................................................................... 3
1.1 Justificativa: Origem e Importância do Trabalho....................................... 3
1.2 Objetivos Gerais ........................................................................................... 3
1.3 Objetivos Específicos .................................................................................. 4
2 REFERENCIAL TEÓRICO ............................................................................. 5
2.1 Sistemas Inteligentes Chatterbots .............................................................. 5
2.1.1 Estrutura de um Chatterbot ......................................................................... 6
2.2 Representação de Conhecimento por Árvores de Predicados ................ 6
2.3 Reconhecimento e Síntese de Voz .............................................................. 7
2.4 Redes Neurais Artificiais ............................................................................. 8
2.4.1 Introdução ..................................................................................................... 8
2.4.2 Métodos para Treinamento de Redes Neurais ......................................... 10
2.4.2.1 Aprendizado Supervisionado por Correção de Erros ............................. 11
2.4.3 ENCOG: Redes Neurais em Ambiente Java ............................................. 14
2.5 Lógica Fuzzy ............................................................................................... 15
2.5.1 Controles Fuzzy .......................................................................................... 16
2.5.2 jFuzzyLogic: Biblioteca Fuzzy para Ambiente Java ................................ 18
2.6 Robótica ...................................................................................................... 19
2.6.1 Introdução ................................................................................................... 19
2.6.2 Classificação ............................................................................................... 19
2.6.3 Sensores ..................................................................................................... 20
2.6.4 Efetuadores ................................................................................................. 21
2.6.5 Percepção ................................................................................................... 21
2.6.6 Robôs Móveis: Principais Desafios .......................................................... 21
2.7 Sistemas de Localização .......................................................................... 22
2.7.1 GPS (Global Positioning System) ............................................................ 22
2.7.2 Odometria ................................................................................................... 23
2.7.3 Posicionamento Wi-Fi ............................................................................... 23
2.7.3.2 Posicionamento Wi-Fi Utilizando Controle Fuzzy ................................... 24
2.7.3.1 Posicionamento Wi-Fi Utilizando Redes Neurais .................................... 25
2.8 Placa IOIO Android ..................................................................................... 25
3 MATERIAL E MÉTODOS ............................................................................. 27
3.1 Interface Rbótica ......................................................................................... 27
3.2 Aplicativo Android Controlador da Interface Robótica ........................... 28
3.3 Sistema de Localização Wi-Fi .................................................................... 31
3.3.1 Fase de Localização Utilizando Distância de Euclidiana ........................ 33
3.3.2 Fase de Localização Utilizando Distância de Manhattan ........................ 34
3.3.3 Fase de Localização Utilizando Controle Fuzzy ...................................... 34
3.3.2 Fase de Localização Utilizando Redes Neurais ....................................... 35
3.4 Navegação Fuzzy ........................................................................................ 36
3.5 Mapeamento Utilizando Grafos ................................................................. 39
3.6 Registrando de Dados Usando Mapeamento Objeto-Relacional ........... 39
3.7 Sistema Artificial de Conversação ............................................................ 41
4 RESULTADOS ............................................................................................. 42
4.1 Sistema de Localização Wi-Fi .................................................................... 42
4.1.1 Localização por Redes Neurais ................................................................. 43
4.1.2 Localização por Lógica Fuzzy ................................................................... 46
4.2 Navegação ................................................................................................... 51
4.2.1 Navegação Fuzzy ........................................................................................ 51
4.3 Aplicativo Controlador ............................................................................... 55
4.4 Sistema Artificial de Conversação ............................................................ 56
5 DISCUSSÃO ................................................................................................ 58
6 CONCLUSÃO............................................................................................... 60
REFERÊNCIAS ......................................................................................................... 61
3
1 INTRODUÇÃO
1.1 Justificativa: Origem e Importância do Trabalho
O projeto Safira é o produto de anos de investigação na área de agentes
inteligentes da classe chatterbot, do Grupo de Pesquisa em Informática (GPI -
Ciência da Computação UNIFENAS). Os sistemas da classe chatterbot são agentes
inteligentes de conversação por interpretação de linguagem natural. Esses sistemas
levam em consideração formas mais intuitivas de interação entre homem e máquina,
simulando uma conversa entre pessoas aonde o usuário pode adquirir informações
do sistema utilizando dispositivos de interatividade já conhecidos, como o discurso
falado.
Uma interface robótica é composta por efetuadores, rodas, articulações e
outros dispositivos que exerçam forças físicas sobre um ambiente, e sensores que
lhe permitem perceber esse ambiente. A interface robótica, o hardware, possibilita à
um agente inteligente, o software, executar tarefas e manipular o mundo físico ao
seu redor. A junção entre interface robótica e agente inteligente constitui um robô.
Robôs podem, dentro do domínio de conhecimento desses serem aplicados em
inúmeros domínios de aplicação. Robôs serviçais são uma das aplicações, estes
podem prestar serviços e assistência a seres humanos em tarefas não conhecidas
ou repetitivas, em que haja manipulação do ambiente.
Procurando aplicar a eficiência da oferta da informação do agente
inteligente Chatterbot Safira, suas interfaces de interação homem máquina como
ferramentas de montagem de bases de conhecimento, em manipulação do mundo
físico o presente projeto propõe o estudo e implementação de uma interface robótica
que possibilite a junção dessas tecnologias em uma aplicação de robô serviçal.
1.2 Objetivos gerais
Estudar a implementação de uma interface robótica móvel, e a junção
desse mecanismo com o sistema inteligente Safira, este será incrementado para que
possa executar mudanças de estado na interface robótica, decididas por sensores
no robô e informações e ações processadas por linguagem natural oriundas de um
4
usuário. Espera-se que ao final da pesquisa tenha-se desenvolvido um robô serviçal
móvel que possa auxiliar alunos na procura de salas no bloco 21 do campus
UNIFENAS Alfenas.
1.3 Objetivos específicos
Construção de uma interface robótica;
Estudo de aplicações de sensores;
Estudo de aplicações de efetuadores;
Estudo de localização em ambientes fechados;
Construção de base de conhecimento;
Implementação de módulos manipuladores do mundo físico no
projeto Safira.
5
2 REFERENCIAL TEÓRICO
2.1 Sistemas Inteligentes Chatterbots
Nos dias atuais o uso de sistemas inteligentes, ou agentes inteligentes, se
torna comum de forma gradativa. Umas das áreas exploradas dentro dos sistemas
inteligentes são os agentes de conversação por interpretação de linguagem natural.
Levando em consideração uma forma mais intuitiva de relacionamento entre homem
e máquina, estes agentes são nomeados como Chatterbots (WEIZENBAUM, 1966).
Um Chatterbot é um programa de computador que tem como objetivo simular uma
conversa com pessoas, sendo que estas tenham a impressão de estarem mesmo
conversando com um humano e não um programa de computador (TEIXEIRA e
MENEZES, 2003).
O conhecimento do Chatterbot é modelado por um Botmaster, ou
Engenheiro de Conhecimento, que interage com um especialista dentro de
determinada área (TEIXEIRA e MENEZES, 2003). O Engenheiro de Conhecimento é
o responsável por transformar o conhecimento repassado pelo Especialista ou outra
fonte de estudo em uma representação computacional formal pela qual o
computador poderá trabalhar. A aquisição do conhecimento em um sistema
inteligente é o problema principal do desenvolvimento de um agente completo e útil
(REZENDE 2003).
Essa classe de sistema inteligente nasceu quando foi criado o primeiro
Chatterbot por Joseph Weizenbaum. Desde então, foram criados outros sistemas
inteligentes de conversação; alguns foram desenvolvidos para utilização no meio
empresarial nos Estados Unidos e no Brasil (ALVES e ARAUJO, 2011).
São inúmeras as aplicações de um sistema inteligente de conversação, das quais
podem se destacar:
Atendentes virtuais;
Tutores para educação à distância;
Agregadores de conhecimento de fácil recuperação;
6
2.1.1 Estrutura de um Chatterbot
As estruturas básicas de um Chatterbot são a interação com o usuário e a
manipulação de dados.
A interação do usuário acontece quando este faz uma pergunta que será
processada pelo motor de inferência.
Considere-se “motor de inferência”, neste caso, o sistema que, baseado em uma frase digitada pelo usuário é capaz de encontrar uma resposta
coerente em sua base de conhecimento (ESPINDOLA, 2005, p.3).
A resposta do motor de inferência é então enviada para a interface com usuário para
visualização da mesma.
A manipulação dos dados referente ao assunto abordado pelo Chatterbot
consiste em inserções e manutenção das informações na base de conhecimento. A
manipulação dos dados atualiza em tempo real o conhecimento do sistema
inteligente (ALVES e ARAUJO, 2011).
2.2 Representações do conhecimento por árvores de predicados
Segundo Espindola (2005), uma base de conhecimento precisa ser
representada e estruturada com cuidado, com o objetivo de facilitar o seu acesso.
Espindola (2005) analisou diálogos de salas de bate papos, e optou utilizar árvores
para o armazenamento da representação do conhecimento, sendo que está
estrutura possibilitaria a classificação dos predicados dentro do contexto da
resposta. Por exemplo, ao se perguntar “onde fica a cidade X” as palavras “onde” e
“fica” são características de quando se quer saber a localização da cidade X. Assim
sendo sua representação em árvore ficaria como o da Figura 1.
Figura 1 – Árvore de conhecimento.
Fonte: Elaborada pelo Autor.
7
Cada nó da árvore contém um grupo de palavras, sinônimas ou palavras
usadas com a mesma característica, que determinam o contexto, caminho a se
percorrer para chegar a uma folha, sendo esta a saída do sistema ou resposta.
Com essa nova forma de representação do conhecimento foi possível
implementar, em um trabalho anterior, inferência sobre respostas e construir
mecanismos de diálogo, como mudanças de assuntos por escolhas e treplicas.
Como mostra a representação de conhecimento da Figura 2, se o usuário fizer a
pergunta “Tem y em x?”, o motor de inferência retornara a resposta “Sim x tem y.
Mas eu gosto mesmo de z, você quer saber sobre z?”. Agora o usuário pode
responder a pergunta realizada pelo Chatterbot (CASTELLO, NASCIMENTO e
CARVALHO, 2013).
Figura 2 – Representação de inferência na resposta
Fonte: Elaborada pelo Autor.
Também foi possível implementar funções em respostas. Pode-se mandar
uma ação ao Chatterbot, esse ao inferir a pergunta chega a um nó que efetue uma
ação programada, um módulo ou programa de computador (CASTELLO,
NASCIMENTO e CARVALHO, 2013).
2.3 Reconhecimento e Síntese de Voz
O homem, de forma nativa, tem maneiras de interagir com o ambiente
com seus sensores: audição, olfato, paladar, tato e visão. É através das informações
oriundas desses sensores que o cérebro interpreta e toma ações para modificar o
ambiente. Nessa interação, podem-se tomar decisões bem como adquirir
conhecimento. Um agente inteligente, munido com dispositivos de realidade virtual
8
que agucem no usuário seus sistemas sensoriais, torna um sistema ou interface
computacional, de fácil aprendizado e de alta acessibilidade. Destaca-se o uso de
ferramentas para reconhecimento de voz, onde o usuário pode usar sua linguagem
natural na forma falada para interagir com o sistema (DAMASCENO, PEREIRA e
BREGA 2004).
Para uma maior emersão do usuário no sistema de conversação, uma
ação falada, sendo processada pela ferramenta de reconhecimento de voz, pode ser
respondida pelo agente por síntese de voz, no qual um texto que seria a resposta do
sistema é assim convertido para uma virtualização de voz. Realizando então um
processo de realidade virtual bem aproximada do meio de comunicação mais
utilizado pelos humanos (CASTRO 2004).
2.4 Redes Neurais Artificiais
2.4.1 Introdução
Segundo Rezende (2003) redes neurais artificiais são:
Modelos matemáticos que se assemelham às estruturas neurais biológicas e quem têm capacidade computacional adquirida por meio de aprendizado e
generalização. (REZENDE, 2003, p.142).
RNAs (Redes Neurais Artificiais) possuem a capacidade de aprendizado adaptativo
em consequência da interação com o meio externo. O aprendizado da rede ocorre
por meio de exemplos. Certo conjunto de dados sobre um problema é apresentado à
rede, e um algoritmo de aprendizado adapta as características da rede para a
solução do problema (REZENDE, 2003).
Depois de treinadas as RNAs possuem informações contidas em sua
arquitetura. O processamento e armazenamento destas informações ocorrem de
forma paralela e distribuída nos chamados elementos processadores. Cada um
desses elementos processadores é um neurônio artificial (Figura 3), aonde se possui
entradas e uma saída (REZENDE, 2003).
9
Figura 3 – Neurônio Biológico e Neurônio Artificial.
Fonte: DIN1.
O diagrama da Figura 3 apresenta o modelo de neurônio artificial apresentado por
McCulloch e Pitts, também conhecido como modelo MCP. Nesse modelo as
entradas são representadas pelo vetor de entradas. Cada
entrada do vetor possui seu correspondente peso . A resposta do neurônio
artificial, a saída , é calculada através da aplicação de uma função de ativação
sobre o resultado de , onde ∑ (REZENDE, 2003).
Um elemento processador tem o poder de executar uma simples função.
O grupamento de elementos processadores, que formam a rede neural, tem a
capacidade de solucionar problemas complexos. Redes neurais do tipo feed-forward
possuem elementos processadores de entradas (1), elementos processadores em
camadas intermediarias (2), que recebem como entradas as saídas de cada um dos
elementos de 1, e elementos processadores de saída da rede que recebem como
entrada as saídas de cada elemento de 2 (Figura 4) (REZENDE, 2003).
1
Departamento de Informática da Universidade Estadual de Maringá. Disponível em: <http://www.din.uem.br/ia/neurais/> Acesso 12 maio de 2014.
10
Figura 4 – Representação esquemática de uma rede neural do tipo feed-forward.
Fonte: ICMC USP2.
RNAs são utilizadas em inúmeras aplicações. A característica mais
importante segundo Rezende (2003) de RNAs está na capacidade de aproximação
universal de funções multivariáveis continuas. Os problemas que uma RNA pode
resolver são classificados nos seguintes:
Aproximação de Funções;
Predição;
Classificação;
Categorização;
Otimização.
2.4.2 Métodos para Treinamento de Redes Neurais
Para que uma RNA resolva certo problema os pesos correspondentes a
cada entrada dos elementos processadores devem estar devidamente ajustados
para o contexto do problema. O método aplicado para o ajuste dos pesos da rede
define o processo de aprendizado da mesma. Os métodos se classificam em:
supervisionados, não supervisionados e por reforço. O treinamento supervisionado
ocorre onde o algoritmo de treinamento, ou supervisor, recebe dados de exemplos
2Disponível em: <http://www.icmc.usp.br/pessoas/andre/research/neural/> Acesso 12 maio 2014.
11
com entradas e saídas desejadas para cada uma das entradas, assim sendo o
supervisor ajusta os pesos para que a saída da rede seja a mais próxima, dentro
de limites de erro aceitáveis, da saída desejada. No treinamento não supervisionado
o algoritmo recebe dados de exemplo apenas com entradas, sem as saídas
desejadas, e cabe ao treinamento ajustar os pesos para que a saída da rede possa
classificar os dados de entrada. O treinamento por reforço é um treinamento que une
definições das duas anteriores, os dados de exemplos contem as entradas e não
definem as saídas desejadas, porém durante os ajustes dos pesos o desempenho
da rede é verificado, e se ocorrer um decaimento do desempenho um sistema
crítico, ao invés de um supervisor, retorna uma penalidade, ou um reforço em caso
de ganho de desempenho, para que no decorrer do treinamento a ação que realizou
o decaimento ou ganho possa ocorrer com menor ou maior probabilidade
(REZENDE, 2003).
2.4.2.1 Aprendizado Supervisionado por Correção de Erros
O algoritmo largamente utilizado para treinar redes de múltiplas camadas
é o Backpropagation, aprendizado por retropropagação dos erros. Utilizando-se da
técnica do gradiente descendente, das derivadas parciais do erro de saída da rede,
o Backpropagation atualiza os pesos em direção contrária ao gradiente do erro. De
forma genérica o método do gradiente utilizado para ajuste dos pesos é
demonstrado na equação abaixo:
Equação 1.
Onde é a taxa de aprendizagem e
é a derivada parcial do erro em relação ao
peso do neurônio ao neurônio (RIEDMILLER e BRAUN, 1993).
Rezende (2003) destaca dificuldades no treinamento utilizando gradiente
descendente, causados por não linearidades das funções de ativação. Mínimos
locais e regiões planas, onde o gradiente é zero, podem ocorrer diante das
irregularidades das superfícies de erro. Procurando evitar regiões de gradiente nulo
12
acrescenta-se um termo chamado de momentum à equação de ajuste de pesos,
como descrito na equação abaixo:
Equação 2.
O termo de momentum é constituído por uma constante de momentum,
representada por , que multiplica pelo ajuste anterior, , acumulando
assim uma memória residual sobre o sentido dos ajustes anteriores. Mesmo que o
gradiente resulte em zero, o termo de momentum conterá ainda resíduos dos ajustes
anteriores, o que fará que o treinamento continue ajustando os pesos na mesma
direção anterior ao gradiente nulo, até que o gradiente passe a ser maior que o
momentum (REZENDE, 2003).
Com base no algoritmo de Backpropagation foram propostas variações
com o objetivo de se acelerar a velocidade de convergência no aprendizado. O
algoritmo Resilient Propagation ou propagação elástica, mais conhecida por
RPROB, foi uma dessas variações. O RPROB segundo Riedmiller e Braun (1993) é
um método de aprendizado supervisionado eficiente que atualiza os pesos da RNA
diretamente, onde cada peso tem seu próprio valor de atualização e não mais
depende do tamanho do gradiente para a atualização do peso. O algoritmo de
RPROP é dividido em duas partes, primeiramente adapta-se o valor de atualização
dos pesos, como mostra a equação abaixo:
{
Equação 3.
13
Onde . Para cada iteração as derivadas parciais do peso
podem trocar de sinal. Quando a troca de sinal ocorre indica que a atualização
anterior foi grande demais e o algoritmo pulou um mínimo local, então o valor
de atualização é decrementado pelo fator . Se o sinal da derivada parcial
continua o mesmo então o valor de atualização é incrementado pelo fator o que
acelera a convergência para regiões mínimas. A segunda parte do RPROB é a
atualização do valor dos pesos utilizando os valores ( ) calculados anteriormente,
que seguem a regra abaixo:
{
Equação 4.
Equação 5.
Colocando em palavras as regras, se a derivada parcial é positiva, onde se indica
aumento do erro, então se aplica subtração do valor de atualização ao peso, se a
derivada parcial for negativa então o valor de atualização é adicionado no peso.
Quando ocorre a troca de sinal da derivada parcial, que indica a perca do mínimo
por um passo grande demais, a regra sofre uma exceção e a atualização do peso
anterior precisa ser revertida:
Equação 6.
Prevenindo ainda que haja trocas sucessivas de sinal na derivada, devido ao valor
revertido, é atribuído zero ao gradiente da iteração anterior para que não haja
atualização do peso na próxima iteração Equação 7.
14
Equação 7.
Riedmiller e Braun (1993) concluem que o algoritmo de aprendizado
RPROP é de fácil implementação e menor custo computacional. Ainda destacam
que no aprendizado por Backpropagation, que utiliza o gradiente descendente, o
valor da derivada parcial diminui exponencialmente com a distância entre peso e a
camada de saída, causando aprendizado mais lento nas camadas mais longes da
de saída. O RPROP utiliza apenas a informação de troca de sinal da derivada, para
adaptação e aprendizado, e não utiliza do valor da mesma para a mudança dos
pesos. Por esta causa o aprendizado ocorre homogêneo entre todas as camadas da
RNA resultando em convergência mais rápida.
2.4.3 ENCOG: Redes Neurais em Ambiente Java
Heaton (2008) em seu livro, Introduction to Neural Networks with Java,
apresenta uma poderosa interface de programação para implementação de soluções
utilizando redes neurais em ambientes Java, desenvolvida por ele próprio com ajuda
de colaboradores. A biblioteca de código livre ENCOG fornece várias arquiteturas de
redes neurais, entre elas:
ADALINE;
Hopfield;
Jordan Recurrent;
Radial Basis Function;
Boltzman Machine;
Feedforward.
A biblioteca também fornece vários métodos de treinamento de redes neurais, como:
15
ADALINE Training;
Backpropation;
Resilient Propagation;
Genetic Algorithm Training.
2.5 Lógica Fuzzy
No mundo real existem características imprecisas ou vagas que não
podem ser classificadas nem como verdadeiras nem como falsas. Quando um
problema requer a avaliação de uma característica vaga, ou fuzzy do inglês
nebuloso, incerto, utiliza-se a teoria dos conjuntos fuzzy. Um conjunto fuzzy nada
mais é que uma extensão da teoria dos conjuntos clássica, e é utilizada para
caracterizar um elemento dentro de um grau de pertinência, entre pertinência total e
não pertinência, em relação a certo conjunto (REZENDE, 2003).
Para uma melhor compreensão da utilização de conjuntos fuzzy o
exemplo do universo da temperatura é recorrente. Normalmente a mente humana
trata a temperatura em graus de pertinência vagos, quando perguntando sob a
temperatura não se responde um número, mas sim uma classe: frio, muito frio,
agradável, quente ou muito quente. E esta capacidade de representar uma variável
não como algo quantitativo mais sim qualitativo apresenta a ideia das variáveis
linguísticas. No caso da temperatura a variável linguística seria “Temperatura”, e as
características de “Temperatura”, também variáveis linguísticas porem chamadas de
expressões linguísticas, seriam: frio, muito frio, agradável, quente ou muito quente.
Na Figura 5 é apresentada uma partição fuzzy para o universo da temperatura, de 0
a 50 graus, utilizando as variáveis linguísticas descritas acima:
16
Figura 5 – Partição fuzzy para o universo da temperatura.
Fonte: Elaborada pelo autor.
Com a representação gráfica acima é notável os graus de pertinência, e as
ambiguidades presentes, para cada expressão linguística, na partição. Por exemplo,
quando a temperatura estiver em 8 graus, eixo , haverá pertinência no conjunto do
muito frio, projeção no eixo , e pertinência no conjunto do frio, projeção no
eixo . Ou seja, ao invés do tratamento da lógica clássica computacional,
aonde haveria verdadeiro para “Muito frio” e falso para “Frio”, há 30% de frio e 60%
de muito frio quando a temperatura esta em 8 graus. Isso possibilita a tomada de
decisão eficiente a partir de informações ambíguas (REZENDE, 2003).
2.5.1 Controles Fuzzy
Rezende (2003) descreve o modelo de inferência fuzzy de Mandami
(1974) em três blocos principais: conversação escalar ou fuzzificação, máquina de
inferência e conversão escalar ou defuzzificação.
A etapa de fuzzificação é onde valores numéricos escalares de entrada
do problema são particionados, construídos os conjuntos fuzzy e suas respectivas
expressões linguísticas (REZENDE, 2003).
Na máquina de inferência são utilizadas regras de produção que formam
a base de conhecimento do controle fuzzy. As regras de produção utilizam-se das
17
variáveis linguísticas para tratar condições referentes às pertinências do conjunto da
variável. Segue um exemplo de regra de produção:
A máquina de inferência então a partir de informações qualitativas,
e , gera um resultado
também qualitativo (REZENDE, 2003).
A regra semântica para inferência utilizada no modelo de Mandami é a do
Máx-Min. Para exemplificação são descritas as partições fuzzy da figura 6, utilizadas
em um controle fuzzy hipotético, que atua sobre o ar condicionado de uma sala com
computadores, onde a temperatura deve ser resfriada de acordo com a quantidade
de computadores ligados. No exemplo há 30 computadores ligados e a temperatura
da sala no momento é de 30 graus.
Figura 6 – Partições fuzzy de exemplo.
Fonte: Elaborada pelo autor.
Aplicando o método dos mínimos para o operador , e dos máximos para a
acumulação, na regra de produção descrita no parágrafo anterior, para
com grau de pertinência de aproximadamente e
com pertinência de aproximadamente 0.3, então
. Assim o resultado da inferência é o valor de no plano
cartesiano para o conjunto do consequente, , como mostra a
Figura 7.
18
Figura 7 – Partição fuzzy para a saída ArCondicionado.
Fonte: Elaborada pelo autor.
Na última etapa acontece a defuzzificação, aonde é calculado um valor
numérico escalar com referência aos valores qualitativos resultantes da máquina de
inferência. Continuando o exemplo do controle da sala com o ar condicionado,
aonde depois do processamento do conhecimento, pode-se notar a pertinência de
aproximadamente no conjunto do frio na partição do ar condicionado. A partir
dessa pertinência nota-se na figura 7 aonde há uma área preenchida para o
conjunto frio. O resultado da defuzzificação é calculado por intermédio de métodos
referentes à área de pertinências dos conjuntos ativados na inferência. O método
comumente utilizado é o de centro das massas, aonde o resultado será o valor da
abscissa do ponto central de massa correspondente a um dado conjunto. Na figura 7
o resultado do centro de massas é representado pela linha, o que decide aonde a
posição do termostato do ar condicionado deverá estar (REZENDE, 2003).
2.5.2 jFuzzyLogic: Biblioteca Fuzzy para Ambiente Java
Cingolani e Jesus (2012) desenvolveram a biblioteca jFuzzyLogic, que
implementa as especificações do padrão para a Fuzzy Control Language (FLC),
publicadas pela International Electrotechnical Commission (IEC 61131-7).
O objetivo da jFuzzyLogic segundo Cingolani e Jesus (2012), é levar os
benefícios das padronizações e código livre para a comunidade usuária de sistemas
19
fuzzy. Ainda ressaltam as vantagens da biblioteca como: interface de programação
extensível orientada a objetos, padronizada aplicando toda a IEC 61131-7, e
portável por ser baseada em ambiente Java.
2.6 Robótica
2.6.1 Introdução
Segundo Russell e Norving (2004) robôs são agentes físicos que
possuam a habilidade de executar tarefas pela manipulação do ambiente físico ao
seu redor. Para a percepção e manipulação do ambiente esses agentes contam com
sensores e efetuadores. Rich e Knight (1994) mencionam que é importante
diferenciar entre agentes virtuais, programas de IA, e robôs, agentes físicos.
Agentes virtuais operam em ambientes, mundos, simulados enquanto agentes
físicos precisam obter a percepção de um ambiente real, com incertezas reais, esses
ainda devem tomar decisões em tempo real, e trabalhar com planos incertos e
percepções incompletas do ambiente. A importância de se conhecer os processos
do mundo real, ao que se refere o contexto do ambiente onde o agente físico estará
trabalhando, é fundamental no projeto de um robô autônomo.
2.6.2 Classificação
Na robótica atual grande parte dos robôs está classificada em três
categorias principais. Manipuladores, onde se encontram os agentes fixos, não
possuem a habilidade de deslocamento pelo ambiente, braços robôs, garras,
ferramentas articuladas e etc. Estes são o tipo comum de robôs industriais.
Robôs móveis são os agentes físicos que se deslocam pelo ambiente
utilizando-se de efetuadores como rodas, pernas ou qualquer mecanismo que possa
transmitir ou transformar forças e movimentos para sua locomoção. Entre os robôs
dessa classe estão os veículos terrestres não tripulados, que realizam navegação
autônoma sem condutor.
20
A última classe os robôs híbridos são os agentes que possuem
características tanto de móveis quanto de manipuladores. Nessa classe o agente
pode se locomover pelo ambiente e interagir com objetos desse com o uso de seus
manipuladores, um robô humanoide tem pernas, efetuadores para mobilidade, e
braços, manipuladores, e se enquadra nessa classe (RUSSELL e NORVING 2004).
2.6.3 Sensores
A percepção do ambiente, ou mundo, do qual o agente físico está incluído
depende de sensores. Os sensores funcionam como observadores e transmitem ao
robô informações, sinais gerados do ambiente. Em robôs móveis é recorrente o uso
de sensores ativos como telêmetros, esse tipo de sensor mede a distância entre
objetos próximos. Um exemplo é o sonar que envia energia ao ambiente, ondas
sonoras direcionais, e espera que essa energia seja refletida quando um objeto
estiver próximo. Assim com cálculos sobre a intensidade de sinal refletido e tempo,
pode-se saber a distância do agente até um objeto (RUSSELL e NORVING 2004).
Segundo Rich e Knight (1994) nos seres humanos as capacidades
sensoriais que são encarregadas da maior agregação de conhecimento, aonde se
baseiam nosso comportamento e solução e problemas, são a visão e a linguagem
oral. A visão de máquina possibilita séries de aplicações em computadores, aonde
imagens são processadas para reconhecimento de padrões, objetos e navegação
em agentes físicos móveis. E a linguagem oral e falada possibilita a forma natural de
interação entre os agentes físicos e o homem.
Segue uma lista de sensores utilizados para interfaces perceptivas em
robótica segundo Russell e Norving (2004):
Telêmetros para calculo de distância entre objetos e obstáculos. Exemplo:
sonar;
Sensores táteis para reconhecimento de batidas e limites de ambientes.
Exemplo: painéis de choque e peles sensíveis ao toque;
GPS para posicionamento absoluto do agente;
Sensores de tratamentos de imagens para reconhecimento de padrões,
objetos e ambientes utilizando visão computacional. Exemplo: câmeras;
21
Sensores proprioceptivos informam ao agente dados sobre o próprio
agente. Exemplo: decodificadores de eixos para odometria;
Sensores inerciais para informações sobre forças externas. Exemplo:
giroscópio.
2.6.4 Efetuadores
Para que agentes físicos possam se locomover ou mudar a forma de seus
corpos, este precisa de meios que efetuem essas mudanças. Mecanismos populares
para a mudança de estado, tanto de manipuladores quanto para locomoção, de
robôs móveis são os motores elétricos. Outros efetuadores ainda são utilizados
como atuação pneumática, por gás comprimido, e atuação hidráulica que utiliza
fluidos pressurizados (RUSSELL e NORVING 2004).
Russell e Norving (2004) ainda chamam a atenção para a estrutura
corporal e a comunicação digital do agente físico, como efetuadores, que unidos aos
sensores e outros efetuadores formam a totalidade de um robô.
2.6.5 Percepção
Os resultados do sensoriamento do ambiente geram informações que
devem posteriormente ser processadas e interpretadas pelo agente. A percepção é
uma tarefa difícil, pois em alguns casos a incerteza agrega informações incompletas
do ambiente, parcialmente observável, ruído dos sensores e sinais parecidos para
diferentes estados. Para uma tomada de decisão correta por parte do agente físico
as representações do ambiente e bases de conhecimentos devem ter informações
suficientes para a decisão final, e devem estar estruturadas de forma que seja fácil a
atualização (RUSSELL e NORVING 2004).
2.6.6 Robôs Móveis: Principais Desafios
Segundo Sales, Osorio e Wolf (2011) robôs móveis executam três tarefas
principais: localização, mapeamento e navegação. São esses os principais desafios
do projeto de um agente dessa classe. A localização consiste na tarefa de estimar o
22
local aonde se encontra o robô, dentro de um ambiente conhecido, utilizando as
leituras dos sensores. O mapeamento se encarrega da representação do ambiente
baseado nos sensores e a localização do robô. A navegação une dados dos
sensores, mapeamento e localização para tomada de decisão sobre movimentação
segura do robô no ambiente.
Para a implementação de um robô móvel com a habilidade de navegar no
ambiente autonomamente, seja esse ambiente variável com salas, paredes, mesas
e prateleiras, o robô necessita saber sua localização aproximada, o mapa do
ambiente, caminhos e rotas, origem e destino da movimentação (SALES, OSORIO e
WOLF 2011).
2.7 Sistemas de Localização
2.7.1 GPS (Global Positioning System)
Segundo Fagundes (2008) o sistema de localização para ambiente aberto
largamente empregado, e que se transforma em sinônimo de localização em
sistemas computacionais, é o GPS (Global Positioning System). Criado em 1970
pelo Departamento de Defesa Norte-Americano o GPS, nos dias atuais, é uma
ferramenta usual e de grande valor na sociedade moderna. Utilizando-se de 24
satélites na orbita da terra que emitem rádio frequências codificadas, aparelhos com
a tecnologia de recepção destas, e com acesso a pelo menos três satélites, podem
calcular, através de técnicas de trilateração, a localização absoluta do dispositivo
com alto nível de precisão (BORENSTEIN et al, 1997).
Gothard (apud, BORENSTEIN et al, 1997) relata que com o temor de que
mal intencionados pudessem se utilizar da tecnologia do GPS para fins de
bombardeios e ataques militares, o governo dos Estados Unidos resolveu aplicar um
erro no sinal que diminuísse a precisão da localização para 100 metros, esse
dispositivo é conhecido como SA (Selective Availability). Gothard (apud,
BORENSTEIN et al, 1997) realizou testes de precisão do GPS quando o SA fora
desligado durante um período de testes da forças áreas americanas, os resultados
demonstraram que a precisão do GPS teria um erro de 4 a 60 metros. Em 2000 o
governo dos Estados Unidos descontinuou o uso do Selective Availability tornando o
GPS mais preciso para uso civil e comercial (OFFICIAL U.S., 2014).
23
Fagundes (2008) aponta ainda a dificuldade do funcionamento satisfatório
dos sistemas GPS em ambientes fechados, onde o erro é atenuado por
interferências e refrações do sinal dos satélites nas construções.
2.7.2 Odometria
A odometria é uma das técnicas mais utilizadas para localização e
navegação de robôs móveis. A técnica conta as revoluções das rodas do robô,
assim utilizando equações simples pode-se obter o deslocamento linear do robô no
espaço (BORENSTEIN et al, 1997).
A principal desvantagem da odometria é o acumulo de erros durante a
trajetória percorrida, sendo o desafio da utilização da técnica o emprego de cálculos,
ou outros métodos, para correção dos erros. As causas dos erros estão estritamente
ligadas às revoluções das rodas e são classificados em dois tipos: erros sistemáticos
e erros não sistemáticos. Erros sistemáticos são aqueles que têm sua causa
principal em imperfeições no sistema, o sistema se refere ao equipamento físico do
robô, por exemplo, rodas com diâmetros diferentes e incertezas sobre os valores
reais de distância entre eixos. Erros não sistemáticos são aqueles causados pelo
ambiente em que o robô está se locomovendo, imperfeições no solo e perda de
atrito resultam em calculo de revoluções que não obtiveram resultados na
locomoção, levando ao erro na trajetória real (BORENSTEIN et al, 1997).
2.7.3 Posicionamento Wi-Fi
Redes sem fio Wireless Fidelity foram lançadas em 1999 em conjunto
com a especificação 802.11 pela IEEE (Institute of Electrical and Electronic
Engineers). Hoje essa especificação e seus complementos são conhecidos pelo
termo Wi-Fi (CARVALHO 2007).
Ambientes com instalações de pontos de acesso a redes sem fio tornam-
se cada vez mais normais nos dias atuais, estas redes sem fio possibilitam a
dispositivos móveis acesso a internet e serviços de redes de computadores. A
massiva instalação dessas redes sem fio possibilitam também outras aplicações
como técnicas de localização dos dispositivos que as usam (CARVALHO 2007).
24
O modo mais utilizado para localização em redes Wi-Fi é o método de
Fingerprint, que consiste em duas etapas: treinamento e localização. Na etapa de
treinamento são armazenadas as diferentes potências de sinais de cada ponto de
acesso em diferentes localizações, através de leituras das potencias por um
dispositivo móvel. O resultado desse treinamento será a impressão digital, ou as
características, dos locais treinados referentes às potencias dos pontos de acesso.
Após a etapa de treinamento o dispositivo móvel realiza leituras das potencias e
estas podem ser comparadas com as armazenadas, determinando a localização do
dispositivo através de técnicas determinísticas ou probabilísticas. As técnicas
determinísticas tratam os pontos de acesso Wi-Fi como pontos conhecidos no
espaço e então os valores lidos são aplicados em regras de triangulação e
trilateração, calculando a aproximação da localização do dispositivo. As técnicas
probabilísticas são genéricas, e encontram a posição mais provável para a
localização do dispositivo em relação às leituras das potencias com as obtidas na
fase de treinamento. Técnicas probabilísticas são mais utilizadas por obterem
melhores resultados em ambientes variados e com pouco conhecimento sobre os
pontos com métricas reais (CARVALHO 2007).
2.7.3.1 Posicionamento Wi-Fi Utilizando Controles Fuzzy
Alonso et al. (2009) descreve a utilização do Fingerprinting Wi-Fi obtendo
as aproximações das posições por controles fuzzy. A etapa de treinamento segue o
mesmo princípio descrito no tópico anterior.
Após a obtenção dos dados das variações de sinais para cada local ao
que se procura inferir a localização, Alonso et al. (2009) utiliza o sistema KBCT
(Knowledge Base Configuration Tool), para tratar estes dados. O KBCT objetiva a
construção de classificadores fuzzy, aplicando técnicas de aprendizado de máquina
na extração de conhecimento, lógico útil, de conjuntos de dados.
Através da ferramenta, o conjunto de dados referentes às variações dos
sinais é submetido a um algoritmo de árvore de decisão fuzzy, uma variação fuzzy
das árvores de decisão clássicas, que generaliza e gera as regras de produção para
a aproximação da posição com base em partições previamente definidas.
25
Os resultados do trabalho de Alonso et al. (2009) demonstram que a
utilização de controles fuzzy, com regras obtidas através de aprendizado de
máquina, possuem uma taxa de acertos maior que a dos métodos normalmente
utilizados. Ainda destacam que com o método aplicado não houve diferenças
consideráveis no desempenho da aproximação com diferentes quantidades de
amostras coletadas.
2.7.3.2 Posicionamento Wi-Fi Utilizando Redes Neurais
Battiti, Le e Villani (2002) descrevem a utilização do Fingerprinting Wi-Fi
obtendo as aproximações das posições através de redes neurais. No trabalho
desenvolvido utilizaram apenas três pontos de acesso para a amostragem das
variações de sinal em cada localização.
Após a obtenção das amostras estas foram classificadas, com suas
respectivas saídas desejadas, e submetidas para o treinamento com uma rede
neural de múltipla camada com a seguinte arquitetura: três neurônios de entrada,
uma para cada sinal de Wi-Fi, oito neurônios na camada escondida e duas na
camada de saída, paras as coordenadas x e y. O algoritmo de treinamento utilizado
foi a das secantes de um passo, com funções sigmoides de ativação do neurônio.
Battiti, Le e Villani (2002) concluem o trabalho demonstrando um erro de
aproximadamente 2.3 metros tanto para x quanto para y nas aproximações da
localização para cada local treinado. Ainda destacam que a abordagem empregada
com redes neurais, obteve melhores resultados que as comparadas na bibliografia
com outras metodologias.
2.8 Placa IOIO Android
O IOIO é uma plataforma de protótipos de código aberto, um tipo de
sistema digital de prototipação, que tem como objetivo facilitar a integração entre
software e hardware, Figura 3. A plataforma foi desenvolvida especialmente para
que dispositivos eletrônicos fossem construídos utilizando-os em conjunto com
celulares e tablets Android (MONK, 2012). A plataforma pode se conectar a
26
componentes eletrônicos de diversos tipos, como sensores para sentir o ambiente
ao seu redor, e ao mesmo tempo controlar luzes, motores e outros atuadores
(GÖBEL, Stephan et al, 2011).
Figura 8 – Placa de prototipação IOIO e suas pinagens.
Fonte: Amphan ChiangMai3.
O microprocessador do IOIO, um PIC (Programmable Interface
Controller), possui um software fixo, de fábrica, que retém a lógica necessária para
comunicação e execução de comandos genéricos. A facilidade de uso do IOIO está
diretamente ligada a está ideia, o dispositivo Android por meio de um aplicativo
escrito com uso da API Java fornecida para a placa, acessa diretamente por
comunicação ADB (Android Debug Bridge) ou TCP (Transmission Control Protocol)
virtual, utilizando USB ou Bluetooth, pinos de entrada e saída (GÖBEL, Stephan et
al, 2011).
3 Disponível em: <http://3.bp.blogspot.com/-jnaTUc7CD-U/T83-
PHH0M6I/AAAAAAAAArs/e2NBf3lrF8Y/s640/ioio+board.jpg> Acesso em 13 maio 2014.
27
3 Material e Métodos
3.1 Interface Robótica
Na construção da interface robótica foi utilizado o Kit Robô RC-FLS. Esse
kit contém dois servos motores de rotação continua, com respectivas rodas a serem
acopladas a eles, um chassi de metal para a base do robô móvel, e sensores de
linha. O kit Robô serviu como base para a interface e foi modificado com sensores
de ultrassom, para localização de obstáculos, rodas dianteiras para melhor
locomoção e um suporte de celular, utilizado em carros, acoplado em cima de uma
lixeira, simulando uma carapaça para esconder o sistema eletrônico do robô. Na
base do robô estará localizada a placa de prototipagem IOIO que realizará o controle
do mesmo.
Um celular modelo RAZR-i da Motorola, com sistema operacional Android,
foi colocado no suporte de celular e fara a comunicação entre o software, sistema
inteligente do robô, e o IOIO através de conexão Bluetooth.
Figura 9 – Kit Robô RC-FLS modificado.
Fonte: Elaborada pelo Autor.
28
3.2 Aplicativo Android Controlador da Interface Robótica
Para o controle do robô de forma autônoma foi desenvolvido um aplicativo
Android, projetado seguindo o diagrama de atividades da Figura 10. O aplicativo
processa paralelamente cinco atividades principais que serão descritas nesse tópico.
A atividade da interface do usuário, que será a partir daqui chamada pela
sigla AIU, é a atividade inicial do aplicativo. Essa atividade tem a responsabilidade
de: iniciar os componentes do avatar virtual do agente artificial de conversação
Safira, e inicializar mais três atividades para controle do robô. Ainda é responsável
por captar sinais das outras atividades que mudem o estado da interface de usuário.
A atividade que trata do sistema artificial de conversação, que inicializa o
sistema Safira, o serviço de reconhecimento de voz e síntese de voz, é inicializada
pela AIU. Para o funcionamento dessa atividade um fluxo de processos ocorre de
forma ordenada. Primeiramente o reconhecimento de voz é ativado, e fica ouvindo
por reconhecimentos de voz no microfone do dispositivo (1). Caso uma palavra ou
frase seja reconhecida, o sistema de reconhecimento de voz dispara um sinal, que a
atividade recebe e transmite o resultado para o processamento de linguagem natural
do sistema Safira (2). O resultado do processamento de (2) pode ser uma resposta
em forma escrita, oriunda da base de conhecimento, ou uma resposta em forma
escrita e uma ação a ser executada pelo robô (3). Caso a resposta seja em forma
escrita e uma ação o sistema Safira dispara um sinal (4). A resposta escrita é então
submetida à síntese de voz que quando completa a transformação do escrito para a
forma de áudio começa a transmitir o som no dispositivo, disparando um sinal
referente ao inicio da fala, e quando o som já foi todo transmitido dispara o sinal de
fim de fala (5). A AIU quando inicializa a atividade do sistema de conversação,
adiciona ouvintes para os sinais descritos em (5). Estes sinais são importantes para
as animações da boca do avatar virtual. A atividade segue os fluxos descritos acima
em repetição continua até que a aplicação seja encerrada.
A atividade de detecção movimento objetiva uma maior imersão do avatar
virtual sob o ambiente. Subtrações de imagens, capturadas pela câmera frontal do
dispositivo em tempo real, possibilitam a localização de movimento dentro dos
29
limites de visão da câmera do dispositivo. Caso ocorra movimento o sistema de
detecção de movimento dispara um sinal de detecção. A AIU contém ouvintes para
esse sinal, e quando captados mudam a localização dos olhos no avatar virtual,
como se o avatar estivesse acompanhando o movimento do ambiente. Essa
atividade continua seu fluxo em repetição até que a aplicação seja encerrada.
Para a conexão do dispositivo com a placa IOIO, a qual controla os
efetuadores e sensores, a interface de programação da placa necessita por padrão
estar em outra atividade. Essa atividade é inicializada pela AIU, mas fica hibernada
até que uma conexão seja efetuada com sucesso com a placa, através de
comunicação bluetooth. Após a conexão a atividade chama métodos de inicialização
dos pinos do circuito, nessa etapa é instanciado o objeto “Robot” que tem agregado
a ele os objetos “ServoMotor”, “UltrasonicSensor” e “Navigation” (1). Em seguida
inicia a repetição central do fluxo de rotinas a serem executadas pelo circuito (2). No
caso o método “run”, do objeto “Robot,” é chamado a cada iteração de (2), esse
método executa a tomada de decisão pela navegação fuzzy dependendo do
mapeamento, origem e destino requeridos de navegação, e localização do robô, que
será descrita com mais detalhes adiante. Essa atividade ainda adiciona um ouvinte
ao sinal disparado descrito em (4) do paragrafo anterior. Sendo esse sinal a forma
de entrada para troca de estados do robô, como entrada do destino pelo qual o robô
deve alcançar.
Por fim a atividade de localização é a última a ser inicializada, pelo objeto
de localização agregado ao objeto de mapeamento. Essa atividade tem a
responsabilidade de processar o escaneamento de potência dos rádios Wi-Fi e
estimar a localização do dispositivo, em repetição continua a cada 100
milissegundos. Essa atividade ao ser inicializada recebe um atributo do tipo de
algoritmo a ser utilizado para estimativa. Os algoritmos que podem ser utilizados
serão descritos no próximo tópico. Quando o algoritmo em uso termina o processo
de uma estimativa, a atividade dispara um sinal, que o objeto de localização capta e
por sua vez transmite a localização para o objeto de mapeamento, tornando a
localização atual do dispositivo, já mapeada, acessível ao objeto de navegação para
o processamento e inferência de tomada de decisão.
30
Figura 10 – Diagrama de atividades do aplicativo controlador do robô.
31
3.3 Sistema de Localização Wi-Fi
Para a localização do robô em ambiente real, foram utilizado valores de
potência de rádios Wi-Fi já instalados pra uso de estudantes nos blocos 20 e 21 do
campus da UNIFENAS Alfenas MG. Foi utilizado nesse trabalho o uso de
localização baseada em padrões de potências pelo método de Fingerprinting,
descrito no tópico 2.7.3.
Foram utilizados quatro rádios para o estudo dos padrões de potência em
certos pontos de referência, importantes para tomada de decisão de navegação do
robô. Os pontos de referência são portas de salas e bifurcações. As posições dos
elementos participantes da localização são mostradas na Figura 11.
Figura 11 – Ambiente de atuação do robô.
Fonte: Elaborada pelo Autor.
Após a escolha dos pontos de referência foi desenvolvido um pequeno
aplicativo Android para a fase de treinamento do Fingerprint. Utilizando a interfaces
340
70
160
250
32
de programação que tem acesso a todos os aspectos de gerenciamento de
conexões Wi-Fi do dispositivo Android como:
Listas de redes configuradas;
A rede Wi-Fi ativa do momento;
Resultados de escaneamento de rádios Wi-Fi próximos;
O aplicativo desenvolvido acessa os dados dos escaneamentos Wi-Fi, a cada 100
milissegundos, e registra em banco as informações descritas no diagrama de classe
abaixo:
Figura 12 – Diagrama da classe Sample.
Fonte: Elaborada pelo Autor
Para obtenção das potências dos rádios, registrados nos atributos AccesPoint
(Figura 12), a interface robótica foi colocada parada nos pontos de referência com o
aplicativo em execução. Foram obtidas 400 amostras de cada ponto cardeal, sul,
norte, leste e oeste, registrado no atributo Bussola (Figura 7), para cada ponto de
referência (Figura 6), registrado no atributo Lugar (Figura 7). Para estudo do
fenômeno da reflexão no sinal Wi-Fi, descrito por CARVALHO (2007), foram obtidas
amostragens no local sem nenhum movimento e com movimento de pessoas.
Na fase de localização do Fingerprint foram utilizadas quatro abordagens
para o estudo e testes da eficiência de cada um:
Distância Euclidiana;
33
Distância de Manhattan;
Controle Fuzzy;
Redes Neurais.
3.3.1 Fase de Localização Utilizando Distância Euclidiana
Com as amostras obtidas na fase de treinamento foram montados vetores
com os atributos registrados: , onde leia-
se AccesPoint. Para a localização é obtida uma amostra na atual posição do robô
durante seu funcionamento. Essa amostra é então transformada em um vetor:
. Pode-se notar que na posição do lugar no vetor
da amostra não é atribuído valor à posição do atributo Lugar.
O próximo passo é comparar o vetor atual lido com cada vetor dos de
treinamento armazenados em uma lista, aplicando o algoritmo da distância
Euclidiana, que segue a seguinte equação:
√∑
Equação 7.
Onde é a posição do atributo do vetor lido em funcionamento, e é a posição do
atributo do vetor de treinamento, o calculo ocorre para todos os atributos menos o
atributo Lugar , por isso a iteração vai até , que é apenas uma classificação do
lugar ao qual o vetor corresponde. O calculo da distância retorna o valor que na
primeira iteração, primeira comparação dos vetores de treinamento, é armazenada
conjuntamente com o índice da iteração, que corresponde à posição do vetor de
treinamento na lista. A partir da segunda iteração o valor armazenado só é
permutado quando o resultado da distância Euclidiana é menor que o armazenado,
e então se armazena também o índice da iteração onde foi feita a permuta. Em
outras palavras esse processo procurará o vetor de atributos mais próximo daquele
que foi lido pelo robô em funcionamento. Ao termino das comparações o índice
armazenado é a referencia para a posição do vetor mais próximo do lido na lista de
34
vetores de treinamento. Com acesso ao vetor mais próximo pode-se verificar o
atributo Lugar do mesmo e inferir a localização atual do robô no ambiente.
3.3.2 Fase de Localização Utilizando Distância de Manhattan
O método de Distância de Manhattan utiliza os mesmos passos descritos
no tópico 3.3.1. A única mudança ocorre na equação utilizada para comparação dos
atributos dos vetores. Segue abaixo a equação:
∑| |
Equação 8.
3.3.3 Fase de Localização Utilizando Controle Fuzzy
Para a construção do controle fuzzy para localização, foi utilizado o
Knowledge Base Configuration Tool (KBCT), descrito por Alonso et al. (2009). A
última atualização do sistema KBCT passou a ser chamada GUAJE (Generating
Understandable and Accurate Fuzzy Models in a Java Environment), e está sob
licença de código aberto.
As amostras da fase de treinamento foram colocadas em um arquivo
texto, aonde a primeira linha representava os nomes de cada variável, descritas na
Figura 12, separadas por vírgulas limitando assim as colunas. Os dados foram
colocados nas linhas seguintes, uma amostra por linha, separados por vírgulas,
cada uma na sua coluna respectiva a variável à qual pertence e foi descrita na
primeira linha. Os dados do atributo “Lugar” foram transformados em números
correspondentes aos lugares, para que a coluna fosse utilizada como saída
desejada. Esse é o formato de arquivo de entrada para conjuntos de dados no
sistema GUAJE.
Após a formatação o conjunto de dados foi submetido ao sistema GUAJE
aonde foram aplicadas as funções de indução de partições e regras de produção,
35
utilizando árvores de decisão fuzzy. As regras e partições geradas pelo GUAJE
foram convertidas para a Fuzzy Control Language assim possibilitando a submissão
destas para serem usadas no programa do robô, com a biblioteca jFuzzyLogic.
3.3.4 Fase de Localização Utilizando Redes Neurais
Na localização por intermédio de redes neurais utilizou-se uma rede do
tipo Feedforward com a seguinte arquitetura (Figura 13): cinco neurônios de entrada,
quatro para cada rádio Wi-Fi e uma para o ângulo da bússola, doze neurônios na
camada intermediária, e cinco saídas, uma para cada ponto de referência a ser
localizado (Figura 11). Foram utilizados neurônios de bias na camada de entrada e
intermediária. Todos os neurônios utilizam funções de ativação sigmoides.
Figura 13 – Arquitetura da rede neural.
Fonte: Elaborada pelo Autor.
Assim como realizada no controle fuzzy, as amostras foram tratadas em
um arquivo texto de formato compatível com a biblioteca de redes neurais para
ambiente Java, Encog, para treinamento da rede. Onde as amostras foram
distribuídas em linhas, uma amostra por linha no seguinte formato: os quatros
primeiros números são as potências dos rádios Wi-Fi, em seguida o ângulo da
bússola, essas são as entradas. As entradas foram normalizadas nos limites de zero
e um, utilizando o método do máx-min:
36
Equação 9.
Onde o valor normalizado é , e a entrada a ser normalizada. Por fim cinco
números que representam cada um uma localização desejada. A saída ativada com
o número um será a da localização a ser aprendida pela rede.
3.4 Navegação Fuzzy
Como descrito por Borenstein et al, (1997) imperfeições no solo ou perda
de atrito podem ocorrer durante o movimento do robô, e acarretar erros na
navegação. Ainda podem existir obstruções no caminho a ser percorrido, que
necessita de decisões de mudança de rota. A função de manter o robô na rota e
direção correta, além de tomar decisões acerca de obstáculos, durante sua
navegação entre um destino e origem, foi delegada a um controle fuzzy.
O controle fuzzy infere sob informações do ângulo do robô no momento
de inferência, uma taxa de positivos sobre a localização atual, origem, destino e
distância de objetos próximos, obstáculos, oriundos de quatro sensores de
ultrassom. As partições fuzzy para cada uma dessas entradas estão representadas
nas figuras: 14, 15, 16, 17 e 18.
O resultado da defuzzificação é aplicado nas partições “Motor Esquerdo”
e “Motor Direito” (Figura 19). Atuando na frenagem, velocidade e direção do robô
pelo valor de rotação do motor.
37
Figura 14 – Partição fuzzy ângulo.
Fonte: Elaborada pelo Autor.
Figura 15 – Partição fuzzy taxa de positivos.
Fonte: Elaborada pelo Autor.
38
Figura 17 – Partição fuzzy origem e destino.
Fonte: Elaborada pelo Autor.
Figura 18 – Partição fuzzy ultrassom.
Fonte: Elaborada pelo Autor.
39
Figura 19 – Partição fuzzy servo motor.
Fonte: Elaborada pelo Autor.
3.5 Mapeamento Utilizando Grafos
Para que o ambiente de atuação do robô fosse representado
computacionalmente, utilizou-se teoria dos grafos. Onde os pontos de referência são
os vértices, e os caminhos as arestas do grafo (Figura 11).
Quando o robô recebe o comando para que caminhe até um novo local, o
algoritmo de menor caminho de Dijkstra é executado levando em consideração a
posição atual do robô e o ponto de referência ao qual se deseja chegar. O resultado,
os vértices que o robô tem de passar pra chegar ao destino, é armazenado em uma
fila. A cada ponto de referência localizado com sucesso, retira-se o próximo vértice
da fila que será o destino do robô, até que chegue ao último vértice, o destino final.
3.6 Registro de Dados Usando Mapeamento Objeto-Relacional
Para persistência de dados da aplicação, como amostras colidas das
potências Wi-Fi e dados de “Caixa Preta” sobre os sensores e navegação do robô,
foi desenvolvida uma classe abstrata que implementa um mapeamento objeto-
40
relacional para Android 4 . Utilizando as interfaces de programação nativas para
persistência do Android, que utiliza o Sistema de Gerenciamento de Banco de
Dados (SGBD) SQLite versão 3.
O funcionamento do mapeamento segue o diagrama de classes da Figura
20.
Figura 20 – Diagrama de Classes do ORM.
Fonte: Elaborada pelo Autor.
Quando uma instância de classe filha de “MproEntity” chama o método herdado
“Save”, ocorre o mapeamento através de reflexão. Criam-se as instruções
necessárias para que a tabela com o nome da classe filha seja criada, usando os
campos públicos destas como colunas, caso ainda não tenha sido criada. Os
campos da instância são registrados em uma nova inserção seguindo as colunas
respectivas. Depois das instruções criadas estas são enviadas para a classe de
4 MproEntity para Android disponível em: https://github.com/Mpro3Developer/MproEntity
41
abstração dos mecanismos de persistência “LauDB”, que ira executa-las no SQLite.
O contrário ocorre quando se resgata os dados do banco para as instâncias.
Instruções de selecionamento são executadas por “LauDB” que envia os dados para
“MproEntity” que por sua vez designa estes aos campos da instância respectivos às
colunas da tabela. Uma instância resgatada quando invoca o método “Save” não
realiza uma inserção, mas sim a atualização desta instância, linha, no banco
possibilitado pelo código que a classe pai abstrai. O código é também importante
quando o método “Delete” é invocado, assim possibilitando a deleção da instância
correspondente do banco.
3.7 Sistema Artificial de Conversação
Para que o robô possa responder a tarefas passadas a ele através de
linguagem natural, foi utilizado o agente inteligente de interação com o usuário por
reconhecimento de voz, desenvolvido em trabalhos anteriores, Safira. Para
construção do conhecimento, foi utilizado o Sistema Gestor de Conhecimento para
Safira (SGCS) (CASTELLO, NASCIMENTO e CARVALHO, 2013). A interface de
programação para utilização desse sistema foi incrementado, para que pontes entre
o conhecimento e as resultantes ações do robô sejam efetuadas. Assim
possibilitando escrever funções de ativação para certas respostas oriundas do
sistema artificial de conversação.
As interfaces gráficas e interfaces de programação, para o agente de
conversação Safira, criadas por Castello, Nascimento e Carvalho (2013), baseadas
em tecnologias web, foram inseridas no aplicativo controlador através de um
componente que carrega um navegador de internet na atividade de interface gráfica
do usuário. Esse componente possibilita que métodos escritos em Java, no código
do aplicativo, possam ser invocados pelo código javascript rodando na página
carregada do navegador.
Para reconhecimento e síntese de voz foram usadas as interfaces de
programação disponíveis no Android. O serviço de reconhecimento de voz e síntese
de voz necessita de conexão com a internet.
42
4 Resultados
4.1 Sistema de Localização Wi-Fi
O resultado da fase de amostragem das potências para cada rádio Wi-Fi,
durante um domingo sem nenhum movimento no bloco 21 do câmpus UNIFENAS-
Alfenas, é mostrado no gráfico da Figura 21.
Figura 21 – Gráfico de amostragens Wi-Fi.
Fonte: Elaborada pelo Autor.
O gráfico da Figura 22 mostra o resultado das amostragens com movimento em uma
segunda feira durante dia de aula no bloco 22 do câmpus UNIFENAS-Alfenas.
43
Figura 22 – Gráfico de amostragens Wi-Fi.
Fonte: Elaborada pelo Autor.
4.1.1 Localização por Redes Neurais
O treinamento da rede neural com os algoritmos de aprendizado por
Backpropagation e Resilientpropagation, com condição de parada para erro igual a
0.01, obtiveram os seguintes resultados:
Tabela 1 – Resultados treinamento redes neurais para erro de 0.01.
Backpropagation Resilientpropagation
Erro: 0.00992188 0.00948174
Total de Iterações: 14113 908
Fonte: Elaborada pelo Autor.
44
Os gráficos das figuras 23 e 24 representam o decaimento do erro para o
treinamento, resultando nos dados apresentados na Tabela 1. Onde no eixo está o
valor do erro para a iteração do eixo .
Figura 23 – Decaimento do erro por Backpropagation.
Fonte: Elaborada pelo Autor.
Figura 24 – Decaimento do erro por Resilientpropagation.
Fonte: Elaborada pelo Autor.
45
Nas figuras 25 e 26 estão os gráficos de aproximação da rede neural em
comparação com as saídas desejadas do conjunto de treinamento, para os dois
algoritmos de aprendizado utilizados. As linhas descritas pela letra “E” são as saídas
desejadas, e as linhas descritas por “R” são as aproximações da rede neural.
Figura 25 – Aproximação por Backpropagation.
Fonte: Elaborada pelo Autor.
Figura 26 – Aproximação por Resilientpropagation.
Fonte: Elaborada pelo Autor.
46
Obteve-se ainda um treinamento para utilização com o aplicativo
procurando um maior decaimento do erro, utilizando Resilientpropagation. Onde se
alcançou o erro de em 22764 iterações. O gráfico da Figura 27 apresenta a
aproximação desse treinamento, seguindo a lógica das figuras 25 e 26.
Figura 27 – Aproximação por Resilientpropagation com menor erro.
Fonte: Elaborada pelo Autor.
4.1.2 Localização por Lógica Fuzzy
O método descrito no tópico 3.3.3 foi aplicado obtendo as partições fuzzy
(Figura 28, 29, 30, 31 e 32) para as entradas. E a partição da Figura 33 como saída
classificando o lugar de localização.
47
Figura 28 – Partição wifi1 gerada.
Fonte: Elaborada pelo Autor.
Figura 29 – Partição wifi2 gerada.
Fonte: Elaborada pelo Autor.
48
Figura 30 – Partição wifi3 gerada.
Fonte: Elaborada pelo Autor.
Figura 31 – Partição wifi4 gerada.
Fonte: Elaborada pelo Autor.
49
Figura 32 – Partição compass (Bússola) gerada.
Fonte: Elaborada pelo Autor.
Figura 33 – Partição place (Lugar) gerada.
Fonte: Elaborada pelo Autor.
50
Partindo das partições a ferramenta GUAJE (Generating Understandable
and Accurate Fuzzy Models in a Java Environment) ainda induziu 113 regras de
produção para as amostragens submetidas. Segundo a ferramenta o erro das regras
foi de 0.04. A Tabela 2 foi gerada pela ferramenta e mostra os resultados das
inferências, utilizando as regras induzidas, para amostras que foram observadas e
que contém a classe correta.
Tabela 2 – Inferência em relação ao observado para cada lugar.
Observado/Inferência 1 2 3 4 5
1 693 0 0 0 0
2 50 500 13 0 0
3 0 7 577 0 0
4 0 0 0 682 0
5 0 0 39 0 600
Fonte: Elaborada pelo Autor.
O gráfico da Figura 34 mostra a aproximação da localização utilizando as regras de
produção e partições geradas. As linhas descritas pela letra “E” são as saídas
desejadas, e as linhas descritas por “R” são as aproximações da inferência fuzzy.
Figura 34 – Partição place (Lugar) gerada.
Fonte: Elaborada pelo Autor.
51
4.2 Navegação
Os sistemas de navegação do robô foram testados e durante os testes
dados de “caixa preta” foram registrados. Dados sobre origem e destino, valores das
distâncias dos sensores de ultrassom e gasto de memória, como mostra o diagrama
de classe de “BlackBox” (Figura 20). Resultando nos gráficos apresentados nesse
tópico.
4.2.1 Navegação Fuzzy
O gráfico das figuras 34, 35 e 36 mostram o ângulo registrado pela
bússola do dispositivo em relação à distância obtida pelos sensores de ultrassom,
para uma navegação normal, sem obstáculos. Partindo do vértice 1, banheiro, até a
lanchonete vértice 5 (Figura 11), utilizando redes neurais para localização.
Figura 34 – Gráfico da bússola em relação com ultrassom esquerdo.
Fonte: Elaborada pelo Autor.
0
100
200
300
400
500
600
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
10
6
11
3
12
0
12
7
13
4
14
1
14
8
15
5
16
2
16
9
Bússola
UE
52
Figura 35 – Gráfico da bússola em relação com ultrassom direito.
Fonte: Elaborada pelo Autor.
Figura 36 – Gráfico da bússola em relação com ultrassom frontal.
Fonte: Elaborada pelo Autor.
0
100
200
300
400
500
600
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
10
6
11
3
12
0
12
7
13
4
14
1
14
8
15
5
16
2
16
9
Bússola
UD
0
100
200
300
400
500
600
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
10
6
11
3
12
0
12
7
13
4
14
1
14
8
15
5
16
2
16
9
Bússola
UF
53
O gráfico das figuras 37, 38 e 39 mostram o mesmo percurso percorrido das figuras
anteriores, mas com uma interação externa tirando o robô da rota prevista,
procurando testar o mecanismo fuzzy de retorno de rota correta.
Figura 37 – Gráfico da bússola em relação com ultrassom esquerdo com interação externa.
Fonte: Elaborada pelo Autor.
Figura 38 – Gráfico da bússola em relação com ultrassom direito com interação externa.
Fonte: Elaborada pelo Autor.
0
100
200
300
400
500
600
1
10
19
28
37
46
55
64
73
82
91
10
0
10
9
11
8
12
7
13
6
14
5
15
4
16
3
17
2
18
1
19
0
19
9
20
8
21
7
22
6
Bússola
UE
0
100
200
300
400
500
600
1
10
19
28
37
46
55
64
73
82
91
10
0
10
9
11
8
12
7
13
6
14
5
15
4
16
3
17
2
18
1
19
0
19
9
20
8
21
7
22
6
Bússola
UD
54
Figura 39 – Gráfico da bússola em relação com ultrassom frontal com interação externa.
Fonte: Elaborada pelo Autor.
Por fim foi feito um pequeno teste, partindo do vértice 1, banheiro até a
porta do Núcleo de Educação a Distância, vértice 2, testando a inferência para
condições de obstáculos (Figuras 40, 41 e 42).
Figura 40 – Gráfico da bússola em relação com ultrassom esquerdo com obstáculo.
Fonte: Elaborada pelo Autor.
0
100
200
300
400
500
6001
10
19
28
37
46
55
64
73
82
91
10
0
10
9
11
8
12
7
13
6
14
5
15
4
16
3
17
2
18
1
19
0
19
9
20
8
21
7
22
6
Bússola
UF
0
100
200
300
400
500
600
1 5 9
13
17
21
25
29
33
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
10
1
Bússola
UE
55
Figura 41 – Gráfico da bússola em relação com ultrassom direito com obstáculo.
Fonte: Elaborada pelo Autor.
Figura 42 – Gráfico da bússola em relação com ultrassom frontal com obstáculo.
Fonte: Elaborada pelo Autor.
4.3 Aplicativo Controlador
Os registros de “caixa preta” durante os testes obtiveram a quantidade de
memória gasta em bytes pelo aplicativo que é mostrado na Figura 43.
0
100
200
300
400
500
6001 5 9
13
17
21
25
29
33
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
10
1
Bússola
UD
0
100
200
300
400
500
600
1 5 9
13
17
21
25
29
33
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
10
1
Bússola
UF
56
Figura 43 – Gráfico do uso de memória pelo aplicativo controlador.
Fonte: Elaborada pelo Autor.
4.4 Sistema Artificial de Conversação
Para as entradas do robô através de linguagem natural foi desenvolvida a
seguinte árvore de conhecimento Figura 44:
Figura 44 – Trecho de árvore de conhecimento
Fonte: Elaborada pelo Autor.
0
5000000
10000000
15000000
20000000
25000000
300000001 9
17
25
33
41
49
57
65
73
81
89
97
10
5
11
3
12
1
12
9
13
7
14
5
15
3
16
1
16
9
17
7
Memória
Memória
57
Assim se o sistema artificial de conversação receber a entrada de reconhecimento
de voz “Vá para a lanchonete”, por exemplo, o motor de inferência chega à folha
com a resposta “Vamos lá”. Nessa folha foi adicionada uma ação, aonde é assinado
um nome de função que deverá ser executado no dispositivo Android Figura 45, que
por sua vez enviará comandos para a placa IOIO movimentando o robô até a
lanchonete.
Figura 45 – Função de ação assinada à folha da árvore.
Fonte: Elaborada pelo Autor.
58
5 DISCUSSÃO
O presente projeto teve o objetivo de projetar um robô capaz de se
locomover no ambiente de forma autônoma através de localização Wi-Fi e por
entradas através de linguagem natural. A localização, à qual dependem as etapas
de mapeamento e navegação, foi sem dúvida a tarefa mais desafiadora. Sem uma
localização razoavelmente precisa não há movimentação segura. Pode-se verificar,
concordando com a bibliografia utilizada como referência, que a utilização de leituras
de potências Wi-Fi para localização em ambientes fechados é uma abordagem
funcional, mas que sofrem de erros pelas características naturais de ondas
eletromagnéticas. Foi possível verificar a diferença de variação dos gráficos das
potências, para dias sem movimento e com movimentação normal, onde ocorre
refração e reflexão. A grande vantagem do método, para soluções de localização em
ambiente fechado, são os gastos com sensoriamento que podem ser reduzidos
drasticamente, pois geralmente, como relatado na bibliografia, escritórios,
faculdades e prédios comerciais já possuem uma arquitetura de rádios Wi-Fi
instaladas. No presente projeto não foi necessária nenhuma configuração ou
instalação de rádios, o ambiente foi percebido como ele já se encontrava.
Sobre as abordagens de estudo das assinaturas das potências Wi-Fi,
para locais específicos no ambiente, pode-se verificar que a utilização de técnicas
de aprendizado de máquina foram melhores que as abordagens comumente
utilizadas. No futuro do presente projeto espera-se testar as várias técnicas
propostas. Ate o momento à procura de assinaturas nas amostragens por redes
neurais se mostraram satisfatórias.
Abordando os resultados sobre o treinamento das redes neurais utilizadas
no aplicativo, o método do Resilientpropagation se mostrou realmente muito mais
rápido, como conclui a bibliografia. Sendo uma técnica de certa forma derivada da
do Backpropagation, pode-se chegar aos mesmos resultados, mas em número
reduzido de iterações, e tempo.
O controle fuzzy utilizado pelo robô se mostrou funcional dentro do seu
objetivo principal, manter o robô na rota do destino à origem, como mostras os
resultados. As Figuras 37, 38, e 39 mostram os resultados da navegação e
descrevem a navegação com erros na trajetória. Esses erros foram realizados
59
trocando deliberadamente o ângulo do robô em movimento, fora do seu caminho
normal, para verificar se este tornaria a voltar à rota correta. Retornando a Figura 11,
ondes estão os ângulos de referencia, pode-se observar pelos gráficos de
navegação que o robô fora colocado a direita da sua rota. A inferência fuzzy começa
a controlar a rotação das rodas, reduzindo a rotação da roda esquerda e
aumentando a da roda direita, para que haja movimento para a esquerda e o robô
retorne gradualmente ao ângulo de aproximadamente 340 graus, da rota normal
(Figura 37 5 ). Pode-se observar também que ocorreram duas trocas, pois são
notadas duas anomalias na trajetória, e sem que os sensores de ultrassom
acusassem obstáculos. Na Figura 40, observa-se que o sensor de ultrassom da
esquerda acusa um obstáculo. A inferência fuzzy então reduz a rotação da roda
direita e aumenta a da esquerda, movimento para a direita, tentando se esquivar do
obstáculo. Na Figura 41 ocorre o contrário, pois a partir da iteração 35, eixo x, o
ultrassom da direita detecta um obstáculo bem próximo, então a inferência fuzzy
reduz a rotação da roda esquerda e aumenta a da direita, movimento para a
esquerda. No teste descrito pela Figura 40 é notável que a navegação fuzzy, assim
que se vê livre do obstáculo retorna novamente para a rota correta.
A aplicação controladora mesmo com cinco atividades funcionando em
paralelo se mostrou fluida e com gasto de memória controlada (Figura 43). Não
chegando a utilizar todo o heap disponibilizado pela máquina virtual, de 30
megabytes, mantendo uma média de 20 megabytes durante sua execução.
Pretende-se no futuro realizar o mesmo estudo para o uso da CPU.
A utilização de bibliotecas com interfaces de programação para criação de
sistemas inteligentes, já testadas, consistentes, e fornecidas gratuitamente pela
comunidade científica, foram pontos cruciais da pesquisa. Pois de fronte aos
problemas pode-se rapidamente projetar e implementar a solução, sem a
necessidade de se preocupar em escrever e projetar a ferramenta.
5 O vídeo do teste onde os dados foram registrados pode ser conferido nesse link:
http://migre.me/kFiYZ
60
6 CONCLUSÃO
No presente projeto foi apresentado um robô com navegação autônoma
no ambiente. A utilização de localização através de potências de pontos de acesso
Wi-Fi se apresentou uma forma barata, para ambientes com redes Wi-Fi já
instaladas. Os resultados utilizando a fase de localização do Fingerprinting com
redes neurais se mostrou aceitável. Em trabalhos futuros podem-se realizar mais
testes e comparar as redes neurais com outras abordagens, como o controle Fuzzy
com regras induzidas por aprendizado de máquina, realizando testes de métricas no
ambiente.
A navegação fuzzy se mostrou capaz de controlar a navegação
objetivando manter o robô sempre na rota correta entre origem e destino, sendo os
erros de trajetória obstáculos ou rotação em falso.
Testes mostraram ser funcional a agregação do sistema artificial de
conversação em conjunto com sistemas de reconhecimento e síntese de voz, para
entradas de comandos para uma interface robótica. Em trabalhos futuros pode-se
testar a abordagem de entrada através de sistema artificial de conversação com
métodos convencionais,
61
REFERÊNCIAS
ALONSO, José M. et al. WiFi localization system using fuzzy rule-based classification. In: Computer Aided Systems Theory-EUROCAST 2009. Springer Berlin Heidelberg, 2009. p. 383-390.
ARAUJO, Jefferson Luiz da Silva; ALVES, João Antonio De Oliveira, Desenvolvimento Chatterbot em Cloud Computing. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) - Universidade José do Rosário Vellano, Alfenas - MG, 2011.
BATTITI, Roberto; LE, Nhat Thang; VILLANI, Alessandro. Location-aware computing: a neural network model for determining location in wireless LANs. University of Trento – Department of Information and Communication Technology, 2002.
BOREINSTEIN, J., EVERETT, HR., FENG L., e WEHE D.. Mobile Robot Positioning - Sensors and Techniques . Journal of Robotic Systems, Special Issue on Mobile Robots. Vol 14 No. 4, pp. 231 – 249. 1997.
BYRNE, RH., Global Positioning System Receiver Evaluation Results. Sandia Report SAND92-0457, Sandia National Laboratories, Alburquerque, NM, March 1993.
CARVALHO, Joel Filipe Machado. Localização de Dispositivos Móveis em Redes Wi-Fi. Departamento de Engenharias Universidade de Trás-os-Montes e Alto Douro Vila Real, 2007.
CASTELLO, Matheus de Barros; NASCIMENTO, Lorenzo Couto; CARVALHO, Marcos Alberto. Sistema Artificial de Conversação Utilizando Tecnologias de Reconhecimento e Síntese de Voz. 21º Simpósio Internacional de Iniciação Científica da USP - SIICUSP, 2013. Disponível em: <https://uspdigital.usp.br/siicusp/cdOnlineTrabalhoVisualizarResumo?numeroInscricaoTrabalho=3190&numeroEdicao=21>. Acesso em: 2 de maio de 2014.
CASTRO, Allan Jones B. de et al. Sintetizador Texto-Voz com Autômatos Adaptativos. Projeto de Formatura (PCS 2050) - Escola Politécnica, Universidade de São Paulo, São Paulo – SP, 2004. Disponível em: <http://www.coop4.eng.br/shibata/files/voicer.pdf>. Acesso em: 28 maio 2012.
62
CINGOLANI, Pablo, JESUS, Alcalá-Fdez. jFuzzyLogic: a robust and flexible Fuzzy-Logic inference system language implementation. Fuzzy Systems (FUZZ-IEEE), 2012 IEEE International Conference on. IEEE, 2012.
DAMASCENO, Eduardo Figueiras; PEREIRA, Tatiane Valau; BREGA, José Remo. Implementação de Serviços de Voz em Ambientes Virtuais. INFOCOMP Journal of Computer Science, Lavras, v.4 n.3, Article 09, September. 2005. Disponível em: <
http://www.dcc.ufla.br/infocomp/artigos/v4.3/art09.pdf>. Acesso em: 28 maio 2012.
ESPINDOLA, Duany Cesar Souza, Chatterbot: um sistema de inferência para agentes de conversação utilizando Lógica de Predicados. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) - Universidade José do Rosário Vellano, Alfenas - MG, 2005.
FAGUNDES, Leonardo Peres, Técnicas de Localização de Dispositivos Móveis em Redes Wifi – TDOA. Trabalho de Conclusão apresentado como requisito parcial para obtenção do grau de Especialista – UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL, Porto Alegre – RS, 2008.
GÖBEL, Stephan et al. Using the Android Platform to control Robots. Kassel University Germany. Disponível em: <http://vejdani7.persiangig.com/Android/robot.pdf/download>. Acesso em 12 maio 2014.
GOTHARD, B.M., ETERSKY, R.D., e EWING, R.E., Lessons Learned on a Low-Cost Global Navigation System for the Surrogate Semi-Autonomous Vehicle. SPIE Proceedings, Vol. 2058, Mobile Robots VIII, pp 258 – 269, 1993.
HEATON, Jeff. Introduction to neural networks with Java. Heaton Research, Inc.,
2008.
OFFICIAL U.S., Government information about the Global Positioning System (GPS) and related topics. Disponível em: <http://www.gps.gov/systems/gps/modernization/sa/>. Acesso em: 11 março 2014.
MONK, Simon. Making Android Accessories with IOIO. O'Reilly Media, Inc., 2012.
REZENDE, Solange O., Sistemas Inteligentes Fundamentos e Aplicações, Editora Manole Ltda, Barueri-SP, 2003
RIEDMILLER, Martin; BRAUN, Heinrich. A direct adaptive method for faster backpropagation learning: The RPROP algorithm. In: Neural Networks, 1993., IEEE International Conference on. IEEE, 1993. p. 586-591.
63
Rich, Elaine, Knight Kevin, Inteligência Artificial. 2 ed. Makron Books, São Paulo, 1994.
RUSSEL, S; NORVIG, P. Inteligência Artificial. 2 ed. Rio de Janeiro: Elsevier, 2004. SALES, Daniel Oliva, OSORIO, Fernando Santos e WOLF, Denis Fernando. Topological Autonomous Navigation for Mobile Robots in Indoor Environments using ANN and FSM. I Conferência Brasileira em Sistemas Embarcados Críticos. São Carlos-SP, 2011.
TEIXEIRA, Sérgio e MENEZES, Crediné Silva. 2003. Facilitando o uso de Ambientes Virtuais através de Agentes de Conversação. Artigo apresentado no XIV Simpósio Brasileiro de Informática na Educação - SBIE - NCE/UFRJ 2003.
WEIZENBAUM, J. ELIZA - A Computer Program For the Study of Natural Language Communication Between Man and Machine. Communications of the ACM Volume 9, Number 1 (January 1966).