RESGATE UTILIZANDO ROBÔ REAL Aluno: Gabriel Drummond de Mendonça Simonsen Orientador: Karla Tereza Figueiredo Leite Resumo O projeto é um estudo na área de robótica e consiste no controle de um robô Lego NXT utilizando o software LabVIEW, para atuar em uma atividade simulada de resgate. O robô deve ser capaz de se locomover em um ambiente com obstáculos desviando-se de acordo com regras pré-estabelecidas dentro de um sistema de Lógica Fuzzy e deve parar quando reconhecer a cor branca demarcada no sólo. Introdução Robótica é a ciência que estuda a automatização de processos repetitivos, substituindo o trabalho humano ou animal por sistemas eletromecânicos, contanto que de forma mais rápida, eficiente e barata. A automatização dos processos puramente operacionais e realocação de mão-de-obra humana em atividades gerenciais é uma tendência explícita desde o início da revolução industrial e foi no setor da indústria onde a robótica encontrou maior campo de atuação. Atualmente, a questão ambiental tem sido grande foco de estudos. O homem moderno convive com uma onda crescente de catástrofes e fenômenos naturais decorrentes da exploração indevida do meio-ambiente. Em meio a isso, cada vez mais comuns tem sido as atividades de resgate em ambientes nocivos ao homem. Neste sentido, o desenvolvimento e utilização de robôs para efetuar resgates se torna extremamente importante, pois estes são capazes de ocupar locais e realizar tarefas que o homem não consegue devido a limitações físicas. O objetivo desse projeto de iniciação científica é iniciar a compreensão de conceitos de robótica através de estudos e desenvolver uma rotina de controle inteligente para o robô (através da Lógica Fuzzy) navegar em ambiente desconhecido evitando obstáculos e buscando atingir um objetivo final - a fim de desempenhar uma atividade contextualizada nos tempos atuais. O relatório está estruturado da seguinte maneira: descrição do kit Lego Mindstorms NXT (hardware); descrição dos softwares utilizados no projeto; descrição da parte relativa ao controle do robô, abordando principalmente os conceitos de Lógica Fuzzy aplicados ao projeto. Kit Lego Mindstorms NXT - História: O kit Mindstorms foi idealizado por Seymour Papert, um dos fundadores do MIT e autor da obra Mindstorms: Children, Computers and Powerful Ideas, onde quis mostrar como computadores iriam auxiliar no desenvolvimento intelectual de crianças e jovens. Resultado de uma parceria entre o Media Lab do MIT e o LEGO Group, o LEGO Mindstorms é a linha que une as consagradas peças de montar da marca à tecnologia. Inicialmente com blocos de simples encaixe, o brinquedo evoluiu com o tempo passando pela linha Technic, cujos encaixes mais inteligentes permitiam movimentos de articulações, eixos
e engrenagens, posteriormente sendo associados a motores, para finalmente permitir a participação de sensores e microcontroladores. A primeira versão comercializada do Mindstorms é datada de 1998 sendo então denominada Robotics Invention Systems (RIS). Ela era comandada pelo brick RCX provido de um microcontrolador de 8 bits e 32k de memória RAM para armazenar o firmware e o programa do usuário. A programação aceitava diversas linguagens e era realizada por uma interface infravermelha entre o computador e o componente. O produto, que inicialmente era considerado apenas um brinquedo, passou a ser utilizado em escolas e universidades com fins didáticos, cumprindo a expectativa de seu idealizador. Seu potencial era grande e inovador. As questões de estruturação, mecânica e programação eram abordadas, de maneira simplificada, constituindo o raciocínio por trás da mecatrônica. Oito anos depois, a LEGO lançou em 2006 os kits LEGO Mindstorms NXT. Como era de se esperar, o kit evoluiu drasticamente em relação ao seu antecessor. O brick conta agora com dois microprocessadores, um principal de 32 bits (AT91SAM7S256), com 48MHz e 256k de memória flash e 64k de memória RAM, e outro secundário de 8 bits (ATmega48), 4MHz e 4k de memória flash e 512b de RAM, um adaptador Bluetooth interno de 26MHz e uma entrada USB 1.1 (12Mbit/s), ambos permitindo conexão sem fio ao computador para transmissão de programas ou controle remoto do dispositivo. Figura 1 - Kit LEGO Mindstorms Um fato importante desta nova versão é a disponibilização em código aberto do firmware, disponível no próprio site da LEGO, assim como kits desenvolvedores para hardware, software e interface Bluetooth. Com isso, as possibilidades aumentaram substancialmente, e consequentemente a utilização se expandiu ainda mais ao redor do mundo de tal forma que hoje existem fóruns online especializados em divulgação, debate e auxílio a novos projetos envolvendo o kit - contando com um oficial da LEGO. Existem também no mercado, livros abordando o assunto com guias de montagem e novas abordagens de programação.
- Sensores e servo-motores: Figura 2 - Componentes do kit O kit educacional conta com o brick (1), que tem entrada para três servo-motores e quatro sensores, os três servo-motores (6), um sensor de distância por ultrassom (5), um sensor de luz (4), um sonoro (3) e dois de toque (2). A LEGO também disponibiliza em um kit complementar, mais peças para montar a estrutura do robô, além de sensores de movimentos como o Gyro e o Compass, ambos percebendo rotação em torno de um eixo, onde o primeiro percebe a velocidade de rotação e o segundo apenas a direção da rotação, e um sensor acelerômetro, que percebe aceleração nos três eixos ortogonais. O sensor de som pode ser ajustado na escala decibel (db) para detectar todos os sons com a mesma sensibilidade, em uma abrangência que inclui sons que extrapolam a sensibilidade do ouvido humano tanto para mais quanto para menos, e também na escala decibel alocada (dba), este posicionando a largura de banda para padrões do ouvido humano. As leituras são feitas em percentagens (%), sendo os menores níveis percentuais correspondentes a ambientes silenciosos. O sensor de toque é capaz de perceber quando é pressionado por algum objeto, e também quando é liberado. O sensor de luz possibilita ao robô perceber ambientes claros e escuros com uma escala de 0 a 100. Com a possibilidade de medir a reflexão luminosa de uma superfície, e como cada cor reflete a luz de uma forma diferente, o NXT torna-se capaz de distinguir cores, principalmente cores com tonalidades de preto e branco, onde a primeira indica ausência de luz (medidas baixas do sensor) e a segunda presença de luz (medidas altas). O sensor ultra-sônico detecta a distância de obstáculos a até 255 centímetros com uma precisão de +/- 3 cm calculando o tempo de retorno de uma onda sonora refletida pelo objeto. Ele pode apresentar o resultado em centímetros ou em polegadas de acordo com a escolha do programador. Os servo-motores podem funcionar como entradas e/ou saídas de dados. Eles funcionam como um motor de passos, sendo possível controlar o quanto o motor deve girar, e com qual velocidade ele deve fazê-lo em uma escala de 0 a 100. Cada motor possui também um sensor de rotações embutido, que permite a leitura dos movimentos do motor, podendo esta ser
apresentada em graus, com precisão de +/- um grau e total para uma volta de 360 graus, ou em voltas completas, aplicada à medição de distâncias percorridas. - Estrutura utilizada: A estrutura adotada no projeto foi uma estrutura sugerida pela própria Lego denominada Tribot (foto abaixo), pois é como um triciclo composto por duas rodas ligadas a servomotores e uma roda em eixo livre. Figura 3 - Estrutura Tribot Essa arquitetura foi escolhida por ser de grande eficiência, pois com apenas dois servomotores é possível controlar a direção e o sentido do deslocamento, obtendo-se os movimentos desejados a partir da utilização de um mínimo de estrutura. A essa estrutura básica foram acoplados os sensores adequados para a proposta do projeto. O robô foi equipado com dois sensores ultrassônicos na sua parte superior, necessários para detectar os obstáculos próximos e a partir da leitura dos sensores tomar a decisão adequada seguindo o modelo de Lógica Fuzzy que será descrito em um momento posterior. Na parte dianteira inferior do robô foi inserido um sensor de luminosidade, necessário para perceber a marca branca no chão que simboliza onde o alvo de resgate está localizado. Softwares - LEGO Mindstorms Education s NXT Software: Figura 4 - Software original que acompanha o kit O kit acompanha um software original da LEGO. O programa possui uma linguagem de programação bem intuitiva, baseada em blocos que são arrastados para dentro de um diagrama. Como o kit é vendido também para crianças, este software foi pensado para que elas possam interagir de maneira simples com o robô. Por isso, o software original é limitado a funções básicas. Assim, ele não é capaz de executar as rotinas desejadas para o projeto e por isso foi descartado.
- National Instruments LabVIEW 8.2: Figura 5 - Logo do software LabVIEW O LabVIEW utiliza-se de um ambiente gráfico, baseado em ícones (blocos) de funções, variáveis, rotinas e muito mais [1,3]. O programa é hoje utilizado em larga escala pala indústria, por sua alta performance em aquisição, análise e manipulação de dados em todas as etapas do processo de produção. Sua interface é extremamente intuitiva e fácil de operar, o que possibilitou o grande sucesso do produto. Devido as limitações do software original do kit Mindstorms, a National Instruments desenvolveu um toolkit para LabVIEW das funções de controle do NXT, que pode ser baixado no site da empresa. Com este toolkit tornou-se possível realizar rotinas mais elaboradas para o kit, já que dispõe-se de todo o poder computacional do LabVIEW. Sua interface ágil e eficiente, seu grande horizonte de possibilidades e sua larga utilização no mercado foram os fatores que determinaram a utilização do software no projeto. Para a implementação e desenvolvimento do controlador Fuzzy, foi utilizado o MATLAB (descrito em seguida), fazendo uso de uma janela de interface entre este e o LabVIEW, o MATLAB Script Node. Tal escolha foi feita pois o MATLAB possui um ambiente próprio de fácil operação para desenvolvimento da Lógica Fuzzy. Figura 6 - MATLAB Script Node
- MATLAB: O MATLAB foi criado no final da década de 70 pelo então diretor do departamento de Ciência da Computação da Universidade do Novo México, Cleve Moler, com a finalidade de permitir que seus alunos utilizassem uma biblioteca de softwares matemáticos sem que estes possuíssem conhecimentos de Fortran, linguagem na qual as tais bibliotecas estava escritas. Pouco depois ele estava sendo utilizado por diversas universidades em especial pelo público da matemática aplicada. Em 1983, o engenheiro Jack Little teve contato com o software quando Moler fez uma visita à universidade de Stanford, e reconheceu o potencial comercial da ferramenta. Nasceu então, em 1984, a empresa MathWorks, que reprogramou o programa em C, e passou a desenvolvê-lo continuamente. Atualmente, a empresa conta com o programa, juntamente com o Simulink, seu Figura 7 - Logo do software MATLAB principal addon. A dupla MATLAB e Simulink são amplamente utilizados tanto para fins didáticos, em universidades, quanto para fins comerciais em empresas de pesquisa, de novas tecnologias e instituições financeiras. A utilização dos dois se extende a praticamente todos os ramos que envolvem análises matemáticas. No projeto foi feito o uso do MATLAB para construção do controlador Fuzzy que, aproveitando sua interface de comunicação com o LabVIEW, é executado no mesmo. No MATLAB, utilizou-se o Fuzzy Logic Toolbox [2] para desenvolvimento do controlador. Figura 8 - Interface do MATLAB para elaboração do sistema Fuzzy
Controle O controle do robô é dividido em duas partes. A primeira parte é relativa ao controle inteligente do robô para desvio dos obstáculos, que utilizará a técnica de Lógica Fuzzy [4,5,6,7]. A segunda parte é quando o robô encontra a marca branca no chão do ambiente. A lógica aplicada nesta segunda parte é bem simples: quando o sensor de luz do robô atinge um valor alto, estipulado como acima de 60 (valor aproximado que indica cor branca), os servomotores param, indicando que o robô chegou ao alvo. Vale lembrar que podemos comparar o projeto com uma situação de resgate no seguinte aspecto: para resgatar um alvo é preciso desviar dos obstáculos que o ambiente impõe (primeira parte), como rochas, destroços, etc, e é preciso chegar ao alvo correto (segunda parte). Para a primeira parte foi implementado um sistema de Lógica Fuzzy, que fará com que o robô julgue as condições ao seu redor ( de acordo com as leituras dos sensores) e tome decisões que resultarão em atuação dos servo-motores. A técnica de Lógica Fuzzy foi utilizada pois é mais abrangente e permite maior fluidez nas atuações dos servo-motores, já que o controle é constante e não booleano, evitando trancos no movimento do robô. No sistema Fuzzy, construído com uso do MATLAB, foram designadas 2 variáveis de entrada, SensorEsq e SensorDir, relativas aos valores lidos pelos sensores de ultrassom esquerdo e direito, respectivamente; e foram designadas 2 variáveis de saída, MEsq e MDir, referentes aos valores de potência que serão atribuídos aos servo-motores esquerdo e direito. Vale lembrar que as leituras dos sensores ultra-sônicos são limitadas na faixa entre 0 e 255 pelo próprio hardware e os servo-motores possuem potência na faixa entre -100 a 100, sendo os valores negativos relativos a movimentos para trás e os valores positivos relativos a movimentos para frente. Às variáveis de entrada foram atribuídas quatro conjuntos Fuzzy: MP (muito perto), P (perto), L (longe), ML (muito longe), mostrados a seguir. A forma dos conjuntos, que relaciona os valores lidos pelos sensores ultra-sônicos aos devidos graus de pertinência, foi ajustada a partir julgamentos subjetivos em relação a testes com os sensores. Já para as variáveis de saída foram atribuídos cinco conjuntos Fuzzy: NA (negativo alto), NM (negativo médio), Z (zero), PM (positivo médio), PA (positivo alto). Figura 9 - Conjuntos Fuzzy para as variáveis de entrada
Figura 10 - Conjuntos Fuzzy para as variáveis de saída As regras foram estabelecidas a partir do seguinte raciocínio lógico: se há um obstáculo à frente, o robô deve desviar para o lado onde o sensor identifica maior distância até ele. Foi preciso estabelecer uma decisão arbitrária caso as distâncias direita e esquerda até o obstáculo fossem iguais. Nesse caso, o robô deve desviar para a direita. Se o obstáculo estiver longe ou muito longe, o robô não precisa fazer esse desvio, podendo seguir em frente. A tabela de regras encontra-se a seguir: Figura 11 - Tabela de regras O método de inferência utilizado neste sistema foi o Max-Min, onde o operador mínimo é utilizado nas implicações das entradas para cada regra, e o operador máximo atua na pertinência resultante de cada regra. O método de defuzzificação escolhido foi o método do Centróide, onde o valor de saída final do sistema é dado pela posição do centróide da forma geométrica gerada nos conjuntos Fuzzy de saída a partir da inferência das entradas. Os experimentos com o robô foram realizados diversas vezes, em ambientes distintos (modificando a posição dos obstáculos e da marca no chão). O sistema Fuzzy era adaptado conforme os resultados, até que se chegou a um comportamento satisfatório. Segue o diagrama usado no LabVIEW.
Figura 12 - Diagrama de blocos criado através do LabVIEW Conclusões O projeto, além de introduzir o aluno em pesquisa, possibilitou uma proximidade com a prática, tão importante para a formação do engenheiro. O contato com os softwares LabVIEW e MATLAB foi extremamente produtivo, pois são ferramentas poderosas de uso comum para o engenheiro atual, que cada vez mais conta com o auxílio do computador nas tarefas diárias. Além disso, foram aprendidas noções básicas de robótica, ramo da Engenharia de Controle e Automação que inspira muitos alunos a seguirem o curso, principalmente em relação ao funcionamento e relevância dos sensores. Vale citar também a aplicação da Lógica Fuzzy, técnica inteligente de controle, que havia sido abordada na disciplina de Inteligência Computacional, porém de maneira mais teórica. De fato, o projeto acabou agregando valor também nesta área. Pode-se utilizar o sistema Fuzzy construído para este robô LEGO visando o desvio de obstáculos em qualquer ambiente fechado, que ele executará sua tarefa. Portanto, o projeto cumpriu seu objetivo principal, que é o de trazer acréscimo a graduação do aluno. Referências 1. http://www.ni.com/ 2. http://www.mathworks.com/products/fuzzylogic/description3.html 3. http://courses.washington.edu/engr100/section_wei/nxt/ni%20tutorial/ni_tutorial_u W.pdf 4. Textos de Lógica Fuzzy escritos pelo professor Ricardo Tanscheit, do curso de Inteligência Computacional Aplicada. 5. J. M. Mendel, Fuzzy Logic Systems for Engineering: a Tutorial, Proc. IEEE, V. 83, No. 3, pp. 345-377, 1995. 6. Earl Cox, The Fuzzy Systems Handbook: A Practitioner's Guide to Building, Using, andmaintaining Fuzzy Systems, AP Professional, 1994. 7. Witold Pedrycz & Fernando Gomide, An Introduction to Fuzzy Sets: Analysis and Design, MITPress, 1998.