Tentamos criar um robô que funcionava da seguinte forma: haviam duas rodas escravas para dar o equilíbrio estático ao robô. Um motor girava outras 2 rodas, as quais moviam o robô para frente e para trás. Ao mesmo tempo, esse motor ficava sempre girando um eixo central que possuía uma plataforma na parte de baixo, funcionando como um pé do robô. Quando o robô atingisse o vértice do quadrado, medido pelo tempo, esse motor parava e o outro era acionado. Este segundo motor fazia o eixo central descer, de modo que o robô ficava suspenso. Então, o primeiro motor era novamente acionado, fazendo as rodas girarem, agora suspensas, e fazendo girar também o eixo central. Isso fazia com que o robô inteiro girasse suspenso pelo “pé”. Após o giro de 90 graus, o motor 1 era desligado e o motor 2 era acionado para fazer subir o eixo central, fazendo o robô descer. Com isto o robô estava posicionado para fazer a próxima aresta do quadrado.
Não foi possível fazer uma construção robusta o suficiente à tempo para a apresentação. A maior dificuldade era com relação ao eixo central do robô. Se fosse aplicada um potência pequena no motor, este não conseguia força o suficiente para subir o robô. Se fosse aplicada um potência grande no motor, o eixo não conseguia sustentar o peso do robô, o que fazia com que o mesmo desmontasse.
Como este projeto não foi concluído, a parte de implementação do mesmo foi muito simples. A única coisa que foi feita era um menu simples que acionava os motores para que pudessem ser feitos testes com o robô.
Foi decidido trabalhar agora com uma abordagem mais comum, criando um robô com um motor por roda.
Dessa forma, para que o robô ande para frente basta que se aplique a mesma potência aos dois motores, pois isso fará com que as duas rodas ativas girem com a mesma velocidade.
Para fazer com que o robô gire, basta que seja aplicada potências inversas nos motores. Por exemplo, 40% em um motor e -40% em outro motor, onde o sinal de ”-” significa acionar o motor para girar para o lado oposto. Dessa forma, as rodas terão velocidades de mesma intensidade, porém de sentidos contrários, o que faz com que o robô gire em torno do eixo das rodas.
Como este robô possuía apenas as duas rodas que geravam o seu movimento, era necessário criar um terceiro ponto de apoio para obter o equilíbrio estático, este problema foi resolvido com a utilização de uma esfera de desodorante roll-on, posicionada na parte traseira do robô.
Para se fazer os desenhos necessários no trabalho, foi utilizado um tubo de caneta esferográfica. Esse tubo foi posicionado no centro do eixo das rodas. Dessa forma, quando o robô gira, a caneta permanece na mesma posição, o que pemite que as quinas dos quadrados desenhados sejam o mais perfeito possível.
Inicialmente tivemos diversos problemas com o posicionamento e o travamento dos motores, pois estávamos tentando colocar o eixo do motor ligado à uma aste com uma rosca sem fim, mas isto necessitava de uma regulagem muito fina que não conseguíamos.
Para resolver este problema, resolvemos ligar o motor à uma corrente, que permite variações maiores do posicionamento do eixo do motor, mas mesmo assim não foi possível posicionar de forma correta a outra ponta da aste, pois a proporção não permitia. Então tivemos que furar uma peça, de modo a alcançar a altura desejada.
Após concluída a montagem do robô, o maior problema foi a calibragem, pois as potências dos motores eram bem diferentes, além de sofrer variações à medida que a bateria descarregava.
O programa feito para controlar o robô é constituído basicamente de um menu. Em qualquer ponto do menu, o botão start seleciona o opção corrente e o botão stop muda para a próxima opção.Quando a handyboard é ligada é exibido o menu principal. Esse menu é composto de 6 opções.
A primeira opção é “Ligar robo p/ andar frente”. Essa opção faz surgir um sub-menu no qual pode-se escolher com qual potência os motores serão acionados. Existem somente 5 opções de potência para este caso, pois são justamente as potências pré-definidas que seriam utilizadas nos testes de translação do robô.
A segunda opção é “Ligar robo para girar 90 graus”. Apesar do nome dessa opção, o robô não gira 90 graus. Esse nome foi escolhido pelo fato de, inicialmente, termos pensado em fazê-lo girar sempre 90 graus. Ao se escolher essa opção, assim como na opção anterior, surge um sub-menu com as opções de potência de acionamento do motor pré-definidas.
A terceira opção é “Tocar música”. Essa opção simplesmente toca a música escolhida pelo grupo até que o botão stop seja pressionado. A música escolhida foi a música tema do filme “Um tira da pesada”.
A quarta opção é “Executar multitarefa”. Essa opção faz com que o robô ande para frente ao mesmo tempo em que toca a música. Essa função fica ativa por somente 30 segundos, tempo este pré-estabelecido no trabalho. Para que o robô não andasse muito durante o período de execução da função, os motores são acionados com somente 30% de potência.
A quinta opção é “Desenhar quadrado”. Essa opção faz com que o robô execute uma função que desenha um quadrado de 30cm de lado. Para isso, as funções que fazem com que o robô ande para frente e gire são chamadas alternadamente. Dessa forma, o robô anda 30cm, gira 90 graus, anda 30cm, gira 90 graus, e assim sucessivamente até que 3 quadrados tenham sido desenhados. Para que o giro seja de 90 graus e que a distância percorrida seja de 30cm, existem variáveis que controlam o tempo e a potência dos motores em cada função.
A sexta opção é “Ajustar variaveis”. Essa função pemite que as variáveis de tempo giro, tempo de “caminhada”, potência de giro, potência de “caminhada”, fator de correção dos motores e tempo de teste sejam atualizadas através do uso do knob. O fator de correção dos motores serve para que o motor mais forte tenha uma penalização de potência para que, dessa forma, o robô possa andar sem fazer curvas. O tempo de teste é utilizado nas funções de testes de translação e rotação do robô. As outras 4 variáveis servem exatamente para o que o próprio nome indica.
O código fonte do programa implementado está no arquivo zip do link: código fonte
Nos testes foi utilizado um fator de correção para que os motores girassem na mesma velocidade, esse fator foi aplicado dividindo-se a potência do motor mais forte por ele, sendo utilizado o valor de 1,3 no momento dos testes. Percebeu-se que este fator de correção varia de acordo com a carga da bateria. Para a bateria completamente carregada, o robô anda em linha reta com um fator de 1,0, ou seja, os dois motores com a mesma potência. À medida que a bateria descarrega, um dos motores perde mais potência que o outro, então o fator se faz necessário. Com a bateria quase descarregada, chegou-se a utilizar um fator de 1,5.
Nas medidas da distância que o robô percorria, fixou-se o tempo e variou-se a potência aplicada aos motores. Foram utilizadas as potências de 20%, 40%, 60%, 80% e 100%. Para as potências de 20%, 40% e 60% utilizou-se um tempo de 2 segundos. Para as potências de 80% e 100% utilzou-se um tempo de 1 segundo. O tempo utilizado pelas potências altas foi reduzido pois o robô percorria uma distância maior que o comprimento da cartolina se fosse utilizado 2 segundos.
Os gráficos obtidos foram os seguintes:
Nas medidas do ângulo feito pelo giro do robô, fixou-se o tempo e variou-se a potência aplicada aos motores. Foram utilizadas as potências de 20%, 40%, 60%, 80% e 100%. Para todas as potências, utilizou-se um tempo de giro de 1 segundo.
Os gráficos obtidos foram os seguintes: