TP3

Relatório

Versão para download: ttf-tp3.pdf

Introdução

Problemas encontrados

Um dos maiores problemas encontrados neste TP foi a montagem do shaft encoder.

Tínhamos de início duas chaves óticas iguais, no entanto uma delas estava queimada.Conseguimos outra chave ótica com outro grupo, porém, a nossa chave ótica emitia o feixe de infra-vermelho na ponta do sensor, já a do outro grupo emitia o feixe na parte inferior do sensor. Para resolver este problema tivemos que isolar a parte inferior do emissor da chave ótica com termo-retrátil. Assim, foi possível utilizar os shaft-encoders para a realização do controle PD no robô.

Outro problema encontrado, foi a falta de um sensor optico reflexivo para ser usado na frente do robô para que seja possível fazer curvas”inside”. A falta do sensor, se deve ao fato que nenhum vendedor de nenhuma loja do centro sabia o que era o sensor óptico reflexivo. Tentamos pelos nomes de sensor óptico reflexivo e sensor óptico, porém sem sucesso. Uma breve explicação sobre o sensor foi dada aos vendedores, mas novamente sem sucesso.Utilizamos então o sensor LDR, mas como sua resposta era muito lenta e ele variava muito com a luz, não foi possível sua utilização.

Resistência Ideal

A HandyBoard possui uma resistência interna de 47k ohm, então quando se liga uma resistência nos sensores, elas ficam em paralelo.

Utilizando um potenciômetro, determinamos que a resistência que determina a melhor sensibilidade do sensor é de 300k ohm .

No entanto, tínhamos disponível somente a resistência de 320k ohm, e portanto, utilizamos a resistência de 320k ohm. Fato que não prejudicou em nada as tarefas que foram realizadas.

Wall Following

Three-State Algorithm

Nessa seção vamos apresentar os resultados da implementação de Three-State Algorithm feita pelo grupo.

Gráfico 3 state

Comparando-se o gráfico, referente ao algoritmo de três estados, do livro com o obtido pelo nosso robô, percebe-se que tanto o do livro quanto o nosso possuem grandes variações de sinais.

No entanto, nosso gráfico possui alguns “overshoot's”,que são oriundos dos momentos em que o robô, por algum motivo, encostou-se na parede e também no momento em que ele chegou próximo a uma quina de parede.

Hard vs Gentle Turning

O nosso robô não conseguiu fazer curvas “inside”. Fato este que tem a seguinte explicação:

Utilizamos dois sensores, um na frente do robô(para que seja detectada a parede frontal) e um sensor na lateral do robô(para que ele siga a parede lateral). O algoritmo utilizava o sensor lateral enquanto o frontal não detectava a parede. No momento em que o sensor frontal detectava a parede, o robô virava para a direita até que a parede deixa-se de ser detectada. A partir do momento em que a parede deixava de ser detectada, o algoritmo voltava a se basear no sensor lateral, procurando assim seguir a parede.O problema era que quando o robô virava para a direita a parede se distanciava muito,fazendo com que o robô não concluísse sua tarefa, ficando “garrado” nas quinas da parede.

Já as curvas outside foram realizadas com sucesso.

- O algoritmo hard turn, utilizava os motores sempre com potência 0 ou 100, já o algoritmo gentle turn , utilizava os motores com potência 50 ou 100.

Como o algoritmo gentle turn, mantinha os motores com uma diferença de potência menor que o hard turn, as “viradas” eram muito mais suaves , fazendo com que o gentle se comportasse de uma maneira muito melhor do que o hard, seguindo a parede.

Gráfico do gentle turning:


Gráfico gentle turning

Já nas quinas, a situação se inverte. No hard turn, o robô consegue virar na quina com muita facilidade.No modo gentle turn, o robô “abre” muito a curva, pois o seu motor interno tem metade da potência do externo.

Grafico hard turning:

 Grafico hard turning

Three-State vs Hard/Gentle Turning

O algoritmo de três estados , até o momento, foi o que realizou a curva interna com maior facilidade. Fato este que pode ser explicado pelo fato do algoritmo trabalhar com uma potência menor nos motores se comparado aos outros algoritmos.

Proporcional Three-State

O algoritmo de 3 estados que realiza a “virada” mais forte quanto mais longe estiver o robô da parede foi o melhor algoritmo de seguir a parede e vice-versa. Como ele aplicava a potência proporcionalmente, chegava um ponto que o robô andava em paralelo à parede ou próximo disso.

Gráfico 3 stage proporcional

A quina também foi superada facilmente neste algoritmo.

Controle PD

Para esta atividade, implementamos somente o controle proporcional, que foi feito da seguinte maneira:

  • O shaft-encoder nos fornecia o número de pulsos “gerados pela roda”.
  • Então, se a roda da esquerda estivesse fornecendo 37 pulsos, e a da direita 35 pulsos, a potência do motor da direita era incrementada até que a roda atingisse os 37 pulsos.
  • Assim foi possível fazer com que o robô andasse distâncias pré-estabelecidas e também fazer giros em 90º, ambos com um erro muito pequeno.

Código

Bibliotecas utilizadas

Não tivemos problemas em utilizar bibliotecas de terceiros, visto que todas apresentavam boas instruções de uso e/ou comentários.

Shaft Encoding

O driver responsável pelo shaft encoding foi a biblioteca

sencdr.icb fornecida por Fred Martin, disponível em:

http://handyboard.com/oldhb/software/encoders.html

Comunicação Serial

A comunicação serial foi feita utilizando-se as bibliotecas conio.c e serialio.c fornecidas por Richard F. Drushel, disponíveis em:

http://www.verlab.dcc.ufmg.br/cursos/introrobotica/2010-2/drushell

Wave Front

O algoríto de Wave Front fornecido pelo professor e disponível em:

http://www.verlab.dcc.ufmg.br/cursos/introrobotica/2010-2/tp3

cursos/introrobotica/2010-2/grupo05/tp3.txt · Última modificação: 2010/10/28 23:02 por thalesfc