Für die Befestigung der Kamera auf dem Pi2Go-Roboter eignet sich am besten der RPI Camera Kit, der unter Pi2Go-Zubehör zu finden ist. Dieser enthält zusätzlich zwei Servomotoren, mit welchen die vertikale und horizontale Position der Kamera geändert werden kann. |
Eine Anleitung zum Zusammenbauen findet man hier.
|
Der horizontale Servomotor muss am s12 (der erste von Innen) angeschlossen sein, der braune Kabel rechts. Der vertikale Servomotor ist am s13 angeschlossen sein, braun rechts. |
Beispiel 1: Bilder aufnehmen und auf dem PC anzeigen (remote Modus)
|
|
Erklärungen zum Programmcode:
jpeg = camera.captureAndTransfer(width, height): nimmt ein Bild mit der geg. Pixelauflösung auf, transferiert es auf den remote Computer und gibt es als String im JPEG Format zurück | |
img = readImage(jpeg):
wandelt ein Bild als JPEG String in eine in GPanel verwendbare Bitmap um |
|
image(img, 0, 0):
stellt das Bild im Grafikfenster an der Position 0, 0 dar |
Beispiel 2: Kamera mit Servomotoren positionieren (remote und autonomer Modus)
|
Erklärungen zum Programmcode:
horzMotor.setPos(pos): positioniert Kamera mit dem horizontalen Servomotor (pos in Grad) |
Beispiel 3: Roboter und Kamera werden remote gesteuert (remote Modus) Für die Bewegung des Roboters werden folgende Tasten verwendet:
|
Erklärungen zum Programmcode:
c = getKeyCode(): liefert den Code der gedrückten Taste | |
if c == 32: takeSnapshot(): Falls die Leertaste gedrückt wurde, wird ein Bild aufgenommen, zum Computer transferiert und auf dem Computerbildschirm angezeigt. |
Beispiel 4: Videoüberwachung
|
Erklärungen zum Programmcode:
pair[i] = takeSnapshot(): zwei nacheinander aufgenommene Bilder | |
c0 = pair[0].getPixelColor(x,y) | |
c1 = pair[1].getPixelColor(x,y) | |
r = abs(c0.getRed() - c1.getRed()) | |
if count > (width * height) // 10 |
Bemerkung: Ein mit makeGPanel (Size(800, 600)) erzeugtes Grafikfenster ist 801 Pixel breit und 601 Pixel hoch, da beim Zeichnen im GPanel auch der erste und der letzte Pixel dargestellt wird. Eine Bitmap-Grafik 800x600 hat dagegen genau diese Pixelgrösse. Dadurch wird bei den dargestellten Bildern am Rand ein weisses 1 Pixel breites streifen sichtbar. Um das zu vermeiden, kann man mit makeGPanel(Size(width - 2, height - 2)) ein kleineres Grafikfenster erzeugen und das Bild mit image(img, -1, -1) so positionieren, dass kein leeres Pixel entsteht.
Beispiel 5: Kameraaufnahmen auf dem Raspi speichern (autonomer Modus)
|
Erklärungen zum Programmcode:
jpeg = camera.captureAndSave(320, 240, filename): Erstellt ein Bild und speichert es auf dem Raspi unter angegebenen Dateinamen |