Testando um spoonBot#

spoonBot é um robô simples de tração diferencial com uma colher conectada a um servo que permite que ele faça pan e tilt. Veja a página Construção do spoonBot para informações sobre como construir o spoonBot. O programa de exemplo que vem com a distribuição mais recente do cc3 contém código de exemplo demonstrando como mover o spoonBot bem como executar o modo Demo do spoonBot. O modo Demo do spoonBot é similar ao modo demo da CMUcam2, só que usa o spoonBot para fazer pan e tilt.

Calibrando o spoonBot#

Antes de usar o spoonBot, você precisa calibrar suas configurações de servo. Isso é feito definindo a seguinte estrutura de dados no início do 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 cmucam2 na câmera

  • Abra o CMUcam3 Frame Grabber ou um Programa de Terminal

    • Usando o Frame Grabber, vá até o painel “Settings” e arraste as barras de servo para alterar os valores

    • Em um terminal, digite “sv <servo-id> <servo-value>” para configurar os servos, por exemplo:

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

    • my_cal.left_mid = <valor do servo 0>

    • my_cal.righ_mid = <valor do servo 1>

  • Agora você precisa encontrar o sinal das direções

    • Olhando o spoonBot por trás (colher voltada para você), tente diminuir o número do servo 0, que deve ser a roda esquerda

      • se o servo girar no sentido horário / para trás (em 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 deve ser a roda direita do ponto de vista do spoonBot)

      • se o servo girar no sentido horário / para trás (em 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

    • Geralmente, um servo deve ser definido como negativo!

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

    • Min deve ser o menor valor que empurra a colher para baixo e, portanto, inclina o spoonBot para frente

      • Defina spoon_down de acordo

    • Max é geralmente 255 e deve posicionar o spoonBot olhando o mais para cima possível

      • Defina spoon_up de acordo

    • Middle é o valor que deixa o servo nivelado

      • Defina spoon_mid de acordo

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

Uma vez concluída a calibração, recompile o projeto e GRAVE (FLASH) a CMUcam3. O spoonBot primeiro passará por uma sequência de movimentos programados para garantir que os servos estão configurados corretamente. Em seguida, o spoonBot aguardará o pressionar de um botão para começar a rastrear uma cor. Um texto é exibido pela porta serial notificando você sobre os vários estágios de operação.

O movimento programado deve ser o seguinte:

  • Ficar Parado

  • Olhar para Baixo

  • Olhar para Cima

  • De Volta à Posição Central

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

  • Girar no Sentido Anti-Horário

  • Led vermelho apagado enquanto a câmera se prepara

  • Led vermelho acende quando pronto para rastrear

Se isso parecer correto, tente segurar um objeto de cor viva a alguns centímetros na frente da câmera e depois pressione o botão. À medida que você afasta o objeto, o spoonBot deve girar em direção a ele. Use objetos de cores vivas que sejam o mais uniformes possível em cor. Um objeto como um pano vermelho vivo funcionaria bem, já que reflete muito pouca luz (além do vermelho puro). Certifique-se de que há iluminação suficiente na sala. Tente capturar um quadro para ver como estão as condições.

Nota: Se você deseja desabilitar os servos sem desconectá-los, remova o jumper de alimentação dos servos (servo-power-jumper).