TP1
Nesse TP, o objetivo era a construção de um robô (agora liberado o uso de rodas!) que executasse operações de mídia (tocar música, para mostrar execução de tarefas concorrentes), translação e rotação, de modo a conseguir desenhar um quadrado de 30cm de lado no chão (entenda-se uma cartolina), sem o uso de qualquer tipo de sensor, ou seja, apenas com temporizações.
Atividades
8 de Setembro
Acordamos cedo, em pleno feriado, motivados pela energia criativa da construção do nosso próximo robô. Após muitas discussões, entre fazer um modelo exotérico ou um simples robô diferencial, optamos pela segunda opção, que acabou se revelando não ser tão simples assim… Pelo menos, conseguimos terminar a primeira versão do robô no final da tarde. Boa parte do código fonte também foi escrita.
14 de Setembro
O nosso robô diferencial passou a ser capaz de tocar uma música. Não revelaremos a canção escolhida para manter a surpresa no dia da apresentação… ;)
15 de Setembro
Passamos a manhã arrumando um suporte para o robô diferencial ganhar mais uma capacidade artística: a de desenhar. Ao invés de utilizar uma caneta, optamos por colocar um suporte para 5 grafites 1.6. Também finalizamos o código fonte que roda em nosso robô para ele executar todas as ações especificadas. De tarde, começamos a trabalhar em nossas medições, alegres e felizes, quando descobrimos que a trajetória de nosso robô estava completamente errônea. Depois de um bom tempo de depuração, percebemos que o robô estava “agarrando” no chão, o que fazia com que um lado andasse mais rápido do que o outro, provocando giros indesejáveis. Tivemos que alterar (novamente) o projeto do robô, dessa vez deixamos apenas dois pontos de contato com o chão (além, é claro, das rodas). Porém, não conseguimos realizar as medidas hoje, ao contrário do planejado.
17 de setembro
… Travas e … mais travas. A estrutura até então provisória do robô foi submetida a uma limpa geral, assim como uma reformulação completa do suporte ao grafite, de modo que ficasse firme no chassi do robô. Depois de algumas dezenas de neurônios queimados e várias tentativas frustradas de encaixe, inclusive passando a se usar uma caneta bic ao invés de grafites, chegamos no desenho final: um grafite 1.6 preso no interior da carga de uma caneta bic, que encaixou e firmou bem nas peças LEGO. A handyboard foi travada ao robô e o código foi finalizado (em versão beta sem ser posto pra funcionar).
18 de setembro
Começo dos testes com o robô. Reformulada a trava da handyboard, já que a antiga ou tampava um dos caracteres da tela ou o botão stop. Mudanças nas funções do código, adicionando teste para verificação da retidão da trajetória. Ajuste dos motores (diferença na potência) e calibração, determinando tempos para translação de 30cm e rotação de 90° a 20%, 50%, 60% (depois que conferimos a potência certa para medição) e 100% de potência. Testes feitos cerca de 10 vezes, para obtenção da distribuição. Novamente, tivemos que mudar o código para aumentar a resolução na definição dos tempos e tentar corrigir um pequeno roblema de arranque. Sem problemas com a bateria até o momento.
19 de setembro (último dia!)
Fim dos testes. Conferimos alguns resultados, salvamos as calibragens e decidimos pôr o robô pra rodar. Enfrentamos sérios problemas devido ao tamanho da cartolina, pois o robô não tinha uma roda auxiliar (!!!), se movia apenas arrastando o corpo (motivo por termos reduzido pontos de contato com o chão), agarrando facilmente na cartolina ao sair um pouco dela. Toda a estrutura de travas próxima ao chão foi corrigida para oferecer a mínima possibilidade de agarrar (peças redondas fazem milagres) e o robô passou a ter um desempenho satisfatório. Mais uma travinha aqui e outra ali, e o robô ficou definitivo. Passando a executar agora o fatídico teste de fazer quadrados, tivemos um começo até bom, mas depois de pouco tempo a regulagem começou a falhar e fomos pouco a pouco chegando em um limite, até que à potência de 20% o robô não girava 90° no tempo máximo de rotação, e os testes foram ficando bastante imprevisíveis. Com os dados de funcionamento a plena carga (ou quase) decidimos que era hora descarregar a bateria para carregá-la novamente, e ver se os deuses são bons conosco e nos permitem ver tudo funcionando corretamente no dia da apresentação.
Funcionamento
O projeto para o robô escolhido foi o de uma estrutura com dois eixos diferenciais e, por alguma inspiração estranha, com o apoio restante necessário dado pela própria estrutura (sem roda auxiliar, se arrastando). Apesar desse projeto pouco ortodoxo, o robô funciona bem por ter uma estrutura relativamente leve.
O movimento em linha reta é feito girando-se as duas rodas no mesmo sentido (com a devida calibragem de diferença de potência dos motores), e o giro no próprio eixo, girando-as em sentidos opostos (a grande vantagem da tração diferencial). A distância percorrida assim como o ângulo de giro é controlada pelo tempo em que os motores ficam ligados, a parte mais cansativa deste trabalho.
Dificuldades
A grande dificuldade deste projeto foi dada pela adição de peças não-LEGO na montagem do robô, o que fez com que certas “gambiarras” tiveram que ser feitas, como o uso de “peças de destruição LEGO”, cola quente e braçadeiras para os motores, e a adaptação de um suporte para, no caso, o grafite.
Com o grafite apoiado, o novo desafio foi não fazê-lo um novo ponto de apoio para o chassi, pois estando estrategicamente posicionado entre as rodas, podia (e fazia) impedir seu contato com o chão e por consegüinte a movimentação do robô. A solução inicial foi uma estrutura com elásticos, que funcionava bem mas era muito custosa para travar no chassi, e o suporte final se deu sem peças móveis, com o grafite apontado de maneira calculada para escrever, mesmo que fraco, mas sem apoiar o chassi.
O suporte para a handyboard também gastou um tempo significativo para chegar onde chegou, pois a handyboard também não encaixa perfeitamente no LEGO, e foi feita toda uma estrutura para evitar flambagem de peças onde ela é encaixada e outra para firmá-la por cima, sem tampar o painel nem os botões ou o knob, para mantê-la funcional mesmo quando fixa.
No mais, experimentamos o uso de uma bateria cuja carga e, conseqüentemente, a potência entregue aos motores cai com o tempo, mudando a calibragem de tempos e arruinando completamente nossos últimos momentos de teste.
Testes de Calibração
Foram realizados uma bateria de testes para levantar, quantitativamente, a qualidade do controle de trajetória utilizado. Para cada potência de acionamento dos motores, tinhamos 3 variáveis de calibração: a razão entre a potência dos motores de cada lado e os tempos de rotação e translação.
A razão entre a potência dos motores é ajustada para compensar as assimetrias entre os lados do robô. Essas assimetrias decorrem do fato dos dois motores não serem idênticos e de diferenças na montagem do robô. Para calibrar esse parâmetro, o robô foi colocado para andar em linha reta e o valor da razão foi alterado para que sua trajetória se aproximasse o máximo possível de uma reta.
O tempo de translação deveria ser ajustado para que o robô andasse uma distância de 30 centímetros para a potência desejada. Para as potências de 20%, 60% e 100% do valor máximo de tensão nos motores, foi ajustado o valor do tempo de translação para que seu deslocamento fosse o mais próximo possível de 30 cm. Após encontrado esse valor ótimo, foram realizadas 10 medidas para cada potência para investigar a distribuição da distância percorrida com os parâmetros de calibração utilizados. Para a potência de 50% também foi investigado a relação da distância percorrida em função do tempo de acionamento dos motores. Foram realizadas 10 medidas de translação para cada tempo de acionamento investigado, sobre as quais foram calculadas a média e desvio padrão.
De forma análoga à translação, o tempo de rotação foi ajustado para que o robô girasse 90° para a potência desejada. Também foram realizadas 10 medidas para cada potência e foi investigada a distribuição do ângulo rotacionado com os parâmetros de calibração utilizados.
Os resultados estão mostrados na seção abaixo.
Resultados e Análise
Foram feitos os seguintes gráficos para exibir os dados conseguidos nos testes de calibração:
Nos gráficos acima podemos ver que a variância da distância percorrida aumenta com a potência e que a distribuição não é normal. A 20% de potência podemos ver que o valor esperado é próximo da média, mas o mesmo não ocorre a 100% de potência.
Para a rotação, obtivemos os seguintes gráficos:
Nos dados de rotação a variância também aumenta com a potência mas a média se aproxima mais do valor esperado.
Mídia
Abaixo segue algumas fotos de nosso robô diferencial. Clique nas fotos para ampliá-las.
Filme do robô em movimento:
Documentação complementar:






