You are on page 1of 13

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

INSTITUTO DE INFORMÁTICA




















INTRODUÇÃO AO LEGO RCX E AO PROGRAMA ROBOLAB


















Material desenvolvido por:
Cassiana Chassot Fülber
Tyron Wittée Neetzow Scholem





Porto Alegre
2008




2

Conteúdo
Introdução .................................................................................................................................................... 3
Introdução ao RCX ........................................................................................................................................ 4
Instalando o RoboLab e Preparando o RCX .................................................................................................... 5
Utilizando o RoboLab .................................................................................................................................... 6
1) Controlando Motores .......................................................................................................................... 11
a. Movimentos Básicos - Frente........................................................................................................... 11
b. Movimentos Básicos – Ré ................................................................................................................ 11
c. Controlando Força dos Motores ...................................................................................................... 12
d. Fazendo Curva ................................................................................................................................ 12
2) Sensores ............................................................................................................................................. 13
a. Sensor de Toque ............................................................................................................................. 13
b. Sensor de Luz .................................................................................................................................. 13
3) Loops .................................................................................................................................................. 13






3

INTRODUÇÃO
Essa apostila é direcionada para alunos que estão tendo seu primeiro contato com o robô RCX da linha
LEGO® MINDSTORMS™. Começaremos apresentando o RCX, bem como seus componentes. Em seguida, vamos
introduzir o software RoboLab 2.5.4, utilizado na programação do robô.
Esse guia é uma breve introdução, que habilitará o leitor a programar comandos básicos e testá-los no LEGO
RCX. Abordaremos apenas a parte de programação do software (item Programmer da tela inicial), apresentando a
estrutura Inventor. Este material complementa o guia de referência do RoboLab, sendo mais dinâmico e pragmático.
Auxiliaremos o leitor na instalação do software RoboLab e no preparo do seu RCX para conexão com o
computador. A montagem do bloco principal do robô deve ser feita de acordo com o manual do mesmo e não será
abordada aqui.




4

INTRODUÇÃO AO RCX
O Lego RCX é a primeira geração da linha Lego Mindstorms, desenvolvida pela Lego. É um bloco programável
que “traduz” um programa desenvolvido no software RoboLab, executando as funções desejadas. Seu público alvo
são estudantes, tanto de Ensino Médio quanto Fundamental.
A configuração básica do kit é composta por um bloco programável, uma torre de infravermelho, dois
sensores de toque, um sensor de luz, dois motores, um visor de LCD, três portas de conexão de sensores e três saídas
para motores ou lâmpada. Em seguida explicaremos cada um desses componentes. O download dos programas
escritos no RoboLab é feitos através da torre de infravermelho, que deve estar conectada ao computador.












O bloco programável é a parte principal do robô, pois é responsável pela “interpretação” do programa
escrito. A torre de infravermelho serve para transferir os programas do computador para o bloco programável. O
visor de LCD disponibiliza dados da bateria, status das entradas e saídas, qual programa está selecionado, entre
outras informações. As portas de conexão servem para conectar os dispositivos, como os sensores e os motores. Os
motores, por sua vez, fornecem energia para que o robô se movimente e realize demais funcionalidades.
Os sensores de toque indicam quando o robô encosta ou colide com algum objeto que esteja em seu
caminho. O sensor de luz identifica diferentes intensidades de reflexão de luz, podendo, inclusive, diferenciar cores
conforme a reflexão das mesmas. Assim, os sensores são uma ferramenta poderosa na elaboração de programas para
o Lego, pois permitem que o aluno explore o ambiente.
Além dos dispositivos que acompanham o Lego RCX, outros podem ser adquiridos e conectados ao bloco.
Exemplos destes são: sensor de temperatura, câmera de vídeo, sensor de som, medidor de pH, medidor de umidade
relativa, medidor de tensão, entre outros.

Sensor de Toque
Sensor de Luz
Sensor de Toque
Motores




5

