Tarefa 1:
Programe a interface de tal forma, que o modelo movimente-se em
linha reta por 40 pulsos. Para a medição dos pulsos utilizamos o
contador E1, e como botão de reset a tecla E8.
Modifique depois o programa de tal forma,
que o modelo percorre cada vez distâncias
diferentes, por exemplo, uma distância
de 80 cm. Qual será a grau de precisão da
repetição?
Tarefa 2:
Após 80 pulsos de marcha em linha reta o
modelo deve girar 180°. Considere os
diferentes sentidos de rotação dos motores
de acionamento em marcha reta e na ro-
tação.
Solução:
O modelo percorre em média 1 cm do trajeto
a cada 1 impulso de contagem. A precisão
da repetição está situada na mesma ordem
de grandeza, ou seja, 1 cm a cada 80
impulsos. Porém, ela varia em função do
piso sobre o qual o robô se movimenta. Ex-
tremamente desfavoráveis são os pisos de
tapetes grossos ou macios.
Antes de nos dedicar a esta tarefa, precisamos esclarecer duas coisas. Por
um lado usamos em nosso programa um novo módulo funcional, o módulo
POSIÇÃO. Trata-se aqui de um módulo que permanece ativo até que o
número de impulsos programado seja registrado na entrada (neste caso E1).
Do ponto de vista do programa isto significa, que nós operamos com uma
condição de espera definida. Na primeira experiência usamos esta função
como medidor de distância de trajeto para a marcha em linha reta.
Quando queremos que o robô gire, trata-se praticamente do mesmo
conceito, precisamos somente alterar o sentido de rotação dos motores.
Agora precisamos apenas introduzir o número de impulsos, e nosso robô
gira sobre o seu próprio eixo.
E agora vem o ponto número dois. Não queremos simplesmente
experimentar até que nosso robô gire em 180 , mas sim queremos calcular
este valor antecipadamente.
Os motores de acionamento são configurados como differential drive, ou
seja, as rodas do robô giram sobre a circunferência de um circulo cujo
diâmetro é igual à distância entre as rodas. Para um giro de 180° é preciso
que cada roda percorra exatamente a metade desta circunferência.
Calculamos primeiro a circunferência u:
u = S • d = 630 mm
d = diâmetro (distância entre rodas aprox. 200 mm)
Anteriormente determinamos um trajeto percorrido de aproximadamente
1 cm / impulso, por tanto para 314 mm de distância (meia circunferência)
precisamos de 30,5 impulsos. Como não podemos operar com frações,
precisamos optar por 30 ou 31 impulsos. Testamos agora qual dos dois
valores proporciona a maior precisão.
Resultado:
Como resultado das nossas medições com a roda de impulsos, constatamos
que a precisão atingida não é muito alta. Principalmente quando são
percorridos trajetos diferentes em seqüência ou os mesmos trajetos
repetidamente, o erro de medição absoluto se acumula. Da mesma forma é
problemático o erro oriundo dos ciclos que não são registrados por comple-
to. As possibilidades de minimizar estes erros são limitadas. Por um lado
podemos aumentar a quantidade de impulsos por unidade de distância. A
localização do contador diretamente no eixo do motor seria a solução ideal.
Além do fato de que não temos acesso a este eixo, surge o problema da
taxa de exploração limitada da interface. Quando ocorrem muitos impulsos
dentro de uma unidade de tempo, é possível que a interface eventualmente
"esqueça" alguns. Assim torna-se ilusório chegar a um cálculo mais preciso
do trajeto.
Outros erros, como, por exemplo, o deslizamento das rodas sobre as
diversas superfícies ou desvios dos diâmetros das rodas, estão além do
nosso alcance. Para nosso consolo resta lembrar que estes problemas em
parte também ainda não foram solucionados em sistemas comerciais muito
mais caros e complexos.
4.2 Robô com reconhecimento de bordas
Agora que já pesquisamos bastante o nosso modelo básico, queremos
ensinar ao nosso robô a ter "medo" de cair no abismo. Até agora o robô
se movimentou sobre o tampo da mesa, vigiado atentamente por nossos
olhos de águia, para que ele não caia acidentalmente da mesa. Este
comportamento realmente não parece ser muito inteligente. Por isso
queremos alterar o mesmo.
Para que um robô possa reconhecer uma borda, ele precisa possuir um
identificador de bordas. Um procedimento simples e aplicável consiste no
uso de duas rodas auxiliares. Estas serão posicionadas como sensores antes
do robô, no sentido do deslocamento, e equipados com um interruptor.
As rodas são construídas de tal modo que permita movimentos verticais.
Ao passar da borda, a roda cai e aciona o sensor.
Tarefa 3:
Monte o modelo "Robô com identificação de borda" conforme a
instrução de montagem (relação de redução 50:1). O modelo deve
marchar em linha reta. Tão logo ele chegue a um abismo no lado
esquerdo, ele deve se desviar para a direita, e quando o abismo está
do lado direito, ele deve se desviar para a esquerda. Para permitir
uma visão melhor, certos movimentos são utilizados como
subprogramas. (em frente, à esquerda e à direita). O número de pas-
sos é identificado por meio de um sensor de contagem. O número de
passos é predeterminado pela variável VAR10. Esta predeterminação é
diferente para os subprogramas esquerda e direita.
P
63