Trabalho Prático IV
História
Parte I: A prévia
Inicialmente pensamos em criar um robô que fosse capaz de seguir a linha da mesa. Ele usaria seus braços para capturar o maior número de blocos possíveis. Incluindo os blocos que estivessem mais para o meio da mesa. A concepção parecia muito simples, até porque já haviamos feito um trabalho que fazia algo parecido sem muitas dificuldades.
Entretanto, depois de fazer a estrutura do robô, montar os sensores e programar, notamos que ele não conseguia andar sobre a linha como desejado. Diversas tentativas foram feitas, sem sucesso.
Planejávamos usar um terceiro sensor para sabermos em que posição do campo estávamos (se o terceiro sensor encostasse na linha preta poderíamos saber em qual das curvas ele está). Depois de muito tentar para fazer o robô andar na linha ele estava começando a dar sinais que talvez conseguiria. Foi quando notamos que o terceiro sensor havia quebrado. Já não tinhamos tempo para comprar outro sensor e essa foi a gota d'água. Resolvemos fazer um design muito mais simples.
O robô simplesmente alinharia com a luz polarizada, seguiria reto e depois voltaria para a base, pegando qualquer bloco no caminho. Fizemos isso e testamos várias vezes para ter certeza que funcionava.
No dia seguinte, durante a apresentação as condições de luz estavam bem diferentes e o robô não conseguiu o mesmo desempenho. De fato, ele não pegou bloco algum. No final, o robô não conseguiu atingir seus objetivos. Entretanto, ainda pretendemos surpreender no dia da competição.
Parte II: A competição
A idéia de andar pelo campo coletando blocos era boa e, se não conseguimos fazer orientando-se pela linha, então talvez seja mais fácil se orientar pela parede.
Instalamos um sensor de toque no robô e programamos um algoritmo muito parecido com a idéia original. A diferença é que, ao invés de tentar seguir a linha pelo campo pegando os bloquinhos, andamos esbarrando na parede para dar a volta no campo. Assim como um cego que tateia a parede a fim de se locomover em um quarto, o nosso robô esbarra na parede para se encontrar no campo. Essa maneira de locomoção se mostrou muito mais eficaz e robusta. Na forma original, um choque com outro robô poderia deixar o nosso robô completamente perdido na mesa, mas agora, independente de qualquer fator externo, o nosso robô é sempre capaz de se encontrar na mesa e andar no sentido anti-horário.
No caso ótimo, onde não há interferencias externas, o nosso robô chegava muito rápido na base, por isso usamos a luz polarizada para desligar o robô caso chegassemos na base. Dessa forma o robô não levaria embora os bloquinhos que já havia prendido.
No dia da competição o algoritmo funcionou muito bem. O nosso grupo ficou na chave onde mais pontos aconteceram, mas isso não nos impediu de ficar em terceiro lugar, muito próximo do segundo. Perdemos apenas uma das partidas, empatamos uma e ganhamos duas. Inclusive, conseguimos ganhar do campeão da competição, que era um dos robôs do grupo que estávamos, o grupo A.
Em conclusão, apesar de uma prévia ruim, conseguímos nos recuperar e apresentar um bom trabalho na competição final.
Robô Final
Montagem
O robô foi construindo utilizando:
- Dois sensores LDR + Filtros de luz polarizada + armação de papelão
- Sensor de infra-vermelho para luz de partida
- Sensor de toque para navegação do robô pelo campo
- 2 motores (1 para cada roda)
Abaixo uma foto da montagem final do robô com a indicação dos sensores
Estratégia
A estratégia que queríamos usar para o robô era que ele seria o mais simples e eficiente possível. Percebemos que a distância entre os blocos em cima da linha e os blocos mais próximos da linha era inferior a 30 cm, portanto decidimos que o robô deveria ter 30 cm de largura e seguir a linha ou a parede. Além disso, decidimos que dar uma volta completa no campo era legal, pois poderíamos roubar os blocos já capturados do oponente e também pontuar com os criminosos da área inimiga (que geram mais pontos).
Movimento do robô pelo campo
Blocos que o robô é capaz de pegar sem interferência de outro robô
Os problemas dessa estratégia eram:
- Coletar blocos demais, impedindo o robô de detectar que encostou na parede
- Colidir com o robô oponente e desviar do curso, ou travar
Para contornar os problemas, construímos um robô extremamente robusto e construímos um código que suportava até 4 motores em série, isto é, 2 motores em série por roda. No entanto, devido a problemas de espaço, tempo e diferença entre a potência dos motores acabamos utilizando apenas os 2 motores iniciais.