Test: Pixy Cam (cmuCam5) an Arduino

Atmel, PIC, VEX, Fischertechnik

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5235
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Test: Pixy Cam (cmuCam5) an Arduino

Beitragvon HaWe » 9. Feb 2018 16:33

Test: Pixy Cam (cmuCam5) an Arduino:

(Die Original-Websites sind IMO extrem unübersichtlich strukturiert und quer-verlinkt.
Hier die entsprechenden Schritte in einer mehr oder weniger geradlinigen Reihenfolge:)

Einrichtung, Installation:

Start:
Übersicht: http://cmucam.org/projects/cmucam5
Wiki Startseite: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)

Treiber- und Lib-Download & Installation
Website:http://cmucam.org/projects/cmucam5/wiki/Latest_release
Pixy noch nicht anschließen.
Download PixyMon version (Installer) : http://cmucam.org/attachments/download/1246/pixymon_windows-2.0.9.exe
Docs: http://cmucam.org/projects/cmucam5/wiki/Installing_PixyMon_on_Windows_Vista_7_or_8
Start Installer.
Nach Installation: Pixy per USB an Computer anschließen

PixyMon starten:
lokales Startmenü->Programme->PixyMon
Versionen unter Help->About:
PixyMon version 2.0.9
Pixy firmware version 2.0.19 general build (queried)
Falls neue FW benötigt:
Pixy firmware 2.0.19 : http://cmucam.org/attachments/download/1317/pixy_firmware-2.0.19-general.hex
Docs: Pixy firmware installation docs: http://cmucam.org/projects/cmucam5/wiki/Uploading_New_Firmware

farbiges Objekt anlernen:
http://cmucam.org/projects/cmucam5/wiki/Teach_Pixy_an_Object_2
Wähle ein farbiges Objekt zum Farben-Anlernen.
(Nach Anschließen warten, bis vordere LED aus ist.)
Button oben an der Pixy gedrückt halten
Nach ~1sec leuchtet die vordere LED in verschiedenen Farben - wenn sie rot leuchtet, dann Button loslassen.

Das farbige Objekt ca. 15-25 cm zentral vor die Linse halten. Erkennung im PixyMon kontrollieren. Wenn Region erkannt, erneut kurzer Button-Klick.

Anm:
Im "Raw Mode" (Fleisch-Symbol) oder "Cooked mode" (Koch-Symbol) werden Farben trainiert (am besten: Action->set Signature 1..7 mit Zeichenwerkzeug zum Markieren der exakten Farbbereiche)
Helligkeit oder Farben können eingegrenzt oder erweitert werden über Einstellungen (File->Configure oder Zahnrad) -> Schieberegler
Farbcodes speichern/laden unter File->save/load Pixy parameters

Nur über mode "default program" (Haus-Symbol) werden die Daten an Arduino gesendet, sonst nicht!
Man kann im laufenden Betrieb beliebig zwischen den modes umschalten!


Besonderheiten zu "color codes" (Farb-Gruppen):
http://cmucam.org/projects/cmucam5/wiki/Using_Color_Codes
Training im "Raw Mode" (Fleisch-Symbol)!


Pixy mit Arduino verbinden:
wieder hier: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)
Standard-Methode ist Anschluss des Steckers am 6-poligen Arduino-SPI-Header.
weitere Anschlussmöglichkeiten: http://cmucam.org/projects/cmucam5/wiki/Porting_Guide


Arduino libraries and examples

Download Arduino libraries+examples: http://cmucam.org/attachments/download/1157/arduino_pixy-0.1.7.zip
docs: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)
(Anm.: auf dieser Seite finden sich auch die links zu lego-, Raspi- und Python-Treiber/Libs)

Lib installieren wie bei Arduino üblich.

Arduino Sketch Programm laden

Example code auswählen (hello_world.ino ist Standard für SPI).
Pixy in "default program mode" umschalten.

Upload + Serial Monitor öffnen. Jetzt werden die erkannten Farb-Blöcke nacheinander nach Farb-Signatur ausgegeben.

Code: Alles auswählen

Detected (Anzahl ges.):
block 0: sig: 1(-7) x: ...  y: ...  width: ... height: ...
block 1: sig: 1(-7) x: ...  y: ...  width: ... height: ...
block 2: sig: 1(-7) x: ...  y: ...  width: ... height: ...
...



Weitere Interface-/Anschluss-Möglichkeiten (UART, I2C):
http://cmucam.org/projects/cmucam5/wiki/Porting_Guide

Interface-Header: 10-polig - die letzten 4 Pins sind per Standardkabel nicht verbunden
http://i74.photobucket.com/albums/i241/ ... c8d289.jpg
Anschlussstecker an Arduino-SPI Header nur 6-polig
SPI und UART lassen sich mit dem mitgelieferten 6-poligen Flachbandkabel verwenden (SPI allerdings auch nur eingeschränkt),
für I2C benötigt man ein neues, spezielles, 10-poliges Kabel
(nicht im Lieferumfang, keine Bezugsquelle angegeben! :no: )


Beurteilung:

Unsinnig und kritisch:
- die Pixy wird per i2c als Slave betrieben, trotzdem hat sie eingebaute Pullups auf +5V:
Pullups aber hat üblicherweise nur der i2c Master, nicht irgendein Slave (wichtig bei 3.3V MCU sowie ohne oder mit eingebauten, insb. hochohmigen Master-MCU-Pullups)!
- SPI läuft ohne SS-Pin, daher Konflikte und Störungen mit weiteren SPI-Geräten (TFT, SD).
- Kein Beispielcode verfügbar, wie man Pixy mit SPI und SS-Pin verwendet, um weitere SPI Geräte zusätzlich anschließen zu können.
- mit längeren SPI-Kabeln als dem kurzen, mitgelieferten, erhält man zunehmend mehr Übertragungsfehler (erkennbar an Checksum errors).
- die Pixy-SPI-Libs takten offenbar den SPI-Bustakt herunter, per SPI clock divider, was die Übertragungsrate zusammen mit weiteren SPI-Geräten am selben Bus zusätzlich unnützerweise verlangsamt.
- es geht prinzipiell zwar auch per UART, führt aber sogar zu noch viel mehr Übertragungsfehlern als SPI, sodass rund 50% aller Pixy-Daten unleserlich sind (corrupted: Checksum errors! - bei längeren UART-Kabeln sogar noch zunehmend mehr).
- I2c ist sogar noch empfindlicher und fehleranfälliger als UART.
- Checksum errors bei Übertragungsfehlern lassen sich generell nicht programm-mäßig erfassen, z.B. zählen und auswerten:
- Checksum errors tauchen nur als sporadische Meldung im Serial-Monitor auf, wenn der PC zusätzlich per USB am Arduino angeschlosssen wird und der Serial-Monitor aktiviert wurde, das geht aber natürlich nicht bei autonomem Betrieb.

Beurteilung der Detektions-Leistung:
- Farbenerkennung nur in der Nähe in farbneutraler Umgebung, ansonsten extreme Störung durch "ähnliche" Hintergrund- oder Umgebungsfarben
(Beispiel: orange, pink oder magenta gegenüber rot, violett gegen blau, cyan gegen grün, beige oder hautfarben gegen gelb oder orange)
- Farben wie die Lego-Standard-Farben blau + grün werden extrem schlecht erkannt, wenn die Beleuchtung nicht absolut optimal ist (keine Spiegelungen und indirektes, sehr helles Licht von allen Seiten)
- Farbobjekte in Entfernung von über 2m werden ebenfalls sehr schlecht und unzuverlässig erkannt, ganz besonders gilt das für Color Code-Erkennung
- sehr schlecht detektierte+selektierte Color Code Labels, extrem verrauscht: Farbcode Labels wie 1-2-3 werden häufig als 1-2 oder 2-3 verstümmelt, verschwinden komplett, oder erscheinen auch als 1-2-3-1 Artefakte, daher können sie im Programm dann überhaupt nicht zugeordnet werden (im Cooked Mode scheinbar OK, im Default Programm per Arduino dann aber völlig fehlerhaft)
- sehr schlechte Trennung nebeneinander stehender Color Code Labels, oft fälschlich als nur 1 großer Block fehlinterpretiert statt 2er getrennter
- keine Möglichkeit, die "Farben" schwarz und/oder weiß anzutrainieren, daher keine Chance für weiße Rubik's Cube Flächen oder Verfolgung schwarzer Linien
- keine Möglichkeit, Barcodes oder April-Tags zu erkennen
- keine Formenerkennung (Rechtecke vs. Kreise, Dreiecke, Pfeile etc. oder sogar Gesichter)
- völlig ungeeignet, um Altagsgegenstände in einer normalen Wohn-Umgebung eindeutig zu detektieren (Cocacola-,Fanta-, Bier- oder Wein-Flaschen, Tassen, Gläser, Stuhl- oder Tischbeine, und z.B. ein diagonal liegender Buntstift erscheint nicht als schmales Rechteck sondern als großes Quadrat, genau wie ein Buch, ein Karton oder ein Ball).

Bleibt zu ergänzen, dass der Kundensupport von Pixy extrem miserabel ist: Steht irgend etwas nicht in den Übersichtsseiten und man fragt nach, bekommt man zunächst tagelang überhaupt keine Antwort, und wenn man nochmal nachfragt, kommt als Antwort nur ein Link zu dieser Übersichtsseite (wo ja bekanntermaßen die Frage nicht gelöst wurde), oder man bekommt als Antwort: es wäre absolut simpel, man solle es gefälligst selber lösen. "Guter" Kundensupport sieht IMO anders aus.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Zurück zu „allgemeine / Nicht-Lego-Robotik und Elektronik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss