ERIC - Industrial Robotics LAB
Transcrição
ERIC - Industrial Robotics LAB
ERIC Um robô que também joga XADREZ http://robotics.dem.uc.pt/eric/ A história do ERIC começou na necessidade de motivar alunos da Licenciatura em Engenharia Mecânica da Universidade de Coimbra, para estudarem e se interessarem pela informática, robótica e automação industriais. Às vezes recorre-se a uma actividade lúdica como desafio e motivação, mas quando se dá por isso a coisa tornouse mais séria. Foi o que aconteceu com o ERIC. Nasceu como uma ideia para um trabalho da disciplina de Seminário (5º ano da Licenciatura em Engenharia Mecânica, 2º Semestre, ramo de produção). O objectivo era simples: alunos sem grande experiência de programação, deveriam ser capazes de programar um robô (uma máquina a que se associa alguma complexidade) usando um ambiente de programação de fácil utilização e aprendizagem. Uma das operações mais simples da robótica industrial é a operação de “pick-and-place” usando uma garra como ferramenta. Ora o xadrez envolve muitas dessas operações na tarefa de mexer as peças. Existe para além disso a necessidade de manter registo da posição de todas as peças, bem como do movimento correcto de cada tipo de peça. É por isso um problema engraçado. Havia ainda outra exigência: o robô deveria usar qualquer tipo de tabuleiro e qualquer tipo de peça de xadrez (fosse ela de ferro ou do mais frágil vidro ou cristal). Isso implica, facilidade de parametrizar o jogo para diferentes tabuleiros, bem como regulação da força de aperto das peças pela garra. Finalmente, deveriam usar um robô industrial, isto é, uma máquina igual à que poderiam encontrar na sua vida profissional uns meses mais tarde quando terminassem a licenciatura. Acho que não nos podemos esquecer que formamos engenheiros que serão profissionais a breve prazo. O ERIC é um robô manipulador industrial (modelo ABB IRB1400) Foi escolhido um robô manipulador industrial de baixa capacidade de carga (5 kg), modelo ABB IRB 1400. Este é um robô vocacionado para aplicações de soldadura, aliás essa é a sua utilização actual no nosso laboratório (incluído num projecto de desenvolvimento de um sistema automático para aplicações de soldadura robotizada). Tem 6 eixos e configuração antropomórfica. Este robô possui um controlador evoluído, com ligação ethernet e servidores RPC para acesso remoto. A utilização dos serviços remotos permite explorar o robô a partir de um PC, bem como adicionar funcionalidades ao sistema. Para isso utiliza-se um livraria de funções que permitem aceder aos referidos serviços, e que é disponibilizada sob a forma de uma livraria C++, um objecto ActiveX ou uma Toolbox para Matlab. Todo esse software foi desenvolvido no nosso laboratório. Como plataforma de desenvolvimento foi escolhido o Matlab. É sem dúvida um excelente ambiente de trabalho, fácil de aprender, poderoso e aberto. Aliás, o único motivo para desenvolver a toolbox referida foi mesmo o de, reconhecendo essas capacidades, permitir o acesso fácil de alunos ao mundo da robótica industrial moderna ou, para ser mais completo, da automação industrial visto que a toolbox permite acesso a vários outros equipamentos industriais como: Autómatos programáveis (PLC), sensor de força inteligentes, câmara CCD, microcontroladores, etc. Esse trabalho foi recentemente publicado no número de Setembro de 2000 da IEEE Robotics and Automation Magazine. A versão Matlab do ERIC tem uma só limitação: não sabe jogar, só movimenta peças, pelo que precisa de dois jogadores. A versão C++ inclui um motor de xadrez e, portanto, sabe jogar xadrez a bom nível. Aproveitamos o motor de xadrez do jogo ARASAN 5.3, gentilmente cedido pelo autor Jon Dart. O importante aqui não é programar as regras de xadrez, muito menos algoritmos que permitam a análise e decisão da jogada a fazer. Por isso, integrar um motor de xadrez foi a opção mais correcta. Assim, a versão em C++ permite adicionar ao ERIC a capacidade de jogar xadrez, em que o jogo é feito num computador encarregando-se o ERIC de mexer as peças do tabuleiro real bem como efectuar as suas próprias jogadas. Aspecto da garra pneumática e regulador de pressão Como funciona o ERIC? A um robô industrial adicionou-se uma garra pneumática de dois dedos. Adicionou-se ainda um regulador de pressão electrónico que permite controlar a força de aperto dos dedos. O controlo da força é feito em anel aberto, existindo uma tabela que faz o mapeamento entre a pressão à entrada e a força de aperto. Foi obtida colocando um sensor de força entre os dedos da garra, variando depois a pressão à entrada. O regulador de pressão é proporcional em relação ao valor de uma entrada analógica (0-10v), em que o máximo e mínimo de pressão podem ser programados. Essa variável analógica é gerada no controlador do robô e controlada a partir do PC. O robô foi adicionado à rede do DEM, pelo que a comunicação com ele se faz por ethernet usando protocolo TCP/IP. Todas as funções elementares foram “ensinadas” ao robô para poderem ser pedidas remotamente usando chamadas RPC. O robô passou a ser assim um servidor ao qual podemos pedir tarefas de forma sequencial. Depois de aceitar uma, teria de a executar, devolver resultados e/ou dizer quando estava pronto para receber outro pedido. Assim, foi realizado um mecanismo de sinalização de eventos, que não é mais do que um servidor RPC instalado no PC que recebia as chamadas de sinalização feitas pelo robô. É por isso um mecanismo de chamada resposta baseado em RPC. Durante o tempo de execução, o relógio do jogo pára e não é possível efectuar jogadas. ERIC em versão MATLAB (versão 5.3) A versão em Matlab utiliza a referida toolbox e foi desenvolvido na disciplina de Seminário por João Vaz e Fernando Brandão. Este trabalho foi apresentado no Student Forum da Conferência Portuguesa de Controlo Automático - Controlo’2000 (da Associação Portuguesa de Controlo Automático), em Guimarães, tendo sido distinguido para apresentação oral. Basicamente, o programa passa ao robô informação sobre a peça a mexer (origem e destino), tipo de peça, força a usar, tipo de jogada (existem jogadas complicadas: rookies, troca de peça, promoções, etc.), bem como é capaz de repor o tabuleiro na sua situação original. Esta versão necessita de dois jogadores. ERIC em C++ (usando Arasan 5.3 compilado em Visual C++ 6.0) A versão em C++ incorpora a livraria de controlo do robô sob a forma de um controlo ActiveX e foi desenvolvido por J. Norberto Pires em torno do Arasan 5.3, cujo código fonte foi gentilmente cedido pelo autor. Sabe por isso jogar xadrez, possuindo ainda controlo de tempo de jogadas o que permite vários tipos de partidas. Para além disso, permite fazer um jogo de computador contra computador, o que aliado à capacidade de repor o tabuleiro permite sessões de DEMO interessantes, bem como replays de partidas de interesse. ERIC em pleno jogo. Com a versão em C++, o ERIC já jogou uma partida contra um campeão humano. Foi no dia 24 de Novembro, por altura do campeonato de xadrez organizado pelo NEEMAAC (Núcleo de Estudantes de Engenharia Mecânica da Associação Académica de Coimbra), em que defrontou Diogo Allho (ex-Campeão Júnior de Xadrez). O leitor interessado deve visitar o site do ERIC para mais detalhes e recortes de imprensa. Outros jogos se seguirão. Para além disso, estará em Leiria integrado no projecto Ciência - Viva “EXPERIMENTA”, na câmara municipal, para defrontar jovens do secundário e preparatório. O ERIC começou como uma simples ideia para um trabalho de Seminário, e transformou-se numa forma de “brincar” tecnologia, o que é sem duvida uma “brincadeira” muito séria. J. Norberto Pires [email protected] http://robotics.dem.uc.pt/norberto/ Laboratório de Controlo e Robótica Industrial Grupo de Controlo e Gestão Departamento de Engenharia Mecânica Universidade de Coimbra Links de interesse: Versão em Matlab do ERIC http://robotics.dem.uc.pt/seminarios/ Versão em C++ do ERIC (inclui videos) http://robotics.dem.uc.pt/eric/ com Laboratório de Controlo e Robótica Industrial http://robotics.dem.uc.pt/norberto/ Departamento de Engenharia Mecânica da U. Coimbra http://www.dem.uc.pt/ Centro de Engenharia Mecânica da Universidade de Coimbra http://www.dem.uc.pt/cemuc/ Toolbox em Matlab e referências bibliográficas http://robotics.dem.uc.pt/norberto/ Associação Portuguesa de Controlo Automático http://www.apca.pt/ Controlo’2000 http://www.dei.uminho.pt/controlo2000/ Revista “Robótica” http://robotics.dem.uc.pt/robotica/