Departamento de Engenharia Elétrica
Controle Inteligente de Robôs Móveis Autônomos utilizando Sistemas
Inteligentes
Aluno: Gabriel Lins Tenório
Orientadoras: Roxana Jiménez e Marley Rebuzzi Vellasco
Introdução
A aplicação de robôs móveis autônomos, atualmente, têm se mostrado crescente nos
últimos anos, como por exemplo no caso das montagens automobilísticas, de exploração
espacial e de realização de atividades domésticas. Utilizando Sistemas Inteligentes, é possível
fornecer ao robô ferramentas computacionais que o permitem executar tarefas sem
intervenção humana, tornando-o um robô autônomo capaz de reproduzir certos aspectos
humanos como tomada de decisão e aprendizado. Através de sensores, o robô obtém
informações sobre o ambiente em que ele se desloca. No caso do controlador Fuzzy,
devidamente calibrado, este orienta o robô de forma com que ele desvie de obstáculos e
alcance seu alvo. Com uma câmera devidamente instalada na plataforma do robô e através de
uma programação de reconhecimento de padrões é possível identificar um objeto, e com o
modelo do braço e da garra robóticos, resgatá-lo.
Objetivos
Desenvolver e aprimorar os conhecimentos sobre robôs móveis autônomos baseados em
sistemas inteligentes, aplicando-os em ambientes reais utilizando o robô CoroBot da
CoroWare, Inc. Aplicação de diversos tipos de sensores e visão computacional. Utilização e
programação de um braço robótico para a captura de um objeto.
Características do robô CoroBot
Hardware
O CoroBot é um robô terrestre que pode ser aplicado em ambientes abertos ou
fechados. Possui um computador embarcado, isto é, possui processador, memória RAM e
Hard Drive. O robô pode funcionar através da alimentação feita por suas baterias
recarregáveis ou diretamente da energia elétrica por meio de cabos. O CoroBot também
possui adaptador Wi-Fi, o que torna possível o seu controle (remoto) por meio de outros
computadores.
O robô possui quatro rodas que são movimentadas por servo-motores (um motor para
cada roda) e também possui um manipulador robótico de 3 graus de liberdade com uma pinça
robótica capaz de perceber (pelo sensor de toque) e segurar objetos. Para sua navegação, o
robô utiliza uma webcam, um sensor LRF (Laser Range Finder) e sensores de contato
embarcados em sua plataforma.
Software
O computador presente no robô estudado utiliza o sistema operacional Windows XP,
que possui o programa MATLAB® 2011b instalado. Nesse programa, foram feitas todas as
programações de controle referentes aos sensores, ao processamento de imagens e aos
sistemas Fuzzy.
Departamento de Engenharia Elétrica
Metodologia
Implementação do Sensor Laser Range Finder (LRF)
Figura 1.1. Laser LRF
Figura 1.2. Laser LRF acoplado ao CoroBot
O Laser Range Finder emite ondas de luz que seguem em linha reta, são rebatidas nos
obstáculos, e retornam para o sensor que calcula a diferença de fase entre a onda emitida e a
recebida. Essa diferença de fase é proporcional ao tempo que a luz emitida leva para chegar
ao obstáculo e voltar, e esse tempo é proporcional à distância percorrida. O sensor possui um
espelho rotativo que repete esse processo a cada 0,35° até atingir o mapeamento completo
(240º).
Figura 2. Mapeamentos do LRF
Através do MATLAB®, o sensor LRF foi configurado de forma a fazer um
mapeamento bidimensional (com ângulo de varredura de 240º), e em seguida mapear apenas
os pontos de uma reta em três direções: perpendicular à parte frontal do robô, 45º à direita
dessa primeira reta e 45º à esquerda.
Departamento de Engenharia Elétrica
Implementação de Sistemas de Lógica Fuzzy (SLFs)
Figura 2.1. Sistema de Inferência Fuzzy
Figura 2.2. Função de Pertinência
(sensor central)
Figura 2.3. Função de Pertinência
(sensor esquerdo e direito)
Figura 2.4. Função de Pertinência (par de motores esquerdos e direitos)
Os sistemas de Lógica Fuzzy [1], diferentemente das lógicas convencionais,
possibilitam o uso de valores lógicos intermediários entre as definições de resultado como
"verdadeiro" ou "falso". Dessa forma, podemos trabalhar com incertezas e por fim tomar
decisões, reproduzindo o comportamento humano. Um sistema Fuzzy possui funções de
pertinência que representam o grau de compatibilidade dos elementos de seus conjuntos tendo
como funções as suas variáveis linguísticas. No caso estudado, temos como variáveis
linguísticas: os mapeamentos do sensor LRF (entradas do sistema ou antecedentes) e as
potências fornecidas pelos pares de motores (saídas do sistema ou consequentes).
Departamento de Engenharia Elétrica
Os conjuntos pertencentes às variáveis linguísticas das leituras dos sensores foram: MP
(muito perto), P (perto), L (longe) e ML (muito longe). Para as variáveis linguísticas das
potências nas rodas, os conjuntos foram: NG (negativo grande), NP (negativo pequeno), ZE
(zero ou neutro), PP (positivo pequeno) e PG (positivo grande).
Os valores precisos fornecidos pelo sensor do robô são enviados para os conjuntos
Fuzzy sendo transformados em sinais Fuzzy (realização da Fuzzificação). No sistema de
inferência Fuzzy, ocorre a ativação das regras estabelecidas, a combinação dos antecedentes,
os métodos de implicação e as composições de relações. Na Defuzzificação, é feito o processo
inverso, ou seja, a interpretação da informação é processada em valores precisos que
determinam as potências que serão fornecidas aos motores das rodas.
O controlador Fuzzy obteve êxito com apenas três funções de pertinência, triangulares e
trapezoidais, para os sensores (referentes ao mapeamento central, esquerdo e direito) e duas
para os motores (referentes à potência do par de motores das rodas dianteiras e traseiras). As
figuras 2.3 e 2.4 servem para visualizar tanto a função de pertinência relacionada a um lado
do robô como a relacionada ao outro lado devido à simetria com o eixo que passa no centro
do robô, sendo a única diferenciação na base de regras. Após uma série de observações sobre
o comportamento do modelo estabeleceu-se uma base de regras mais otimizada, eliminando
as regras que não seriam ativadas. Através desse método foram implementadas no total 50
regras. Para minimizar os eventuais erros, propagados devido às leituras dos sensores e aos
atrasos na comunicação do controlador (latência), foi utilizada a composição de relações
Fuzzy em máx-min, o operador de implicação em min, a combinação dos antecedentes
(conectivo and) em min, o conectivo or em máx e o método de Defuzzificação em centróide.
Programação do Processamento Digital de Imagens
Figura 3.1. Reconhecimento de padrões
Figura 3.2. Webcam acoplada ao robô
O processamento digital de imagens [2], feito com o auxílio da câmera embarcada e de
uma programação feita em MATLAB®, rastreia objetos de certos padrões de forma e cor. A
imagem capturada é dividida em pixels sendo representada por uma função bidimensional
f(x,y), como é mostrado na figura 3.1. Nessa função, x e y são as coordenadas dos pixels da
imagem (dependentes da escala a ser utilizada) e os valores dessa função representam a
intensidade da imagem local. Para simplificar o reconhecimento de padrões, um objeto
esférico de cor laranja foi utilizado permitindo a aplicação direta do modelo RGB (Red, Green
and Blue). O contorno do objeto esférico também simplificou sua identificação, pois um
Departamento de Engenharia Elétrica
objeto esférico possui o mesmo contorno circunferencial independentemente do ângulo de
captura da câmera. O processamento também apresentou ruídos na imagem (pixels fora de
ordem), o que afetou sua morfologia (estrutura geométrica das imagens), sendo necessária a
aplicação de operações de Abertura e Fechamento de Morfologia (utilizando o programa
CARTOMORPH feita em linguagem de programação C++), cuja importância é fundamental
na área de visão computacional. O processo de Abertura de Morfologia serviu para suavizar o
contorno da imagem e o processo de fechamento de Morfologia serviu para eliminar os vazios
que apareceram na imagem (pequenos orifícios).
A cada atualização dos sensores, é feito o teste de reconhecimento de cores através de
um método matemático (distância de Euclides), que mede o quão distante a cor obtida está da
desejada. Se esse teste for positivo, isto é, a distância de Euclides for menor que certo valor
(calculado experimentalmente) o robô se locomove no sentido horário ou anti-horário, de
forma a ajustar o contorno do objeto a determinadas coordenadas (x0,y0) e suas vizinhanças
de pixels relativas ao raio da esfera, ou seja, centralizar a esfera na matriz de captura de
imagem (como mostrado na figura 3.1). Quando a imagem é centralizada o Laser Range
Finder mede a distância do robô ao objeto, e um comando de movimento frontal é acionado
até que o robô mantenha uma distância mínima do alvo. Entretanto, esse comando é
interrompido caso o LRF encontre obstáculos no caminho, ou se os sensores de contato
(localizados na parte frontal da base do CoroBot) informarem sobre uma possível colisão.
Braço Robótico
Figura 4. Braço Robótico do CoroBot
Para o controle do braço robótico, acionado por servo-motores, foi utilizado um modelo
cinemático desenvolvido [3], que torna possível conhecer o valor dos ângulos de cada
articulação do braço (ombro e cotovelo) e a posição em que a garra se encontra em relação a
base do braço. A partir de relações trigonométricas entre as articulações citadas e a distância
mínima do robô ao alvo, foi feito o cálculo de quais seriam os ângulos desejados para que a
garra alcançasse o alvo. A garra robótica possui sensores de pressão entre as pinças que
simulam o tato e cujos valores de sensibilidade são adquiridos por uma equação linear de
voltagem (V=Valor_Sensor*0,06-30), permitindo detectar a presença do objeto e segurá-lo
com a pressão desejada.
Departamento de Engenharia Elétrica
Figura 5.1. Pinças da garra robótica detectando o objeto
Figura 5.2. Robô capturando o objeto
Resultados e Discussões
A Odometria nos permite estimar a posição do robô ao longo to tempo, tendo o raio da
roda, a velocidade angular e a velocidade tangencial das rodas como parâmetros. Para
eliminar a variável de tempo foram feitos gráficos da posição vertical x posição horizontal do
robô. Também foram desenhados em cada gráfico, através de plots sobrepostos, retângulos e
um círculo representando respectivamente os obstáculos e a esfera a ser capturada.
Figura 6.1. Teste de odometria 1
Figura 6.2. Teste de odometria 2
Departamento de Engenharia Elétrica
Figura 6.3. Teste de odometria 3
As figuras acima mostram as simulações bem sucedidas, em ambiente real, de três testes
que se diferem por uma pequena alteração nos obstáculos. Os obstáculos e a esfera não estão
em escalas reais, apenas presentes nos gráficos para facilitar o entendimento.
No teste de odometria 1, o robô segue sua trajetória linearmente até se deparar com um
objeto presente nas coordenadas (x=0.8, y=0.9), onde o sensor LRF detecta a proximidade
com o mesmo e corrige a trajetória. Em (x=1.8, y=0.4) o robô gira 180º no sentido horário,
detecta outro objeto e retorna a direção anterior. Na posição (x=1.9, y=0.9) o robô desvia do
objeto, fazendo uma curva para a direita se deparando com a parede. Esse processo se repete
até que o robô detecte a esfera, e quando isso ocorre, a programação feita no processamento
de imagens faz com que o robô alinhe o centro da esfera com o centro da câmera até que o
robô atinja o alvo, capturando-o.
No teste de odometria 2, em que um obstáculo é movido, o robô se aproxima deste
objeto e desvia para a esquerda, se deparando com a parede. No ponto (x=0.1, y=1) já é
possível observar que a câmera detecta a esfera, fazendo o robô seguir em direção ao alvo.
Mesmo havendo alguns ruídos no sinal, o robô alcança seu alvo.
Um objeto foi novamente movido no teste de odometria 3. Nesse caso, o robô seguiu até
o primeiro objeto sem detectá-lo, pois o objeto foi colocado em frente ao ponto cego do
sensor LRF (lembrando que não foi utilizado todo o mapeamento bidimensional do sensor).
No entanto, o sensor sensível ao toque (localizado na parte frontal do robô e próximo ao solo)
detectou uma colisão fazendo o robô dar marcha ré com trajetória curvilínea, até encontrar
uma posição segura. Após isso, o restante da lógica do percurso é análogo aos anteriores.
Ao mudar o tipo de comunicação do robô (sendo inicialmente feita por meio de uma
comunicação interna) para uma conexão sem fio (feita por uma comunicação externa, isto é,
outro computador) o resultado foi uma resposta insatisfatória do sistema, tornando necessário
reajustar as regras e as funções de pertinência do sistema Fuzzy. Em alguns casos, o robô não
reconheceu o objeto a ser capturado em certos pontos da trajetória, e, nesses casos, foi preciso
reiniciar os testes.
A garra robótica nem sempre capturava com precisão a esfera, pois não foi utilizado um
sistema de controle inteligente para a garra (apenas foram informados valores constantes dos
ângulos entre as articulações para a captura) o que gerou dependência da exatidão do sistema
Fuzzy e do processamento digital de imagem.
Departamento de Engenharia Elétrica
Conclusões
Através do estudo bibliográfico e o entendimento dos sistemas inteligentes, foi possível
fornecer ao robô ferramentas para o conhecimento do ambiente por meio de sensores,
locomoção por meio de atuadores e correção de trajetória (aprendizado) por meio dos
métodos e lógicas implementadas. O aprendizado sobre os sensores e o braço robótico
mencionados serão importantes para trabalhos futuros, uma vez eles são aplicados em ampla
escala na área de robótica.
Os testes simulados em computador e em ambientes reais mostram convergências e
algumas divergências, permitindo o maior entendimento dos limites concernentes à
programação, ao hardware e ao software e quais métodos se deve utilizar em cada situação de
forma a resolver o problema.
Por fim, a idéia de um robô que se move de forma autônoma procurando e resgatando
objetos sem interferência humana se apresenta como relevante, pois pode ser aplicada em
ambientes que representam risco ao ser humano, mas são seguros para as máquinas.
Referências
1 - Jerry M. Mendel, Fellow, IEEE. FUZZY LOGIC SYSTEMS FOR ENGINEERING: A
TUTORIAL 1995.
2 - GONZALEZ, R. C.; WOODS, R. E.; CESAR JÚNIOR, R. M.; COSTA, L. F.
Processamento de imagens digitais. São Paulo: E. Blucher, 2000.
3 - Adade Filho, A. Fundamentos de Robótica: Cinemática, Dinâmica e Controle de
Manipuladores Robóticos. ITA-CTA. São José dos Campos, 1992.
Download

Gabriel Lins Tenório - PUC-Rio