Testar um spoonBot#

o spoonBot é um robô simples de tração diferencial com uma colher ligada a um servo que lhe permite fazer pan e tilt. Consulte a página spoonBot-Construction para obter informações sobre a construção do spoonBot. O programa de exemplo que acompanha a distribuição cc3 mais recente contém código de exemplo que demonstra como mover o spoonBot, bem como executar o modo Demo do spoonBot. O modo Demo do spoonBot é semelhante ao modo demo da CMUcam2, só que usa o spoonBot para fazer pan e tilt.

Calibrar o spoonBot#

Antes de utilizar o spoonBot, precisa de calibrar as configurações dos seus servos. Isto é feito definindo a seguinte estrutura de dados no início de main:

// SpoonBot Calibration Points
 //   Assume Left = Servo 0
 //   Assume Right = Servo 1
 //   Assume Spoon = Servo 2
 my_cal.left_mid = 71;
 my_cal.right_mid = 77;
 my_cal.spoon_down = 100;
 my_cal.spoon_mid = 202;
 my_cal.spoon_up = 255;
 my_cal.left_dir = 1;
 my_cal.right_dir = -1;
 my_cal.spoon_dir = 1;
 // Set the calibration points
 spoonBot_calibrate (my_cal);
  • Grave o firmware de emulação da cmucam2 na câmara

  • Abra o CMUcam3 Frame Grabber ou um Programa de Terminal

    • Utilizando o Frame Grabber, vá ao painel «Settings» e arraste as barras dos servos para alterar os valores

    • Num terminal, escreva «sv <servo-id> <servo-value>» para definir os servos, por exemplo:

      :sv 0 77
      ACK
      
  • Encontre a posição central dos Servos 0 e 1 ajustando-os até as rodas pararem

    • my_cal.left_mid = <valor do servo 0>

    • my_cal.righ_mid = <valor do servo 1>

  • Agora precisa de encontrar o sinal das direções

    • Olhando para o spoonBot pela traseira (colher virada para si), experimente baixar o número do servo 0, que deverá ser a roda esquerda

      • se o servo girar no sentido horário / para trás (na sua direção) então left_dir deve ser definido como 1

      • se o servo girar no sentido anti-horário, left_dir deve ser definido como -1

    • Repita para o servo 1 (que deverá ser a roda direita do ponto de vista do spoonBot)

      • se o servo girar no sentido horário / para trás (na sua direção) então right_dir deve ser definido como 1

      • se o servo girar no sentido anti-horário, right_dir deve ser definido como -1

    • Normalmente, um servo deve ser definido como negativo!

  • Agora encontre as posições Min, Middle e Max da colher ajustando o Servo 2

    • O Min deverá ser o menor valor que empurra a colher para baixo e, por conseguinte, inclina o spoonBot para a frente

      • Defina spoon_down em conformidade

    • O Max é normalmente 255 e deverá posicionar o spoonBot a olhar o mais para cima possível

      • Defina spoon_up em conformidade

    • O Middle é o valor que deixa o servo nivelado

      • Defina spoon_mid em conformidade

    • Se o Min e o Max parecerem invertidos, altere spoon_dir para -1

Assim que a calibração estiver concluída, recompile o projeto e GRAVE a CMUcam3. O spoonBot passará primeiro por uma sequência de movimentos programados para garantir que os servos estão configurados corretamente. Depois, o spoonBot aguardará que se prima um botão para começar a seguir uma cor. É apresentado texto através da porta série a notificá-lo das várias fases de funcionamento.

O movimento programado deverá ser o seguinte:

  • Ficar Parado

  • Olhar para Baixo

  • Olhar para Cima

  • Voltar à Posição Central

  • Rodar no Sentido Horário (visto de cima)

  • Rodar no Sentido Anti-Horário

  • Led vermelho apagado enquanto a câmara se prepara

  • O Led vermelho acende quando está pronto para seguir

Se isto parecer correto, experimente segurar um objeto de cor viva a alguns centímetros à frente da câmara e depois prima o botão. À medida que afasta o objeto, o spoonBot deverá rodar na sua direção. Utilize objetos de cores vivas que sejam o mais uniformes possível na cor. Um objeto como um pano vermelho vivo funcionaria bem, uma vez que reflete muito pouca luz (para além do vermelho puro). Certifique-se de que há iluminação suficiente na sala. Experimente capturar um frame para ver como estão as condições.

Nota: Se pretender desativar os servos sem os desligar, desligue o servo-power-jumper.