Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2017-1:grupo01:tp1

TP 1 / Projeto 1: Movimento por pontos definidos

Para esse trabalho, escolhemos implementar o projeto 1, onde o robô precisa navegar em uma área pré-definida, deixando uma linha bem definida no papel. Para isso, utilizamos as peças do LEGO Dacta em conjunto com o HandyBoard.

Montagem

Para criar a estrutura, decidimos segmentar o robô em uma base e um braço. A base seria responsável por rotacionar o braço, que fica em cima dela, e o braço é responsável por segurar a caneta e avançar ou retroceder em linha reta. Com esses dois elementos, é possível percorrer todo o circuito com uma combinação cuidadosa de movimentos entre os motores. Cada parte é movimentada por um motor DC.

A maior parte da estrutura é ocupada pelas caixas de redução necessárias para executar os movimentos de forma controlada. Para a base, utilizar uma redução grande o suficiente é crítico, pois elementos como atrito, folgas nas engrenagens, e variações na corrente realmente entregue os motores rapidamente introduzem aleatoriedade no processo de programação e testes.

Para avançar e retrair o braço que segura a caneta, experimentamos uma esteira em várias orientações, e no final decidimos utilizar a esteira virada para baixo para ter rigidez nos movimentos laterais do braço que segura a caneta. A estrutura final do robô pode ser vista no vídeo abaixo:

Além disso, a esteira para baixo permite que o próprio peso da parte a mantenha próxima à engrenagem, o que também ajuda a reduzir aleatoriedade no comportamento do robô. O braço também conta com um limite de retração, escolhido para facilitar o “reset” do robô na posição inicial. O limite facilita o posicionamento do robô sempre no mesmo ponto ao iniciar o programa.

Inicialmente, pretendíamos colocar o HandyBoard sobre todo o robô, em um buraco em sua base. No entanto, isso fez com que o braço que segura a caneta precisasse ser muito longo para alcançar o chão. Esse comprimento excessivo introduzia folgas e permitia flexões no braço que impossibilitavam a programação do robô, pois eram imprevisíveis. Assim, decidimos reduzir a altura da base e colocar o HandyBoard ao lado da mesma, permitindo que fosse usado um braço mais curto.

Programação

Para programar o robô, nós executamos movimentos em pares, sempre uma rotação da base seguida de uma extensão ou retração do braço. Isso permite manter a caneta sempre o mais próxima possível da linha central entre os pontos do percurso, minimizando a chance de um erro tirar a caneta de dentro da margem de erro.

Além disso, também programos uma rotina para voltar o robô à sua posição inicial. Ela facilita o desenvolvimento do programa do circuito consideravalmente, pois permite que os braços sejam resetados sem precisar remover os motores do sistema. No início de sua execução, o programa aguarda um de dois comandos: caso o usuário aperte o botão START, a rotina de percorrer o circuito é iniciada; caso o usuário aperte o botão STOP, a rotina de voltar o robô à posição inicial é iniciada. Essa rotina consiste em simplesmente rotacionar a base no sentido contrário ao do circuito até que o usuário aperte o botão STOP novamente, e depois retrair o braço até que o usuário aperte STOP uma última vez.

Desafios

Implementar robôs com LEGO não é fácil. As peças têm folgas que se somam à medida em que mais complexidade é introduzida nas estruturas. É difícil controlar a flexão das partes envolvidas, e alguns tipos de conexões simplesmente não são possíveis.

Um dos desafios iniciais encontrados pelo grupo foi a vibração no braço que segura a caneta. Este é anexado à base do robô por um único eixo, que permitia flexões em yaw, roll e pitch. Para reduzir esse problema, criamos uma “armadura” retangular ao redor do eixo, que criava um limite máximo de flexão em pitch e roll. Isso permitiu que um nível melhor de controle fosse obtido.

Outro problema encontrado inicialmente foi que o atrito da ponta da caneta no papel somado à flexibilidade das peças de LEGO fazia com que o braço rolasse toda vez que ele iniciava um movimento. Para resolver isso, movemos o HandyBoard para a lateral da base e a abaixamos, permitindo reduzir o comprimento do braço, como explicado acima.

Nós também tivemos vários problemas com a parte elétrica do robô. Os motores eram velhos e frágeis, as conexões são frágeis e precisam ser reforçadas ou rapidamente perdem o contato, e uma vez um dos motores simplesmente passou a operar com o dobro da potência sem que nós fizéssemos nenhuma mudança no robô, no motor, ou no programa.

Após estes problemas resolvidos, a programação não é difícil, só leva tempo para experimentar. Como o robô não possui nenhum sensor, o programa simplesmente executa uma receita pré-definida de movimentos.

Considerações Finais

Implementar o TP1 foi extremamente frustrante, devido aos inúmeros fatores de aleatoriedade encontrados durante o processo de desenvolvimento, muitas vezes quando já tínhamos programado boa parte do circuito, que nos forçavam a começar do zero. A estrutura do robô sofreu inúmeras mudanças, e a maioria delas, por menor que seja, requer que toda a programação seja começada do zero, devido ao comportamento caótico de movimentos seguintes quando algum movimento não vai como esperado.

Apesar disso, pudemos aprender muito sobre quais estratégias funcionam melhor com as ferramentas disponíveis, além de nos familiarizar com o ambiente do InteractiveC e do HandyBoard.

Vídeos com o progresso do desenvolvimento

cursos/introrobotica/2017-1/grupo01/tp1.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki