Robo TX + I2C-Kamera Objekterkennung

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 23 Nov 2015, 23:29

Hallo Andreas, Dirk und Fabi,
Ich habe gerade mal einen Blick auf pixyrobot1.0-1.rpp geworfen.

Ich glaube, dass die unterschiedliche i2c-Übertragungsgeschwindigkeit im Offline- und Online-Mode die Ursache Eures Problems ist.

Pixy analysiert 50 Bilder (Frames) pro Sekunde, d.h. Pixy stellt alle 20ms eine Liste der erkannten Color-Blocks zum Auslesen zur bereit, beginnend mit einer Frame-Start-Synchronisationskennung, zweier 16bit-Worte 0xaa55 bzw. -21931. Die entsprechende Stelle findet Ihr oben in der Funktion "Objekterkennung". Wenn alle Color-Block-Daten ausgelesen sind, beantwortet Pixy alle weiteren Anfragen einfach mit Null-Wörtern bis zur nächsten Frame-Synchronisation.

Im Online-Mode ist die i2c-Übertragung so langsam (ich habe irgendwann mal ein sagenhaftes 16bit Wort alle 10ms gemessen), dass nach Lesen der Daten des ersten Color-Blocks bereits mehrere 20ms Frames vergangen sind. Der TX kann bei der Lesegeschwindigkeit nur deshalb einen kompletten Color-Block einlesen, weil Pixy diese immer vollständig in den i2c-Transferbuffer ablegt. Wenn der TX dann das nächste Wort liest, wartet im Buffer schon wieder eine Frame-Synchronisationskennung. Solange Pixy also ein Objekt detektiert, verbleibt die Funktion "Objekterkennung" immer schön in der linken Schleife.

Im Offline-Mode ist die Situation anders. Dann ist der TX in der Lage bis zu 5 Wörter pro Millisekunde zu lesen. D.h. Die Color-Block-Daten einschließlich der Frame-Synchronisation sind in weniger als 2ms eingelesen. Danach liest der TX für die verbleibenden 18ms des Frames Null-Wörter. Also springt "Objekterkennung" für 18ms in die rechte Schleife und setzt währenddessen alle Ausgänge auf null. Dazu gehört auch der Objekt-Ausgang, der der Funktion "Links Rechts" als Eingang dient. "Links Rechts" schaltet dann die Motoren ab. Die Motoren werden dann also nur für weniger als 2ms in einer 20ms Frame-Periode angesteuert. => 50Hz Brummer

Versucht mal folgendes: Nachdem "Objekterkennung" erfolgreich die beiden Sync-Wörter eingelesen hat, zieht eine Timer-Variable von mindestens 20ms auf und fragt diese in der rechten Schleife ab. Falls der Timer noch nicht abgelaufen ist, geht Ihr direkt zurück zum Start und betretet den Ast, der die Ausgänge zurücksetzt erst wenn der Timer abgelaufen ist. Solange Pixy ein Objekt detektiert, wird der neue Frame-Sync immer vor Ablauf des Timers kommen. Die Ausgänge bleiben dann stabil. Hat Pixy das Objekt verloren, schickt sie dauerhaft Nullwörter, der Timer läuft ab und die Motoren stoppen wie gewünscht.

So, das ist jetzt mal wieder ganz lang und ganz schlau geworden. Hoffentlich stimmt's auch. Probiert's einfach mal aus. Ob der Rest des Programms mit der höheren Update-Rate im Offline-Mode zurechtkommt, mhmm, weiß ich nicht, da könnte es evtl. noch Überraschungen geben.

Beste Grüße,
Helmut

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 24 Nov 2015, 21:48

Hallo zusammen,

ihr habt recht. Der Pixy-Roboter zuckt jetzt nur noch.:(

Ich werde forschen woran es liegt. Bis vor kurzem hat es noch gut funktioniert.
Vermutlich liegt es an zwei Dingen.

Zum einen wurde die PixyMon-Software/Firmware und RoboPro aktualisiert.
Der zweite Grund könnte, wie Helmut bemerkte, ein Timing-Problem sein.

Ich melde mich, sobald ich neue Erkenntnisse habe.

Grüße
Dirk

Robo0815
Beiträge: 3
Registriert: 23 Nov 2015, 20:51

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Robo0815 » 24 Nov 2015, 23:16

Hallo Helmut und Dirk,
Dank schon einmal für die schnelle Reaktion. :)
Ich bin sehr gespannt, ob sich eine Lösung für das Zittern finden lässt.
Werde auch weiter versuchen den offline Betrieb hinzubekommen.
Bin allerdings als Robo-TX-Einsteiger schon relativ überfordert damit.
Gruß
Fabi

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 27 Nov 2015, 17:04

Hallo Fabi,

