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/