Trabalho Prático 3 - Robótica móvel (navegação e controle)

No terceiro trabalho prático da disciplina de introdução à robótica foi pedido que o robô realizasse três tarefas. A primeira era uma tarefa de localização, em que, utilizando-se de um LDR diferencial, o robô deveria se alinhar a fonte de luz polarizada mais próxima. A segunda era um complemento da primeira tarefa do trabalho passado, com o diferencial que o tamanho dos trajetos deveriam ser escolhidos pelo menu. A terceira consistia em seguir a linha presente no campo.

Localização


A construção do sensor LDR diferencial para o alinhamento com a luz polarizada teve a sua dificuldade no processo de alinhamento dos filtros com as lâmpadas. A solução se deu ao colar um pedaço de fita adesiva transparente na lâmpada com a cola virada para “fora” e ajustar os filtros de forma que esses ficassem alinhados, colando-os logo em seguida. 1)

Um segundo aspecto da construção que fez toda a diferença foi o completo isolamento do sensor, feito com o auxílio e dois tubos de papel preto e um pincel atômico utilizado para pintar a cola quente usada nas frestas.

Frente LDR diferencial LDR diferencial de cima LDR diferencial montado

Em relação a localização, esta é feita da seguinte forma, o robô dá uma volta completa armazenando o maior e o menor valor encontrado. Após esse primeiro passo, os valores são comparados a fim de saber qual valor está mais próximo dos limites superior e inferior, 1023 e 0 respectivamente. Por fim o robô volta a girar até encontrar o valor mais próximo do limite, decidido anteriormente.

Houve um problema com tal algoritmo, relacionado aos valores máximo e mínimo medidos. em um dos lados, o intervalo era em torno de 750 até 950, em que o robô escolhia o maior valor para se alinhar, como esperado. Porém, do outro lado, o intervalo era cerca de 300 até 800, o que fazia com que o robô escolhesse também o maior valor. Como tratativa para o problema, o limite inferior foi redefinido de 0 para 250, o que solucionou o problema.

Odometria e controle


O primeiro passo para a realização dessa tarefa foi a confecção do sensores shaft-encoders. Houve um trabalho significativo nessa parte pois as chaves ópticas estavam em falta nas lojas de eletrônica na época em que esse trabalho foi feito, restando ao grupo confeccionar tais sensores a partir do TCRT5000, o que gerou um trabalho significativo.

TCRT5000 montado como chave optica Encoder











Um dos detalhes que fizeram toda a diferença na construção foi o isolamento do emissor e receptor com um pedaço de termoretrátil de diâmetro apropriado, o que praticamente eliminou todo o ruído captado pelo sensor. Ainda sobre a montagem do sensor, houve um equívoco na escolha do eixo em que o disco ia ser anexado, pois colocá-lo no eixo da roda reduziu muito a taxa de amostragem, a saber, 6 furos por volta, ou uma leitura a cada 2,2 cm.

Com o intuito de controlar a velocidade do robô, que foi mantida a 10 cm/s, foi utilizado um controle PID cujos ganhos foram setados utilizando o método de Ziegler-Nichols 2), uma heurística que tem por função facilitar tal processo. Apesar dos obstáculos encontrados nessa tarefa, o maior deles foi relacionado a odometria. Conforme já mencionado, devido ao fato da taxa de amostragem ser baixa, há uma incerteza fixa de até 2,2 cm no deslocamento linear, decorrente do fato de ser impossível saber a distância deslocada até a leitura do primeiro furo. Em um deslocamento linear, tal erro pode não ser tão relevante porém, quando se trata de movimentos “angulares”, quando o robô gira em seu próprio eixo, tal erro se traduz em aproximadamente 15,3º no pior caso, o que exigiu certas tratativas a fim de contornar tal problema.



Como sensor utilizado para seguir a linha existente, foi escolhido um break-beam TCRT5000 por já ter sido utilizado anteriormente e apresentar uma leitura com menor ruído e maior precisão, sem a necessidade de calibragem. O único break-beam foi instalado no centro do robô, a frente do eixo das rodas.

Sensor visto de cima Sensor visto por baixo









Após diversas tentativas de se obter um algoritmo eficiente para o seguidor de linha, concluiu-se que a resposta jazia na simplicidade. Ao invés de se utilizar dois sensores, escolhemos apenas um que fica apontado para a linha de modo que, ao detectar uma mudança de cores, o sentido dos motores é invertido, o que faz o robô “zique zaquear” pela linha.

O segundo sensor utilizado anteriormente foi colocado na frente do robô para evitar que esse colidisse com as “bordas” do mapa.

Sensor para evitar colisões

Considerações Finais


Robô

Tal trabalho ressaltou alguns detalhes de extrema relevância. O primeiro deles é em relação ao isolamento dos sensores ópticos, necessário nas tarefas que o utilizaram. Sem fazer tal modificação, foram “criadas” causas diversas para os erros de leitura, como as constantes do controle PID, mal contato e até o mal funcionamento do filtro polarizante.

O utilização do controle PID foi de extrema importância para entender o funcionamento dos métodos de controle, principalmente os de malha fechada. Em relação a calibração dos ganhos, foi impressionante ver como apenas o fator proporcional, bem configurado, já mostrava claramente seu efeito sobre a trajetória. O mesmo se deu a medida que foram adicionados as outras parcelas, tanto a derivativa quanto a integrativa.

Um último fato, não menos relevante, retoma o problema da taxa de amostragem do encoder. A solução clara para esse problema é a de mudar o disco para o eixo mais próximo do motor possível, pois a própria redução faria o papel de diminuir a distância deslocada entre as medições. Infelizmente tal solução foi descoberta tardiamente e por tal motivo não pode ser feita a tempo da apresentação deste trabalho.

1)
Devido ao fato de tal processo ter sido feito em meio a “gambis”, não houve registros.