habe dir eine E-Mail gesendet. Bitte antworten, damit ich dir
die neue "Robo Pro Pixy-Robot" Datei zum testen zusenden kann.

Viele Grüße
Dirk

Robo0815
Beiträge: 3
Registriert: 23 Nov 2015, 20:51

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Robo0815 » 28 Nov 2015, 20:13

Hallo Dirk,
ich habe das Program geladen und ausprobiert....
und es funktioniert... S U P E R!!!!!!!!! :mrgreen:
danke für die schnelle Hilfe, ich freue mich sehr.
Grüße Fabi

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 30 Nov 2015, 19:50

Hallo Fabi,

das freut mich, das es geklappt hat. :D
Ich lade den neuen Treiber hoch.

Viele Grüße
Dirk

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 02 Dez 2015, 19:06

Hallo Dirk,
ich bin ein bisschen neugierig. War's das von mir vermutete Timingproblem?
Lädst Du Dein Update noch hoch?
Beste Grüße,
Helmut

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 03 Dez 2015, 18:02

Hallo Helmut,

stimmt, Timingprobleme. Ich habe den Treiber am Wochenende hochgeladen.
Ist wohl noch nicht freigeschaltet worden. :(

Ich sende dir das Programm einmal zu.

Beste Grüße
Dirk

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 04 Dez 2015, 16:33

Hallo zusammen,

die neue Version 2.0 PixyRobot findet ihr im ftCommunity Download unter:

http://www.ftcommunity.de/data/download ... _v_2.0.rpp

Funkioiniert im RoboPro Download Modus.

Besten Gruß
Dirk

Hompi
Beiträge: 40
Registriert: 01 Nov 2014, 22:23

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Hompi » 20 Dez 2015, 15:01

Hallo zusammen,
hallo Dirk,

hast Du die Pixy auch schon am TXT getestet? Der TXT liefert an der Schnittstelle 3,3 V anstatt 5 V beim TX, könnte das eventuell das Problem sein? Bei mir tut sich leider nichts! :(

Gruss Jürgen

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 20 Dez 2015, 15:31

Hallo Jürgen,

ja, habe ich getestet, die Pixy-Kamera funktioniert beim TXT über die 3,3 Volt bei mir auch nicht.
Du solltest nicht mit externen 5 Volt (USB) über die Pixy-Kamera und dann an den TXT gehen. :o

Die Signale von "CLK" und "Data" betragen dann 5 Volt. (gemessen) Der TXT ist aber nur auf 3,3 Volt ausgelegt.
Die Gefahr besteht, das du den TXT damit beschädigst.
Die Lösung wäre ein Level Shifter 3,3 - 5 Volt.

Siehe meinen letzten Post:

viewtopic.php?f=8&t=3261&p=22339#p22339

Grüße
Dirk

Hompi
Beiträge: 40
Registriert: 01 Nov 2014, 22:23

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Hompi » 20 Dez 2015, 16:25

Hallo Dirk,

danke für Deine Antwort. Das ist aber unschön, das hier keine direkte Kompatibilität besteht.
Warum hat ft beim TXT denn eine andere Spannung genommen als beim TX-Controller?

Gruss Jürgen

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 20 Dez 2015, 16:35

Hallo Jürgen,

das ist eine gute Frage, die habe ich mir auch schon gestellt. :roll:

Gruß
Dirk

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von ski7777 » 02 Jan 2016, 20:13

Vielleich weilviele 5v Geräte auch auf die 3.3V Pegel reagieren und umgekehrt eher weniger. *hust**peng**rauch*
Eine Spannungsquelle 9v auf 5v ist ja schnell gebaut.

Raphael

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 03 Jan 2016, 14:55

Hallo Pixy-Fans,
trotz der Probleme mit der neuen RoboPro 4.2.3 Version ("i2c Probleme in 4.2.3" ) gibt's ein Update meines Treibers: PixyCMU5DriverV2-03.rpp

Läuft sowohl auf dem TX als auch auf dem TXT unter RoboPro 4.2.3.

Ich habe einfach dort wo es nötig war das "Keep Open"-Flag entfernt. Ich hatte auch noch etwas mit einer "Keep Open"-Lese-Sequenz auf einem zusätzlichem Thread und einem i2c-Lese-Puffer probiert, was aber letztendlich langsamer als der einfache Ansatz war. Zusätzliche Threads scheinen auf dem TX Performance-Fresser zu sein.

Performance TX: Immerhin noch neun Color Objects pro Frame mit dem TestNStress-Programm. Bevor ich die Größe der Farbobjekt-Puffer von 16 auf 64 Einträge erhöht habe, waren es noch zehn Objekte pro Frame. Wenn man ein paar der Threads aus TestNStress löscht und auch das TXLoad Objekt entfernt steigt die Rate auf 12 Objekte pro Frame. Ich könnte mir vorstellen, dass Dirks Treiber, der keinen zusätzlichen Thread zum Einlesen der Color Objects im Hintergrund einführt, noch ein wenig performanter ist.

Performance TXT: Bis zu 30 Color Objects pro Frame! … Aber wahrscheinlich erreicht er diese Rate nicht kontinuierlich. Die maximal gemessene Zeit zwischen zwei Frame Synchronisationen (dt im TX/TXT Display, Messinterval=1s) liegt meist bei weitaus mehr als den erwarteten 20ms. Siehe dazu auch "TXT Zeitmessung fehlerhaft" . Auch auf dem Scope zeigen sich ebenfalls gelegentlich Pausen >20ms in der i2c-Kommunikation.

Wer sich traut, kann ja mal diese Pixy Firmware und dazugehörige PixyMon-Applikation ausprobieren:
Sie bietet ein neues Farbmodell (HSV Farbraum inklusive Grautöne), automatische Belichtung und Weißabgleich und kann die Framerate reduzieren damit der TX ein paar Objekte mehr auslesen kann. Ist aber alles noch ein bisschen experimentell und ich übernehme keinerlei Garantie. Wobei ich denke, dass der Pixy Firmware-Update-Mechanismus bei weitem nicht so gruselig ist wie der des TXT. Hab die Pixy FW gefühlt 100-mal geflasht, teilweise mit prompt abstürzendem Schrott, und nie Probleme beobachtet. Der TXT fror beim 4.2.3 Update ein, startete nach dem Power Cycle glücklicherweise neu (mit inkonsistenten Versionen, 4.2.3 für "App" und 4.1.8 für "Sys") und ließ sich schließlich doch noch updaten.

Beste Grüße,
Helmut

PS: Dass der TXT auf seinem Erweiterungsslot nicht mal 3.3V für z.B. einen Level Shifter bietet empfinde ich als schlechten Scherz.

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 07 Jan 2016, 17:32

Hallo Helmut,

habe heute mit deinem Treiber "PixyCMUDriverV2-03.rpp" mit dem TXT und der RoboPro 4.2.3 Version
herumexperimentiert. Es funktioniert. :D

Tolle Arbeit, du hast viele neue Funktionen eingebaut und beschrieben und mir gefallen auch deine Demo-Videos sehr gut.

Beste Grüße
Dirk

Hompi
Beiträge: 40
Registriert: 01 Nov 2014, 22:23

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Hompi » 07 Jan 2016, 17:45

Hallo Helmut, hallo Dirk,

das hört sich ja gut an, super Arbeit. Wie habt Ihr Ihr denn die physikalische Abschaltung der Pixy realisiert. Ich wollte die Pixy über die Stromversorgungsanschlüsse speisen oder bringt dies dann die Spannung (9V) auf die EXT-Schnittstelle des TXT und führt dann eventuell zu einem defekt des TXT ?!
Ich bin mir hier nicht sicher und habe deswegen bis jetzt noch nicht mit dem TXT experimentiert.

Es wäre super wenn Ihr mir hier einen kurzen Tipp geben könnte.

Danke vorab und Gruss

Jürgen

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 07 Jan 2016, 18:10

Hallo Jürgen,

Auf keinen Fall mit den 9 Volt und I2C experimentieren. Das führt zum TXT Tod!!!! :shock:
Ich erstelle einen Schaltplan für dich. Warte einen Moment.

Hier das

"Schaltschema Robo TXT Controller I2C mit 5 Volt Sensoren"

http://1drv.ms/1OdkT1e

Gruß
Dirk

Hompi
Beiträge: 40
Registriert: 01 Nov 2014, 22:23

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Hompi » 07 Jan 2016, 19:45

Hallo Dirk,

danke für die Hilfe und die sehr gute Schaltungsübersicht, das hilft mir weiter.Vielleicht habe ich mich mit den 9 Volt nicht ganz klar ausgedrückt. Meine Überlegung war, die Pixy über den separaten Anschluss an der Pixy mit der Betriebsspannung 9 Volt zu versorgen, siehe Link:

http://cmucam.org/projects/cmucam5/wiki/Powering_Pixy

Dann könnte ich mir zumindest den Spannungsregler von 9V auf 5 V sparen, ansonsten würde ich die Beschaltung gemäß Deiner Grafik vornehmen. Oder habe ich hier einen Denkfehler ?!

Gruss Jürgen

DirkW
Moderator
Beiträge: 546
Registriert: 10 Nov 2014, 16:16

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 07 Jan 2016, 20:17

Hallo Jürgen,

meinst du das USB-Kabel der Pixy-Camera? Das geht auch.
Dann brauchst du den Spannungsregler nicht. Habe ich gerade ausprobiert. ;)

Aber den Level-Shifter brauchst du in jedem Fall.

Gruß Dirk

Antworten