Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Rocky Rover:Sistema de Visão Robótica PixyCam e Arduino 101

Componentes e suprimentos

Arduino 101
× 1
Motor Adafruit / Escudo deslizante V2
× 1
SparkFun Dagu DG102 Chassi do tanque
× 1
Baterias AA
× 1
Cabo USB-A para B
× 1
Pacote de bateria USB Adafruit
× 1
M2.5 Separador com porca e parafuso
× 4
Conectores de bateria JST polarizados macho e fêmea
× 1
Cabeçalho masculino 40 posição 1 linha (0,1 ")
× 1
Jumper Macho / Macho
× 1
Pixy (CMUcam5)
× 1
Pixy Pan-Tilt Kit para Pixy
× 1

Aplicativos e serviços online

Arduino IDE
Blynk

Sobre este projeto





Rover baseado em Intel Arduino 101 com PixyCam!


Os eventos do Hackster Live são fantásticos! A Intel patrocinou nosso evento Hackster Dallas e nos enviou um Intel Arduino 101 para construir Rovers. Obrigado Intel, obrigado Arduino. Aqui está o Rover que construí para o evento.

Construí este dispositivo seguindo este tutorial de Johnathan Hottell. Ele criou alguns vídeos para construir o BLE Rover. E é fácil seguir! Confira aqui. Aqui está o vídeo de Johnathan Hottell.



Eu tenho o Rover com 4 motores, então segui isso.

Depois de construir o Rover e conectá-lo a Blynk. Decidi melhorar a construção e adicionar uma PixyCam. Mudei o suporte da bateria para a frente para poder montar uma câmera panorâmica / inclinada.





PixyCam


PixyCam torna a visão robótica mais fácil. Pixy é um sensor de visão rápida para robótica DIY, é fácil ensinar a Pixy um objeto apenas pressionando um botão. É capaz de rastrear centenas de objetos simultaneamente e fornece apenas os dados que está rastreando.

Decidi rastrear uma Orange Pumpkin.

Estou surpreso como é fácil fazer isso funcionar. Aqui está o link para as instruções para conectar PixyCam ao Arduino. Clique aqui para obter as instruções de montagem do mecanismo de Pan / Tilt. Fico feliz que tenha muitas fotos, muito fáceis de acompanhar. Segui as instruções de configuração e construção, como integrar com o Arduino. Testei seus exemplos.

Aqui está o que descobri sobre a API.





API PixyCam Arduino


Usar Pixy com Arduino é muito simples. Você simplesmente inclui os cabeçalhos SPI e Pixy:
  #include  #include   

E faça uma instância global do Pixy colocando esse pequeno sujeito fora de sua configuração () e loop () funções:
  Pixy pixy;  

O método mais importante na biblioteca Arduino é getBlocks () , que retorna o número de objetos que Pixy detectou. Você pode então olhar em pixy.blocks [] array para obter informações sobre cada objeto detectado (um membro do array para cada objeto detectado). Cada membro do array ( i ) contém os seguintes campos:
  • pixy.blocks [i] .signature O número da assinatura do objeto detectado (1-7 para assinaturas normais)
  • pixy.blocks [i] .x A localização x do centro do objeto detectado (0 a 319)
  • pixy.blocks [i] .y A localização y do centro do objeto detectado (0 a 199)
  • pixy.blocks [i] .width A largura do objeto detectado (1 a 320)
  • pixy.blocks [i] .height A altura do objeto detectado (1 a 200)
  • pixy.blocks [i] .angle O ângulo do objeto detectado, se o objeto detectado for um código de cor.
  • pixy.blocks [i] .print () Uma função membro que imprime as informações do objeto detectado na porta serial

Portanto, é simples falar com Pixy com seu Arduino! Para obter mais informações sobre a biblioteca e API do Arduino, clique aqui. Aqui está o código usado para o Rover. Modifiquei o código BLE original e adicionei o rastreamento de objetos. Durante a configuração:
  void setup () {..... pixy.init (); ....}  

O loop principal é semelhante a este:
  void loop () {...... // lê dados pixy e obtém blocos static int i =0; int j; blocos uint16_t; char buf [32]; int32_t panError, tiltError; blocos =pixy.getBlocks (); // se houver blocos if (blocks) {panError =X_CENTER-pixy.blocks [0] .x; tiltError =pixy.blocks [0] .y-Y_CENTER; panLoop.updatePan (panError); tiltLoop.update (tiltError); pixy.setServos (panLoop.m_pos, tiltLoop.m_pos); i ++; // o quadro atrapalharia o Arduino if (i% 10 ==0) {int trackedBlock =0; sprintf (buf, "% d detectado:\ n", blocos); Serial.print (buf); long maxSize =0; para (j =0; j  maxSize) {trackedBlock =j; maxSize =newSize; }} int32_t followError =RCS_CENTER_POS - panLoop.m_pos; // Tamanho é a área do objeto. // Mantemos uma média dos últimos 8. size + =pixy.blocks [trackedBlock] .width * pixy.blocks [trackedBlock] .height; tamanho - =tamanho>> 3; int forwardSpeed ​​=constrain (400 - (tamanho / 256), -100, 400); int32_t diferencial =(followError + (followError * forwardSpeed))>> 8; int leftSpeed ​​=constrain (forwardSpeed ​​+ diferencial, -400, 400); int rightSpeed ​​=restrição (forwardSpeed ​​- diferencial, -400, 400); motor1-> setSpeed ​​(leftSpeed); // motor esquerdo3-> setSpeed ​​(leftSpeed); motor2-> setSpeed ​​(rightSpeed); // motor esquerdo4-> setSpeed ​​(rightSpeed); largura dupla =pixy.blocks [trackedBlock] .width; if (largura <=5) {} else if (largura <20 &&! executando) {Serial.println ("executando"); motor1-> funcionar (AVANÇAR); motor3-> funcionar (AVANÇAR); motor2-> funcionar (AVANÇAR); motor4-> funcionar (AVANÇAR); executando =verdadeiro; } else if (largura> 80 &&! running) {Serial.println ("running"); motor1-> funcionar (PARA TRÁS); motor3-> funcionar (PARA TRÁS); motor2-> funcionar (PARA TRÁS); motor4-> funcionar (PARA TRÁS); executando =verdadeiro; } else if (width> =20 &&width <=80 &&running) {motor1-> setSpeed ​​(128); motor2-> definirSpeed ​​(128); motor3-> definirSpeed ​​(128); motor4-> definirSpeed ​​(128); motor2-> funcionar (RELEASE); motor4-> funcionar (RELEASE); motor1-> funcionar (RELEASE); motor3-> funcionar (RELEASE); executando =falso; }}}}  

Para executar o Blynk sem o controle da PixyCam, coloque a tampa da lente. Isso fará com que PixyCam não interfira no controle do bot. Se este projeto despertou seu interesse em programar em Arduino ou em usar PixyCam em seu próximo projeto, clique no botão "Respeitar Projeto" e siga-me.

Sinta-se livre para perguntar.

Código

Rocky Rover

Processo de manufatura

  1. Relógio de visão pov do Arduino
  2. Sistema de alarme Arduino:SERENA
  3. Arduino 3D-Printed Robotic Arm
  4. Arduino Power
  5. Braço robótico controlado por Nunchuk (com Arduino)
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE:Óculos de sol que combinam
  8. Persistência da visão
  9. Arduino Apple Watch
  10. Considerações de design de iluminação para sistemas de visão de cirurgia robótica