domingo, 18 de novembro de 2012

Dicas de Robótica - Tutorial Robô NXT seguidor de linha


             Na estreia do nosso novo quadro, vamos trazer um tutorial de um robô seguidor de linha usando um kit Lego NXT. A confecção dele é muito simples, assim como sua programação. Você pode encontrar bastantes vídeos de robôs seguindo linha, porém é raro encontrar dicas e tutoriais que possam ajudar. Essa dificuldade foi marcante no início da equipe e por isso estamos enviando esse para vocês.
                Do kit vão ser necessárias apenas algumas peças, dois motores, um sensor de cor ou de reflexão. Para programar usaremos o Software NXT incluso no kit ou o Programa RobotC que usa linguagem C para programação e é necessário maior conhecimento do programador sobre. Usaremos como teste o próprio Test Pad do kit. Vamos começar:
                Primeiro é necessário fazer uma estrutura, onde o sensor ficará à frente dos dois motores (de preferência centralizado), e estes formarão um eixo frontal e independente do restante da estrutura, como na imagem:



O REM bot possui uma estrutura parecida com esta, bem simples de ser construída, sendo necessário somente adaptar um sensor de luz ou de cor à frente do robô. Você pode encontrar as instruções de construção aqui.

Após construir a parte mecânica, vamos à programação. Primeiro vamos usar o NXT Software. A lógica é bem simples: o robô fará um zigue-zague pela borda da linha, seguindo em frente. É importante lembrar que deve haver um contraste de cores, ou seja, a linha deverá ser preta e o fundo branco ou vice-versa. No caso usaremos uma linha preta com fundo branco. Vamos para o passo a passo:

  1. Execute o aplicativo e crie uma nova programação:




2. Agora crie uma condição (switch) dentro de um loop infinito. As condições serão a detecção da cor preta  e a detecção de uma cor diferente de preto (repare nas configurações):



3. Agora vamos adicionar movimento. Para quando o sensor detectar a cor preta vamos movimentar o robô para a direita, movimentando o motor conectado à porta C (esquerda) e mantendo o motor conectado à porta B (direita) travado:




4. Para quando o sensor detectar uma cor diferente do preto vamos inverter os comandos, travando o motor conectado à porta C e movimentando o motor conectado à porta B, fazendo o robô se movimentar para a esquerda:



Note que é possível fazer isso com um sensor de luz, apenas configurando as condições, mantendo os comandos de quando preto em cima, e quando de outra cor em baixo. Repare que é necessário calibrar o sensor e fazer um teste na parte "view" no NXT para saber a porcentagem da reflexão de luz nas áreas pretas e nas áreas de outra cor. Os valores do sensor para a imagem abaixo podem não funcionar com o seu robô, devido a condições do ambiente e a plataforma usada para teste:


5. Agora é só fazer o download para o seu NXT e logo testá-lo. Lembre-se que os drivers devem estar devidamente instalados:



Mas para aqueles que preferem algo um pouco mais profissional, ou gostam de um desafio, temos também um código exemplo para um robô seguidor de linha com um sensor de cor feito no programa RobotC. O código é bem semelhante, e tem a mesma função, só que usa linguagem C, diferente da programação gráfica que temos no software NXT:

 #pragma config(Sensor, S3,   ,        sensorCOLORFULL)  
 task main()  
 {  
      while(true) /* Vamos criar um loop para a acao ser repetida infinitamente*/  
      {  
           if(SensorValue[S3] == 1) /* Quando o sensor identificar preto o robo se movera para a direita*/  
           {  
                motor[motorB] = -5;  
                motor[motorC] = 75;  
           }  
           else if(SensorValue[S3] != 1)/* Quando o sensor identificar uma cor diferente de preto, move para esquerda*/  
           {  
                motor[motorB] = 75;  
                motor[motorC] = -5;  
           }  
      }  
 }  

Agora é só compilar e fazer o download para seu NXT, como visto acima.


Fique a vontade para modificar algum valor ou configuração a fim de melhorar o desempenho do seu robô na hora de seguir a linha.

E como não podia faltar, um vídeo demonstrativo do robô seguindo linha no Test Pad:



Caso tenham alguma duvida ou sugestão, não hesitem em nos enviar um comentário ou uma mensagem de contato. Fiquem atentos às nossas próximas publicações.



9 comentários:

  1. E se em vez de um desvio curvilíneo, fosse num ângulo de 90°? O programa funcionaria?

    ResponderExcluir
    Respostas
    1. Sim, mas para isso ele deve estar a uma velocidade baixa

      Excluir
  2. Respostas
    1. Obrigado Victor. Atualizamos o link para um outro tutorial do REM bot.

      Excluir
  3. Olá pessoal !
    Estou com muita dúvida na programação na sala 3, nível 1 da OBR. Vcs saberiam dar algumas dicas?
    Aguardo retorno Rafael SERBÓTICS

    ResponderExcluir
  4. É POSSÍVEL FAZER CURVAS PARA ESQUERDA E DIREITA COM APENAS UM SENSOR ??

    ResponderExcluir