Competição

1 - Decisões

Decidimos utilizar basicamente o mesmo robô dos outros trabalhos que se comportava bem, mas fizemos algumas modificações para melhora-lo. Trocamos as roda grandes por pequenas, o que aumentava a precisão por não flexionar muito a aste do eixo e permitia um controle mais fino do número de voltas (já que a menor precisa dar mais voltas para andar a mesma distância).

Um problema que já havia sido percebido no trabalho anterior era a pouca precisão do shaft encoder, por utilizar apenas uma meia lua para contar o número de voltas. Nesta versão utilizados um disco com dois furos bem grandes, que permitia a captura segura das transições e uma precisão bem melhor que a anterior.

Também modificamos a redução do robô para que ele tivesse mais velocidade, já que a competição não exigiria muita força do robô, mas teria um tempo curto para a execução das tarefas. Para isto, paramos de utilizar a rosca sem fim.

Por fim, para realizar as tarefas específicas da competição decidimos construir uma estrutura na frente do robô, como um garfo, que arrastaria os blocos e os acumularia dentro do garfo. Também posicionamos um sensor LDR na parte de baixo do robô para captar a luz de inicio da partida e outros dois nas laterais, com os polarizadores de luz orientados com noventa graus de diferença, para que o robô localiza-se as laterais do campo.

Para a competição, pretendemos ainda posicionar um sensor de luz para perceber a linha preta, para que ele saiba quando entrou na base.

2 - Dificuldades

A maior dificuldade encontrada foi conseguir manter o controlador funcionando após cada modificação feita no robô.

Inicialmente, o robô usava as rodas grandes, mas acabamos optando por mudar para a roda pequena. Com isso, o modelo da roda que tinha sido calculado já não funcionava corretamente e teve que ser recalculado.

Após isso, percebemos que o robô estava “andando” muito lentamente, então decidimos mudar algumas engrenagens para que o robô tivesse maior velocidade. Com isso, o modelo calculado já não funcionava e teve que ser recalculado pela segunda vez.

O robô estava, então, funcionando aparentemente bem. Porém, percebemos que uma das rodas estava travando e esse travamento aumentou ao longo dos testes. Retiramos a roda juntamente com seu eixo para corrigir isso. Após algum esforço, as duas rodas ficaram livres e o movimento do robô ficou bem melhor. Porém, isso modificou novamente o modelo da roda, que novamente teve que ser recalculado.

Tivemos então a idéia de fazer um modelo de roda dinâmico, que tem como ser calibrado antes da execução da tarefa do robô. Essa idéia talvez seja implementada para a competição.

3 - Implementação

Um posicionamento preciso do robô só poderia ser obtido com um controlador bem ajustado e bem ajustado. Nesta sessão podemos observar o desenvolvimento do controlador utilizado na versão final do robô a ser utilizado na competição.

O primeiro desafio, apesar de parece aparentemente simples, refere-se ao movimento em linha reta do protótipo desenvolvido. Os motores utilizados na montagem, apesar de serem fabricados no mesmo lote de produtos, possuem comportamentos inevitalmente diferentes. Para o desenvolvimento de um controlador realimentado para deslocamento torna-se necessário os seguintes componentes:

1 - Sensor de medição
2 - Controlador
3 - Sinal de referencia
4 - Conversor estático de Potencia
5 - Atuadores
6 - Efetivadores

O sensor de medição foi desenvolvido utilizando-se o Shaft encoder disponível no Kit fornecido os alunos no início do curso. Este é capaz de verificar o setor no qual um disco cortado em 4 arcos de 90º está no presente momento. Sabendo que o disco está a uma velocidade 5 vezes mais do que a da roda, precisões de 1/20 do comprimento da roda poderiam ser teoricamente obtidos. O Controlador é implementado na própria Handy board, assim como o sinal de controle e o conversor estático que é baseado em uma estatégia do tipo PWM. Os atuadores são dois motores de corrente contínua do tipo utilizado em toca fitas automotivo, e finalmente os efetivadores que são as rodas. Observe que o controlador não controla o deslocamento do robô, e sim o deslocamento das rodas, já que não há como fechar a malha do deslocamento do robô para este trabalho.

O controlador desenvolvido para este trabalho é o tipo mais comum de controlador, chamado de PID devido às suas ações proporcional, integral e derivativa. O diagrama de blocos do controlador pode ser observado na figura abaixo:

Figura
:cursos:introrobotica:2007-2:grupo8:competicao:figura_1.JPG

Observe que a ação integral é implementada de tal forma a evitar a chamada sobrecarga da ação integral ou “Windup”. Da mesma forma a ação derivativa é implementada diferentemente da forma convencional do controlador PID. Dessa forma é possível evitar o chamado Chute derivativo, que ocorre nas mudanças mais bruscas de setpoint.

Para garantir o deslocamento linear do motor, tornou-se necessário a implementação de dois controladores independentes, um para cada roda. Para garantir o desenvolvimento mais suave do sistema, uma mesma curva de referencia era gerada para cada roda. Depois de realizar todo o desenvolvimento e ajustar os ganhos do controlador adequadamente o desempenho do controlador obtido pode ser verificado na figura abaixo:

Figura
Gráfico Rampa

Na figura é interessante observar duas características interessantes. A primeira delas é o erro de estado estacionário e o segundo é a diferença considerável de tensão aplicada a cada um dos motores. O erro de estado estacionário é ocasionado pela existência de apenas um pólo na origem do sistema em malha aberta, garantindo erro nulo para entrada em degrau e um erro de estado estacionário contante para entrada em rampa.

Na tentativa de tornar o sistema mais preciso, optou pela inserção da ação feedforward no controlador do robô. A ação feedforward implementada em conjunto com o sistema realimentado pode ser observado na figura a seguir:

Figura
:cursos:introrobotica:2007-2:grupo8:competicao:figura_2.JPG

A inserção da ação feedforward apesar de ser especialmente útil para o caso da rejeição à perturção, neste caso foi utilizada para o chamado “setpoint following”. Devido à curta duração da dinâmica do sistema, esta ação pode ser inserida de tal forma a diminuri o erro de estado estacionário. Vale lembrar também que a estabilidade do sistema não é alterada pois a equação característica do sistema permanece inalterada, e que o controle realimentado continua sendo utilizado para reduzir o erro e rejeitar eventuais perturbações. O resultado final pode ser verificado na figura abaixo:

Figura
Gráfico Rampa

4 - Imagens

Fotos

6 - Código Fonte

cursos/introrobotica/2007-2/grupo8/competicao.txt · Última modificação: 2007/12/10 16:16 (edição externa)