INSTALANDO O ROBOLAB E PREPARANDO O RCX
1) Insira o CD-ROM do RoboLab no drive de CD de seu computador e inicie a instalação. Siga as instruções
de instalação do programa. Todo o processo deve levar cerca de 20 minutos. NÃO conecte a torre de infravermelho
ainda!
2) Enquanto espera que a instalação termine, insira seis pilhas AA no seu RCX. Remova a proteção cinza e
coloque-as observando os indicadores na parte de baixo do robô. Você pode usar pilhas recarregáveis.
3) Quando o software estiver instalado, você deverá desmarcar a opção “Launch RoboLab”, para que o
software ainda não inicie.
4) Agora você deve conectar a torre de infravermelho ao computador. Verifique se o RoboLab está
desativado antes de conectar a torre de infravermelho. O RoboLab NÃO irá reconhecer a torre se você conectá-la
enquanto o software estiver ligado. Se você possui uma porta USB infravermelho, simplesmente conecte-a na porta
USB.
5) Se você tem um infravermelho serial você deve inserir uma bateria de 9 volts antes de conectar com a
porta serial (porta COM).
NOTA: A comunicação infravermelha entre a torre de infravermelho e o RCX alcança até 10 metros de
distância. Entretanto, a comunicação pode ser interrompida se diversos RCX estiverem próximos à torre. Portanto, a
torre de infravermelho deve ficar sempre próxima ao RCX quando você estiver trabalhando com mais de um RCX na
mesma sala. Para a torre USB, ajuste as configurações no Painel de Controle do Windows. Clique no ícone Iniciar no
seu desktop, abra o Painel de Controle, selecione o ícone Lego USB Tower e selecione a Infrared Range para Short.

Para selecionar o curto alcance na torre de infravermelho mova a chave da torre para a esquerda.









6

UTILIZANDO O ROBOLAB
Antes de iniciarmos a construção de programas para o RCX, devemos montar o robô de teste e conectar os
motores às portas de entrada A, B e/ou C. Ao longo deste guia, iremos padronizar que as portas utilizadas serão a A e
a C para os motores da esquerda e da direita do robô, respectivamente.
Uma vez concluída a etapa de montagem do dispositivo, inicie o programa RoboLab, onde você encontrará
as opções Administrator, Programmer e Investigator. A primeira opção oferece ferramentas para configuração do
RCX, assim como para sua correta comunicação com o computador. A opção Investigator possibilita a construção de
sistemas mais complexos, utilizando os sensores supracitados para coleta de informações, plotagem de gráficos e
relatórios, entre outros.
Para as construções que iremos abordar, utilizaremos a função Programmer, que internamente está dividida
em Pilot e Inventor. O modo Pilot oferece uma interface mais amigável para usuários iniciantes, mas, devido sua
pouca flexibilidade de personalização, não será utilizado nos exemplos deste guia. Em contrapartida, incentivamos os
leitores a explorar as possibilidades oferecidas por este recurso, pois pode ser uma ótima ferramenta para o trabalho
com aluno do Ensino Fundamental.
A interface Inventor oferece mais recursos do que o modo Pilot, embora à primeira vista pareça mais
complexa, pois apresenta as ferramentas de forma mais estruturada e clara. Com essa interface, o usuário pode ver
seu programa de forma linear, todo em uma tela, diferentemente do que acontece no modo Pilot.
A seguir, utilizaremos algumas imagens demonstrar as funcionalidades mais básicas do programa. Nessa
etapa, apresentaremos apenas o modo Inventor, que será o utilizado durante o curso.
Na tela acima podemos visualizar a área de trabalho que é oferecida para a construção dos programas. Por
padrão, esta tela é dividida em duas janelas; como os programas são construídos na janela de baixo (Block Diagram),
podemos maximizar esta tela para aumentar a área visível. Dois símbolos padrões são automaticamente inseridos,
sendo eles:
Início do programa Final do programa
Tela principal do modo Inventor




7

Os símbolos no programa são inseridos, primeiramente, sem as ligações presentes nas imagens acima. Estes
“fios” são os conectores entre os símbolos, que permitem as interações das ações escolhidas.
Antes de continuarmos o estudo da tela principal deste modo, no intuito de facilitar a construção das
ligações entre os símbolos, devemos mudar uma configuração padrão do programa. Na parte superior da tela, há
uma janela (chamada Front Panel) na qual existe um menu Window. Clicando neste menu, selecione a opção Show
Tools Palette. Inicialmente, a ferramenta que abre apresenta a seguinte configuração:

O primeiro item dessa tela configura a “seleção automática de ferramenta”. Com este item ativado, o mouse
assume automaticamente a função de arrastar (para mover) os símbolos, quando sobre eles, ou a função de criar
novas ligações, quando posicionado sobre o respectivo local no símbolo. Se este item estiver desativado, o usuário
deve selecionar manualmente a ação do mouse através da “barra de espaço”, no teclado.

Nessa imagem observamos as funções principais do programa. Vamos apresentar os comandos principais, de
forma individual.
Primeiramente mostraremos comandos que seguem o mesmo padrão. Quando o símbolo aparece sozinho,
sem nenhuma letra, sua funcionalidade é aplicada sob uma entrada arbitrária. Para selecionarmos a porta,
Configuração após modificação

Configuração padrão




8

precisamos acrescentar um modificador (Modifier), sendo que a letra do modificador corresponde à porta a qual o
dispositivo está conectado. Outra forma semelhante aparece com a letra correspondente diretamente no símbolo.

Analogamente, definimos diversas funções:



Além dessas funcionalidades, temos também:









Com isso terminamos a parte superior desse menu. Agora vamos analisar a parte inferior. Vamos analisar
três desses símbolos, sendo que todos abrem submenus.
1) Tempo
2) Loop
3) Modificadores

Porta
Força
Acende bloco lâmpada conectado a uma entrada arbitrária.
Porta
Força
Aciona um motor arbitrário para trás.
Porta
Desativa uma entrada arbitrária.
Sem modificador, esse comando desativa todas as entradas
Desativa todas as entradas.
Porta
Inverte a direção do motor, considerando um motor ligado.
Toca som conforme o número digitado:
1) Pressionamento de tecla
2) Beep beep
3) Escala descendente
4) Escala ascendente
5) Buzz
6) Escala ascendente rápida
Número
Porta
Comando “float”: pára o motor de forma gradual. Deve ser usado
com modificadores.




9

1) Tempo










Vamos agora analisar o menu interno. As funções de tempo que contém algarismos no símbolo indicam que
o comando que os precedem serão executados por aquele tempo determinado.






O segundo bloco de funções corresponde a funções de sensores.










Ligada a um modificador indica tempo de execução de um
procedimento em segundos.
Executa as funções por um segundo.
Ligada a um modificador indica tempo de execução de um
procedimento em minutos.
Espera até que o sensor de luz identifique aumento da luminosidade.
Espera até que o sensor de luz identifique diminuição da luminosidade.
Espera até que o sensor de luz identifique presença de luz.
Espera até que o sensor de luz identifique ausência de luz.
Espera que, depois de pressionado, o sensor de toque seja liberado.
Espera que o sensor de toque seja pressionado.




10

2) Loop















3) Modificadores












Loop enquanto o sensor de toque seja pressionado
(esquerda) ou liberado (direita).
Loop enquanto o número de toques (esquerda) ou liberações
(direita) for menor que o valor indicado.
.
Loop enquanto o sensor de luz indicar intensidade luminosa menor (esquerda) ou
maior (direita) do que o indicado.
Início de loop.
Fim de loop.
Esses símbolos indicam os motores conectados a cada uma das portas de entrada do bloco
programável, respectivamente.
Usado para definir uma constante numérica.
Indicam os sensores conectados a cada uma das portas de entrada do bloco programável,
respectivamente.
Indicam a intensidade da força de motores programável, respectivamente.




11

1) Controlando Motores
a. Movimentos Básicos - Frente
Nas duas próximas seções mostraremos como movimentar o robô para frente e para trás. Iniciaremos este
estudo criando um novo projeto, no qual inseriremos os botões correspondentes às ações dos motores. O símbolo
que será utilizado é:

Utilizando as funções acima, iniciaremos o nosso primeiro projeto, que tem como objetivo movimentar o
robô para frente. Para isso, logo após o símbolo de Início colocaremos os símbolos correspondentes ao movimento
do motor A e C, orientados para frente. Logo após, o símbolo de Fim encerra o programa.


É importante observar que o programa acima pode ser escrito de outras maneiras, como as representadas
abaixo.
Particularmente, iremos explorar esta terceira maneira de representação, pois reúne em um mesmo símbolo
as funcionalidades similares. Desta forma, a escolha da força do motor, assim como a duração do movimento, pode
ser escolhida somente uma vez para todo o movimento, no lugar de uma vez para cada símbolo. Adiante,
exploraremos melhor este tipo de recurso.
b. Movimentos Básicos – Ré
Para um segundo exemplo, introduziremos o conceito de ré para o robô. Como o nosso movimento será
iniciado conforme exemplo anterior (para frente), devemos abordar também o sinal de freio para os motores. A
figura a seguir demonstra este projeto.
Portas
Força
Aciona um motor arbitrário para frente.
O programa liga os motores A e C na força padrão (5) e encerra a sua execução.




12



c. Controlando Força dos Motores
O recurso de alterar a força do movimento dos motores é fundamental para a realização de tarefas mais
complexas. Além de controlar a velocidade com que o robô se movimenta, no caso da utilização de rodas, pode ser o
controle da força com que o RCX segura um objeto, caso o motor esteja ligado a garras. Também permite o
movimento em curvas, como será tratado na seção seguinte.
Modificaremos o exemplo anterior para fazer o robô andar mais rapidamente para frente do que para trás.
d. Fazendo Curva
Há diversas maneiras de se configurar uma curva, dependendo da intensidade com que se quer que o robô a
realize. As três principais formas são:
1) Manter ambos os motores com movimento para frente, mas um deles com força maior do que o
outro. Dessa forma, o robô vai, gradativamente, fazer a curva para o lado do motor que possui
menor força;
2) Manter um motor ligado para frente enquanto freia o outro. Realizando este procedimento, o robô
irá virar para o lado que possui o motor parado, percorrendo uma distância muito menor do que na
forma anterior;
3) Manter um motor para frente e colocar o outro motor com movimento para trás. Caso esta ação
seja realizada com motores na mesma intensidade, deve resultar em um giro de 90° para o lado
com o motor reverso. Assim, é possível fazer curvas rápidas, sem um deslocamento significativo
para frente.
Para fixar o aprendizado relativo a motores, propomos como atividade fazer o robô andar em um quadrado.
Delimite um quadrado no chão da sala e teste se o seu robô consegue andar sobre ele.
O programa liga os motores A e C na força padrão, pára o movimento e
já inicia o movimento reverso, encerrando a execução logo após.
O programa liga os motores A e C na força 4, pára o movimento e já inicia o
movimento reverso, na força 1, encerrando a execução logo após.




13

2) Sensores
Conforme já mencionamos, o conjunto Lego RCX inclui dois sensores de toque e um sensor de luz. O sensor
de luz avalia a intensidade de luz local, ou seja, a quantidade de luz refletida pelo material próximo ao sensor. Já o
sensor de toque identifica quando o robô colide com objetos. Desse modo, os sensores podem ser usados no
controle de laços, ou seja, podemos definir uma rotina de comandos e ordenar que o robô execute essa rotina até
que perceba uma mudança no ambiente. Isso significa que o robô deverá executar uma série de comandos até que a
condição de um dos sensores (ou de ambos) seja alterada. Não necessariamente o programa deve terminar;
podemos alterar a funcionalidade do robô, definindo outro bloco de comandos posterior à mudança.
Como exemplo da aplicação de sensores, podemos estabelecer como finalizador de um procedimento o
choque do robô com um objeto (pressionamento do sensor de toque) ou a liberação do sensor de toque. Podemos
também utilizar o sensor de luz, definindo uma nova tarefa quando o robô perceber alterações na intensidade de luz
ou quando detectar uma intensidade específica de reflexão.
Propomos as seguintes atividades práticas:
a. Sensor de Toque
Desenvolver um programa que mova o RCX (em qualquer direção) até que o sensor de toque seja
pressionado. Após o teste do programa e a correção dos possíveis erros, tente programar uma nova tarefa a ser
executada quando o sensor de toque for liberado. Teste a eficiência de seu trabalho segurando o sensor por um
tempo e observe se o robô executa alguma tarefa nesse período.
b. Sensor de Luz
Use o RoboLab para montar uma tarefa específica que o robô deve executar até encontrar uma região com
menor intensidade luminosa. Você pode fazer o robô ficar em movimento cíclico e diminuir a intensidade luminosa
da área ou pode fazê-lo andar pela sala em caminhos aleatórios em busca de uma região mais escura. Depois de
testar seu programa, procure mudar os níveis de intensidade de luz que fazem com que o robô pare. Aumente e
diminua esse valor e veja o comportamento do Lego.
3) Loops
Movimentos em loop são movimentos repetitivos, como andar sempre para frente, ou andar para frente e
para trás. Um loop é definido como uma tarefa que é executada indefinidamente até que algo a faça parar. Aqui
estamos falando de uma pausa forçada, como, por exemplo, utilizando um contador de tempo ou uma alteração nos
sensores.
Loops podem ser utilizados em rotinas nas quais queremos que o robô tenha uma determinada atitude
apenas em um momento específico, e que no tempo restante execute uma função padrão.
Por exemplo, podemos programar um RCX para ficar vigiando a porta de uma sala de aula. O robô ficará
andando de um lado para o outro da porta e, cada vez que uma pessoa passar ele deverá emitir um som. Em seguida,
deverá retornar a sua tarefa de vigia. Nesse caso utilizamos o loop, pois queremos que o robô fique sempre vigiando
a porta, mesmo depois de avisar que alguém entrou ou saiu da sala.
Para fixar esse conceito e aprimorar o uso dos comandos de loop, propomos a seguinte atividade: fazer um
programa que faça o robô andar para frente. Caso encontre um objeto no caminho, o RCX deverá desviar e retornar
ao loop. Teste seu programa adicionando objetos no caminho do robô e observe os desvios de rota que ele fará.
Lembre-se de que o robô está em loop e, portanto, teremos de estabelecer uma saída definitiva da rotina para que
possamos desligar o equipamento com segurança. Essa saída pode ser controlada por tempo ou por sensores.