Trabalho Prático 3
Link para o relatório do trabalho 3 (sem imagens) : tprob_3.pdf
Link para o código do trabalho: codigo_tp3_redcyclone.tar.gz
Fluxograma do menu implementado na handyboard: menu_tp3.pdf
Objetivo
O objetivo do trabalho é a utilização de sensores ópticos (opto-reflexivo e chave óptica) para a aquisição de dados, que uma vez tratados serão utilizados no controle do robô conforme o que está proposto na atividade.
Montagem dos Sensores
O primeiro passo pára realização do tp3 foi construção dos sensores ópticos e sua montagem na estrutura do robô. Sensores opto-reflixivos são vendidos no comercio com vários nomes diferentes,assim foi fundamental levar uma ilustração dos componentes para facilitar sua aquisição
Problemas:
- determinar se os sensores estavam funcionando, uma vez que operam numa faixa de infra-vermelho e não pode ser visualizado.
Solução:
- Montar uma circuito que acendesse um led toda vez que o emissor estiver montado da maneira correta( Leds emissores de infra-vermelho funcionam de forma semelhante a leds comuns).
- Utilizar uma câmera digital( celular ou maquina fotográfica digital), esse aparelhos possuem sensibilidade que cobre essa faixa do espectro da luz. No display aparece um ponto luminoso que corresponde a luz emitida.
Construção do robô
Nome do ROBO: GEBRABELEX-T3
Para obter maior precisão quanto ao numero de giro das rodas os shaft-encoders foram montados nos eixos tracionadores do robô(.
Problemas:
- Determinar a melhor forma de obter os pulsos que seriam gerados.
Solução:
- Testar diferentes polias visando encontra aquela que atendesse os requesitos de espaço e numero de pulso. Para isso foram testas roldanas de mouse( apresentavam orifícios muito pequenos o que dificultava a obtenção de dados, engrenagem de brinquedos mas ocorreu dificuldade de centralização, ao final escolhido a engrenagem de 14 dentes do kit.
Os sensores foram montados muito afastados do local de encaixe e alem disso eram muitos os fios dessa forma foram confeccionados chicotes ,que melhoraam a organização dos fios.Figura_4 –fotos dos chicotes.
A principio pensou em utilizar rodas montadas na parte frontal do robô para facilitar as curvas nas quinas de paredes, mas esta solução não se apresentou muito eficiente na prática, e esta ideia foi abandonada, e ao invés foi utilizada a estratégia de um sensor frontal para detectar a colisão com a parede, então o robô recua e faz uma curva para a direita.
Tarefas
Testes de Respostas do Opto-Reflexivo.
Video da Execução do WallFollow Hard: http://www.youtube.com/watch?v=qRPkUkX6J2w
Video da Execução do WallFollow Gentle: http://www.youtube.com/watch?v=-mk5qiYVV6g
Video da Execução do Three State: http://www.youtube.com/watch?v=LrO8wIKXgRQ Simple feedback control.
Uso de gráficos para comparar e discutir as funções hard, gentle e tri-state
Controle Proporcional Derivativo. A partir das funções encoder?_counts( conta o numero de pulsos) e encoder?_velocity (retorna a velocidade) foi elaborado o controle proporcional derivativo do robô. O controle visava igualar as posições das rodas a cada unidade de tempo. A roda esquerda foi tomada com Referência.
ErroProrcional = PosiçãoDir - PosiçãoEsq Erro derivativo = velocidadeD - velocidadeEsq Potencia = potencia_Atual - ganhoP*(ErroProporcional) - ganhoDx∗Erroderivativo)
Problemas:
- As operações que o computador realiza são muito rápidas, por esse motivo num primeiro instante o tentar realizar o controle da roda direita os valores para potencia eram extremos, ora acima do máximo (potencia>100) , ora valores negativos (Potencia <0). Isso ocorria, pois toda vez que era identificado um erro(roda mais lenta ou mais rápida) o controle tentava corrigi-lo , mas como não esperava um tempo suficiente para atuação dos motores ocorria então, um efeito avalanche.
Solução:
- Determinar um processo para amostragem de dados separadamente. Assim, havia tempo suficiente para que os motores agissem.
Problema2:
- Os motores partiam em tempos diferentes.Dessa forma havia um grande erro inicial e ao tentar corrigi-lo o robô o fazia de forma brusca o que causava um desvio na partida fazendo com que o robôs perdesse o alinhamento.
Solução:
- Os motores passaram a ser acionados em tempos diferentes ,não é melhor forma de fazer o ajuste( a melhor seria parti-lo em rampa), mas como havia a necessidade de medir a distancia foi adotado esse método.
Controle Deliberativo: Algoritmo Wave Front
Esse algoritmo permite que o robô parta de um ponto de coordenadas A(x,y) e chegue ao ponto B(x¹,y¹), sendo capaz de desviar de obstáculos no seu caminho.
Problema1:
- Adpatação do código disponível no site.
Solução:
- Percorrer as linhas do código substituindo as funções de seguir em frente, virar_esquerda e virar_direita , pelas funções elaboradas pelo grupo. Além disso, foram feitos alguns tratamentos de erro para deixar o código mais robusto.
Problema2:
- Devido as limitações físicas (potenciômetro e os botões de start e stop) da handyboard , a configuração dos dados: posição inicial, posição final , numero de objetos, e suas relativas posições, são muito trabalhosa.
Solução:
- Criar uma função que converte posições nos gride e números assim facilitaria parte do código.Essa função implementada .
Problema3:
- Superposição – quando uma posição já está ocupada( obstáculo, ponto de partida ou ponto de chegada) e tenta-se utiliza-la.
Solução:
- Imprimir mensagem de aviso indicando o uso dessa posição.
Execução do Algoritmo Wave Front:
Após algumas tentativas frustradas, conseguimos achar os valores de calibração ideal para as curvas para a esquerda e para a direita. E enfim o trajecto de teste foi executado correctamente duas vezes.
Video da Execução do Wave Front: http://www.youtube.com/watch?v=LE9egb27r7c
Tira-teima: http://www.youtube.com/watch?v=vGwdo8yZUro