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
71
Embed
ROBÔ MÓVEL AUTÔNOMO PARA NAVEGAÇÃO EM AMBIENTE … · 2018-11-08 · RESUMO CASTELLO, Matheus de Barros. Robô Móvel Autônomo para Navegação em Ambiente Fechado Utilizando
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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.
______________________________________________________ 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.
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.
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.
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).