Você está na página 1de 4

Anais do XXVI Congresso da SBC 14 a 20 de julho de 2006

EnRI l III Encontro de Robótica Inteligente Campo Grande, MS

Itandroids-Lego: Contribuições tecnológicas


Eduardo Henrique Leitner, Rafael Daigo Hirama, Jackson Paul Matsuura

Instituto Tecnológico de Aeronáutica (ITA)


São José dos Campos – SP – Brasil
{leitner, rafaeldaigo}@redecasd.ita.br, Jackson@ita.br
Abstract. This article describes a few techniques used by Itandroids team in the
Lego category of the IV Competição IEEE Brasileira de Robôs. The algorithms
developed for this competition can be used in other situations. In the industry, for
example, a company that uses little robots to do a certain task and that now needs
a bigger robot to do another task, according to the situation, doesn’t need to
develop a bigger one and spend money with it, because it can reprogram the little
robots to do the new task cooperatively, rather than individually.
Resumo. Este artigo descreve algumas técnicas utilizadas pela equipe Itandroids
na categoria Lego da IV Competição IEEE Brasileira de Robôs. Os algoritmos
desenvolvidos para esta competição podem ser utilizados em outras situações. Na
indústria, por exemplo, uma empresa que utiliza pequenos robôs para executar
determinada tarefa, e agora precisa de um robô maior para executar uma outra
tarefa, de acordo com a situação, não precisa desenvolver um maior e gastar
dinheiro com isso, porque ela pode reprogramar os pequenos robôs para
executarem a nova tarefa cooperativamente, em vez de individualmente.

384
1. Sobre a competição e seus objetivos
A competição consiste em construir 2 robôs utilizando apenas peças de Lego que, atuando
juntos, recolham “lixo hospitalar” (bolinhas de ping-pong) de um recinto com uma bandeja
e o joguem na lixeira.
A arena está esquematizada na Figura 1. Cada robô deve permanecer apenas em um dos
lados da arena (não podem cruzar as faixas pretas). As faixas azuis servem para indicar o
lugar em que se encontra os lixos hospitalares, que estão bloqueados por pequenas
alavancas.
A missão compreende uma série de desafios como, por exemplo, como achar a posição
exata do lixo hospitalar, como abrir a alavanca e garantir que a bola de ping-pong caia
dentro da bandeja, como despejar o lixo na lixeira sem derrubar a bandeja e muitos outros.

O objetivo maior é incentivar o desenvolvimento de técnicas de comunicação e sincronia


entre 2 robôs, já que os robôs são pequenos e não conseguem segurar e manusear a bandeja
sozinhos.

Figura 1. Esquema da arena

2. A linguagem
Conforme sugestão apresentada no manual da categoria, não utilizamos o Robolab,
software distribuído pela Lego®, devido à dificuldade de estabelecer uma comunicação
eficiente entre os robôs com ele. Os programas foram escritos em NQC (Not Quite C), um
software livre desenvolvido especialmente para programar os blocos RCX da Lego
distribuído sob a Mozilla Public License.
Esse software disponibiliza algumas funções muito práticas, extremamente úteis quando se
quer uma comunicação rápida e concisa, como por exemplo:

385
- Message(): retorna a mensagem recebida mais recente
- ClearMessage(): apaga a mensagem armazenada (passa a ser 0)
- SendMessage(message): envia a mensagem message

3. A construção dos robôs

Devido à simetria das tarefas realizadas pelos dois robôs, montamos um robô o simétrico
do outro. Para garantir um movimento suave e estável dos robôs, optamos por montá-los
sobre 4 rodas, sendo a tração traseira. Como precisamos de 4 motores em cada um, tivemos
que utilizar 2 tijolos RCX em cada robô. As suas estruturas foram feitas de maneira a
permitir todos os movimentos necessários à realização da tarefa: movê-los para frente e
para trás, mover a bandeja para um lado e para o outro, levantar e abaixar os pegadores,
girar os sensores de toque e os sensores ópticos e girar a bandeja para despejar o lixo.

4. A comunicação
Para evitar falhas no envio de mensagens, os emissores e os receptores de infravermelho de
um robô foram colocados virados para os receptores e os emissores do outro robô, sem
nenhuma parte dos robôs bloqueando as ondas.
Um problema que encontramos por estarmos usando 2 tijolos RCX em cada robô é que a
mensagem enviada por um tijolo é recebida pelos outros 3, então cada um dos outros tijolos
têm que saber se a mensagem recebida é realmente para ele ou se é para outro. Para
solucionar isso, fizemos com que apenas um dos tijolos RCX de cada um dos robôs se
comunique via infravermelho. O outro tijolo, chamado de secundário, se comunica apenas
com o primário do mesmo robô através da porta de entrada e saída.
Para este projeto era muito importante a sincronia, então uma sub-rotina foi utilizada para
atualizar constantemente a defasagem gerada pela distância e o tempo de resposta. A
defasagem entre o envio da mensagem e a resposta do outro robô será calculada através de
um programa bastante simples.

5. A estratégia de controle
A coordenação entre os dois robôs será realizada com uma relação de mestre e escravo. É
mais adequado que o robô mestre esteja no lado no qual o próximo buraco de descarga está,

386
pois este terá de verificar a presença da fita azul que marca a posição do buraco. Assim,
optamos por um sistema de alternar sucessivamente o robô mestre.
Inicialmente, nenhum dos dois será definido como mestre. Então, ambos irão
verificar a posição da bandeja de coleta e o primeiro buraco de descarga. O robô mais
próximo desse buraco será definido como mestre.
Nesse sistema o robô mestre realiza várias vezes uma verificação da presença da fita
azul. Caso não seja detectada, o mestre envia a ordem de movimentação para o escravo e
ambos usam os já calculados delays para realizar o movimento com sincronia. A idéia é que
o movimento seja quantizado, pequeno o suficiente para não ultrapassar uma fita azul sem
percebê-la. Caso a fita seja detectada, será iniciado o processo de coleta (movimentação
lateral da bandeja e a liberação do lixo). Ao final, o mestre envia um comando de inversão
de papéis, o mestre se torna escravo e o escravo se torna mestre.
Neste processo, a comunicação precisa é de fundamental importância. Se alguma
mensagem não for adequadamente recebida, é possível que os robôs empurrem
assimetricamente a bandeja, desviando a rota, ou ambos os robôs se coloquem como
escravos (e conseqüentemente parando).

Referências:
[1] http://www.andrew.cmu.edu/user/rgockley/legos/index.html
[2] http://lug.fh-swf.de/lego/NQC-Guide.2.3r1.German.pdf

387

Você também pode gostar