ccc_hello_world


Im letzten Kapitel hast du die wichtigsten Grundlagen für das Programmieren für Pixy2 gelernt. 

Ziel dieses Kurses ist es, Pixy2 hinter einem Objekt her fahren zu lassen. Dafür muss Pixy2 das Objekt kennen und erkennen. Die durch Pixy2 verarbeiteten Informationen müssen durch den ESP32 weiterverarbeitet werden. 

Durch das Beispielprogramm ccc_hello_world kannst du auf deinem seriellen Monitor sehen, welche Informationen Pixy2 an den ESP32 weitergeben kann, wenn es Objekte erkennt.


1. Öffne wie auf der letzten Seite das Testprogramm in Arduino unter Datei -> Beispiele -> Pixy2 -> ccc_hello_world :

CCC Demo öffnen

Bild: ccc_hello_world Demo öffnen Screenshot
Quelle: BBS2 Wolfsburg


Es sollte sich folgendes Arduino Programm öffnen:

//
// begin license header
//
// This file is part of Pixy CMUcam5 or "Pixy" for short
//
// All Pixy source code is provided under the terms of the
// GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
// Those wishing to use Pixy source code, software and/or
// technologies under different licensing terms should contact us at
// cmucam@cs.cmu.edu. Such licensing terms are available for
// all portions of the Pixy codebase presented here.
//
// end license header
//

#include <Pixy2.h>

// This is the main Pixy object 
Pixy2 pixy;

void setup()
{
  Serial.begin(115200);
  Serial.print("Starting...\n");
  
  pixy.init();
}

void loop()
{ 
  int i; 
  // grab blocks!
  pixy.ccc.getBlocks();
  
  // If there are detect blocks, print them!
  if (pixy.ccc.numBlocks)
  {
    Serial.print("Detected ");
    Serial.println(pixy.ccc.numBlocks);
    for (i=0; i<pixy.ccc.numBlocks; i++)
    {
      Serial.print("  block ");
      Serial.print(i);
      Serial.print(": ");
      pixy.ccc.blocks[i].print();
    }
  }  
}




2. Was macht dieses Beispielprogramm?

Wie du erkennen kannst, ist der Beginn und die setup()-Funktion unverändert geblieben. 


Die wichtigste Anweisung in diesem Beispielprogramm ist die Folgende:

pixy.ccc.getBlocks();

Mithilfe dieser Anweisung bekommt Pixy2 den Auftrag, über die Anwendungsprogrammierschnittstelle Color Connected Components (kurz ccc) nach Objekten mit der ihm beigebrachten Farbsequenz zu suchen. 


Wenn Pixy2 ein oder mehrere Objekte mit bekannter Farbsequenz erkennt, enthält pixy.ccc.numBlocks die Anzahl der erkannten Objekte. Wenn ccc.numBlocks also nicht den Wert null enthält, werden für jedes einzelne erkannte Objekt die bekannten Informationen auf dem seriellen Monitor ausgegeben.


if (pixy.ccc.numBlocks)
  {
    Serial.print("Detected ");
    Serial.println(pixy.ccc.numBlocks);
    for (i=0; i<pixy.ccc.numBlocks; i++)
    {
      Serial.print("  block ");
      Serial.print(i);
      Serial.print(": ");
      pixy.ccc.blocks[i].print();
    }
  }  
}


Über pixy.ccc.blocks[i].print() werden für jedes erkannte Objekt (i) bekannte Informationen wie Position und Größe ausgegeben. 


Auf deinem seriellen Monitor wird in etwa so etwas zu sehen sein: 

serieller Monitor

Bild: Ausgabe auf seriellem Monitor Screenshot
Quelle: BBS2 Wolfsburg

"Detected 1" bedeutet, dass Pixy2 ein Objekt erkannt hat. Durch "sig: 1" wird deutlich, dass das erkannte Objekt die Farbsequenz hat, die Pixy2 unter 1  beigebracht wurde. Außerdem kannst du sehen, in welchem x und y Abschnitt des aufgenommenen Bildes durch Pixy2 das Objekt erkannt wurde und wie breit und hoch, also auf welcher Fläche das Objekt erkannt wurde. 


Diese Informationen werden uns helfen, den T1 bald zum Fahren zu bringen. 


3. Um das Programm nun auszuführen, musst du es wieder auf deinen ESP32 hochladen. 

Nun musst du noch den seriellen Monitor öffnen und einstellen, um ihn zu benutzen. 


In Arduino öffnest du den seriellen Monitor unter Werkzeuge -> Serieller Monitor:

Seriellen Monitor öffnen

Bild: Seriellen Monitor in Arduino öffnen
Quelle: BBS2 Wolfsburg


Wenn der serielle Monitor geöffnet ist, musst du außerdem die Symbolrate einstellen:

Symbolrate einstellen
 

Bild: Serielle Monitor Symbolrate einstellen
Quelle: BBS2 Wolfsburg

Die Symbolrate ist auf 115200 Baud einzustellen.



Wenn du nun das Programm auf den ESP32 geladen hast und den seriellen Monitor wie beschrieben eingestellt hast, sollte es ungefähr so aussehen, wenn du ein Objekt, das du Pixy2 beigebracht hast, vor die Kamera hältst:


 

 

Video: ccc_hello_world Demo 
Quelle: BBS2 Wolfsburg


Zuletzt geändert: Montag, 28. Juni 2021, 19:08