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!
Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1433
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Dirk Fox » 27 Jan 2015, 00:08

Hallo Helmut,
hamlet hat geschrieben:Charmed Labs hat eine neue PixyMon-SW (2.0.4) samt neuer Pixy-Firmware (2.0.5) herausgebracht.
das ist ja großartig! Danke für das Posting!
Perfektes Timing für Teil 2 des ft:pedia-Beitrags. Werde mich umgehend um ein Treiber-Update kümmern...

Beste Grüße,
Dirk

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1433
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Dirk Fox » 27 Jan 2015, 22:30

Hallo Helmut,

vielleicht sollten wir mit dem Update der Pixy noch ein paar Tage warten - im Wiki-Forum (http://cmucam.org/projects/cmucam5/boards/9) wird von dem einen oder anderen Problemchen berichtet (Signatur 7 funktioniert nicht, Sendung der Signaturen bricht ab, ...). Natürlich kann man auch zurück auf die letzte stabile Firmware-Version, aber ich vermute, dass von Charmed Lab in Kürze eine korrigierte Version zum Download bereitgestellt wird.

Gruß, Dirk

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 28 Jan 2015, 18:31

Hallo Dirk,
ja, das hört sich vernünftig an. Wir sollten lieber auf einen Bugfix warten.
Morgen kann ich meine Pixy abholen (-;
Beste Grüße,
Helmut

Benutzeravatar
DirkW
Beiträge: 353
Registriert: 10 Nov 2014, 16:16
Wohnort: Bad Schwartau
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 30 Jan 2015, 14:06

Hallo Helmut,

schön, das du dich für die Pixy Cam entschieden hast. Du wirst nicht enttäuscht sein.
Dirk Fox hat beim Treiber ganze Arbeit geleistet.;)

In der Anwendung ist die Pixy der TXT Cam bei dem gleichzeitigen Erkennen
von vielen Objekten sogar überlegen. Auch das Anlernen von Farben ist dort besser gelöst.

Viele Grüße
Dirk

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 01 Feb 2015, 19:40

Hallo,
Meine Pixy ist da. Schickes Teil, einfach zu bedienen und super dokumentiert. Dank Dirks Treiber konnte ich sofort loslegen, Danke dafür! Die Pixy scheint nicht sonderlich lichtstark zu sein. Man braucht schon eine wirklich helle Beleuchtung. Eventuell ist das dem wirklich guten IR Filter geschuldet. Bei anderen Kameras ist der oft saumäßig und die Farben sind dann entsprechend flau.
Ich hab mir mal die i2c-Kommunikation zwischen dem TX (4.1.1) und der Pixy (2.0.5) angeschaut: maximal 5 Worte/ms
  • DieTX-400kHz-i2c-clock-Frequenz liegt bei guten 300kHz
  • Nach jedem Wort (~56µs) legt der TX eine Pause von ~40µs ein
  • Nach 5 Worten wartet der TX bis zur nächsten vollen Millisekunde. Die zweite Hälfte des 1ms-TX-Taktes ist ja der Applikation vorbehalten.
  • => Also maximal 1/50Hz * 5000 words/s / 7words/block = 14 blocks/frame … evtl. weniger bei ordenlich CPU Last. Weniger als die erwarteten 50 blocks/frame aber 14 Blöcker pro Frame sind für die meisten Anwendungen mehr als genug.
Dirk, noch ein paar Anmerkungen zum Treiber:
  • Der Treiber is 'ne Riesen-Hilfe. Super Dokumentation!
  • Pixy_ReadDetectedBlocks: Wenn ein Frame mehr als 14 Blöcke enthält, d.h. kein Null-Block empfangen wird, liest die Funktion über die Framegrenze hinaus die Blöcke vom nächsten Frame ein, falls maxBlocks groß genug ist. Hier könntest du noch eine Check der Framegrenze (ein zusätzliches 0xaa55 vor dem Block-Sync-Word: 0xaa55+0xaa55 oder 0xaa55+0xaa56) einbauen und dann abbrechen.
  • Pixy_GetNextBlockChk: Hier könntest du den Check-Mechanismus noch optimieren. Ich weiß nicht welche Optimierungen RoboPro anwendet, aber ich vermute, dass RoboPro die gelben Datenpfade bei jeder Eingangsänderung bis zum Ende durchevaluiert. Wenn dem so ist, führt die Funktion 5*4 Additionen und 1+5 Subtraktionen also insgesamt 26 Operationen zur Berechnung der Checksumme aus. Effizienter wäre es dann die eingelesenen Check-Summe/Werte mit 6 Plus/Minus-Befehlen in einer lokalen Variable zu (hoffentlich) Null aufzusummieren. Was auch geht, ist die Berechnung einfach in eine Funktion auszulagern, die von einem blauen Sequenz-Pfad durchlaufen und auch erst dann evaluiert wird. Ob das unbedingt viel bringt? Naja, schaden kann’s nicht. Bei fiesen komplexen floting-point Operationen lohnt das auf jeden Fall.
  • Pixy_BlockSync: Müsste diese Funktion nicht Pixy_FrameSync oder Pixy_FirstBlockOfFrameSync heißen?
Beste Grüße,
Helmut

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1433
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Dirk Fox » 01 Feb 2015, 21:38

Hallo Helmut,

danke für Deine Rückmeldung zum Pixy-Treiber, Deine Messungen und Verbesserungsvorschläge!
Die Optimierung der Checksummenberechnung baue ich gleich ein. Ich arbeite gerade an einer Treiberversion, die auch ColorCodes erkennt... kommt in Kürze.

Wenn ich von Deinen Messungen ausgehe, komme ich sogar nur auf 12 (statt der von mir überschlagenen max. 50) Blöcke pro Frame, die der TX empfangen kann: ein Block hat mit den beiden Sync-Worten acht Worte/Block, denn die beiden Sync-Worte schickt er nach meinen Tests vor jedem Block (in der Dokumentation hatte ich das auch erst anders verstanden, und codierungstechnisch ist es Unfug). Hast Du unterschiedliche Syncs auf dem Bus bei Frames und Blöcken erkannt?

Georg, Dirk und ich haben eine Weile überlegt, wie wir ein Frame-Ende (außer an leeren Blöcken) erkennen können, da wir eine Signalisierung des Frame-Beginns oder -Endes nicht feststellen konnten. Eine Idee war, zu prüfen, ob im nächsten eingelesenen Block ein kleinerer Farbcode (die werden der Reihe nach abgearbeitet) oder ein größeres Objekt mit gleichem Farbcode (die werden sortiert übermittelt) steht. Das schien uns in dem zeitkritischen Treiber aber zu aufwändig, also haben wir darauf gesetzt, dass es bei einem hinreichend "schlanken" Treiber (ohne Checksummen-Prüfung) und einer geeignet eingestellten Mindest-Objektgröße bei den meisten Anwendungen nicht vorkommen wird, dass die Daten eines neuen Frames dazwischengeraten. (Aus diesem Grund ist der Name von "Pixy_BlockSync" tatsächlich auch so gemeint: die Pixy beginnt nämlich einfach loszusenden - nicht nur mitten in einem Frame, sondern sogar mitten im Block...)

Hast Du mit der neuen Firmware keine Übertragungsprobleme? Im Pixy-Forum klang das an... und die "Signatur 7" funktioniert wohl nicht.
(Aber das wird sicher bald per Update behoben.)

Beste Grüße,
Dirk

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 01 Feb 2015, 22:16

Hallo Dirk,
Ich arbeite gerade an einer Treiberversion, die auch ColorCodes erkennt... kommt in Kürze.
fein da bin ich gespannt.
denn die beiden Sync-Worte schickt er nach meinen Tests vor jedem Block (in der Dokumentation hatte ich das auch erst anders verstanden, und codierungstechnisch ist es Unfug). Hast Du unterschiedliche Syncs auf dem Bus bei Frames und Blöcken erkannt?
Das würd ich als Bug bezeichnen. Schau ich mir an. Hab leider keinen Logic-Analyzer sondern nur ein billiges China Speicherscope. Aber das müsste zu erkennen sein: Zwei klare Objekte und einfach Wörter zählen, evtl. noch in die Syncs identifizieren. Die Messung ginge auch mit dem TX, der nun wohl doch CSV Daten im Offline Betrieb aufnimmt. Oder ich häng meinem mbed dran und schau über die Serielle rein.
"Pixy_BlockSync" tatsächlich auch so gemeint: die Pixy beginnt nämlich einfach loszusenden - nicht nur mitten in einem Frame, sondern sogar mitten im Block..
Ahhh! Das ist doch Schweinkram!
Hast Du mit der neuen Firmware keine Übertragungsprobleme? Im Pixy-Forum klang das an... und die "Signatur 7" funktioniert wohl nicht.
(Aber das wird sicher bald per Update behoben.)
Bislang sind mir noch keine Übertragungsprobleme aufgefallen. Signatur 7 funktioniert, glaub ich, wirklich nicht. Bei mir werden die Farbsignaturen sauber im Pixy's Flash gespeichert. Hoffentlich ist Reis Pixy nicht kaputt.
Beste Grüße,
Helmut

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1433
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Dirk Fox » 01 Feb 2015, 22:44

Hallo Helmut,
hamlet hat geschrieben:Das würd ich als Bug bezeichnen.
das sehe ich auch so.
hamlet hat geschrieben:Schau ich mir an.
Super. Ich kann mich irren - vielleicht waren meine Testroutinen zu langsam und ich war schon mit einem Block am Frame-Ende. Ich könnte die Sync-Worte mal zählen und für jedes ein Lämpchen anschalten... alles andere (Online-Mode, TX-Display oder gar I2C-Display) kostet zu viel Laufzeit.
hamlet hat geschrieben:Die Messung ginge auch mit dem TX, der nun wohl doch CSV Daten im Offline Betrieb aufnimmt.
Wenn Du Dich da auf mein gestriges Posting beziehst: das habe ich eben korrigieren müssen... Bei meinem Test des Offline-Mode standen die Daten aus dem Online-Mode-Tests noch im .csv-Speicher... peinlich. Da habe ich mich selbst ausgetrickst.
hamlet hat geschrieben:Ahhh! Das ist doch Schweinkram!
Yep. Die haben alles auf Tempo getrimmt: da kommt einfach ein Daten-Burst. Wenn man den I²C-Bus nicht ständig reserviert hält (ganz hässlich, habe ich in keinem meiner bisherigen Treiber machen müssen), verliert man Daten. Möglicherweise verhält sich Dein Firmware-Update besser - schließlich soll damit ja sogar eine Einstellung von Parametern via seriellem Interface möglich sein. Und dafür muss es einen "Rückkanal" geben.
hamlet hat geschrieben:Bislang sind mir noch keine Übertragungsprobleme aufgefallen.
Dann werde ich jetzt auch mal "upgraden". Und schauen, was die neue Version noch so alles für die nächste Treiberversion hergibt...

Beste Grüße und viel Freue mit Deiner Pixy,
Dirk

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 01 Feb 2015, 23:35

Hallo Dirk,
Hab mein neues Spielzeug nochmal aufgebaut und bits auf dem Scope geklimmpert :
  • Die Pixy auf zwei rote ft-Platten angelernt => Zwei eindeutige Objekte mit ColorCode 1 pro Frame
  • Das Hauptprogramm Deines Treibers gestartet
  • Nach 2-fachem Tastendruck sehe ich fast immer 17 Worte. Manchmal mehr. Wahrscheinlich Pixys NewFrame-Grätsche
    • Das erste ist merkwürdigerweise immer Null
    • dann folgt eine kurze Pause ~140µs ... einmal raus aus Pixy_ReadDetectedBlocks die Null ausgeben und wieder zurück in Pixy_ReadDetectedBlock
    • dann kommen die zwei Frame Syncs 0xaa55. Leicht zu identifizieren: 101010110101010
    • dann die CheckSumme und der ColorCode: Die 1 ist auch einfach zu erkennen
    • nach x,y,h,w kommt nur 1 Sync Wort 0xaa55 ... in welchem Film war das noch: "Aber nur einen Ping!"?
    • dann wieder checkSumme und der leicht zu identifizierende ColorCode 1
    • dann wieder x,y,h,w und am Ende die Null des Frame-Endes
  • Also "Null" + "FrameSync" + 2*"BlocksSyncIncluded"7 + "Null" = 17
=> Zumindest mit der 2.0.5 läuft der Sync so wie dokumentiert.
Beste Grüße,
Helmut

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1433
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Dirk Fox » 02 Feb 2015, 00:25

Hallo Helmut,

die Pixy raubt uns noch den Schlaf ;-)
hamlet hat geschrieben:Zumindest mit der 2.0.5 läuft der Sync so wie dokumentiert.
Während Du Dein Scope gequält hast, habe ich ein Testprogramm geschrieben, das bei einem bzw. zwei aufeinanderfolgenden Sync-Worten ein Lämpchen einschaltet. Ist bei trägem Glühdraht und langsamem Auge kein toller Test, aber tatsächlich: das "Ein-Sync-Wort"-Lämpchen leuchtet (bei ca. 10 Objekten vor der Pixy-Linse) gefühlt "unterbrechungsfrei" (also mit fast maximaler Helligkeit), das "Zwei-Sync-Worte"-Lämpchen glimmt kaum sichtbar: Also stimmt die Spezifikation offenbar auch bei meiner (älteren) Firmware-Version.

Fein! Vielen Dank für Deine Unterstützung - dann mache ich mich mal an die Treiberoptimierung...

Beste Grüße,
Dirk

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 03 Feb 2015, 22:00

Hallo Dirk,
ich habe gerade in den Pixy 2.0.5 Sourcen gestöbert und die Funktion gefunden, die in der i2c ISR über einen Aufruf von TransmitQ::read() als callback gerufen wird, um die TransmitQueue wieder aufzufüllen falls diese leerläuft. ... Hoffentlich, ich bin mir aber fast sicher. Die Pixy Entwickler dokumentieren ihren code recht sparsam. Ich hab die 3 interessanten Stellen mit einem // PIXYYYYYYYYYYYYYY markiert.

Im Prinzip könnte man beim FrameSync einen 20ms Timer aufziehen, dann die Blöcke bis zur Null-Terminierung lesen und danach einfach warten, bis der Timer abläuft. Mit etwas Glück liest man dann direkt wieder einen neuen FrameSync (sehr wahrscheinlich mit einem Null-Wort davor, siehe unten) vom i2c-Bus. So könnte man dem TX bei nur wenigen Objekten evtl. etwas Luft für andere Sachen verschaffen.

Beste Grüße,
Helmut

Code: Alles auswählen

uint16_t Blobs::getBlock(uint8_t *buf, uint32_t buflen)
{
    uint16_t *buf16 = (uint16_t *)buf;
    uint16_t temp, width, height;
    uint16_t checksum;
    uint16_t len = 7;  // default
    int i = m_blobReadIndex*5;

    if (buflen<8*sizeof(uint16_t))
        return 0;

// PIXYYYYYYYYYYYYYY  erst kommen die normalen ColorObjects und dann die ColorCodes
    if (m_blobReadIndex>=m_numBlobs && m_ccMode!=DISABLED)
        return getCCBlock(buf, buflen);

// PIXYYYYYYYYYYYYYY  Alle ColorObjects abgerufen? Dann einfach mal 2 Nullwörter in die TxQ schreiben. 
// PIXYYYYYYYYYYYYYY  Naja ... Das sieht nur so aus. Tatsächlich ist es nur ein Null-Wort. Der Rückgabewert 2 (byte) zeigt
// PIXYYYYYYYYYYYYYY  der Transmit-Queue nämlich lediglich ein Nullwort an. Vergleiche auch das return am Funktionsende.
// PIXYYYYYYYYYYYYYY  Da dieser callback beim Sende-ACK gerufen wird, ist die Wahrscheinlichkeit jedoch hoch,
// PIXYYYYYYYYYYYYYY  dass gleich noch ein Nullwort in die Transmit-Queue geschrieben wird. 
// PIXYYYYYYYYYYYYYY  Das erklärt auch das merkwürdige Nullwort am Anfang des Frames bei meinem Test.
    if (m_mutex || m_blobReadIndex>=m_numBlobs) // we're copying, so no blocks for now....
    {	// return a couple null words to give us time to copy
        // (otherwise we may spend too much time in the ISR)
        buf16[0] = 0;
        buf16[1] = 0;
        return 2;
    }

    if (m_blobReadIndex==0)	// beginning of frame, mark it with empty block
    {
        buf16[0] = BL_BEGIN_MARKER;
        len++;
        buf16++;
    }

    // beginning of block
    buf16[0] = BL_BEGIN_MARKER;
    
// PIXYYYYYYYYYYYYYY  Ab hier wird ein kompletter Block in die TxQueue geschrieben
// PIXYYYYYYYYYYYYYY  => es werden also immer komplette Blöcke ausgegeben! 
// PIXYYYYYYYYYYYYYY Keine New-Frame-Grätsche (FrameSync mitten im Block) mehr in der 2.0.5 FW
// PIXYYYYYYYYYYYYYY getCCBlock schreibt ebenfalls komplette Blöcke
    // model
    temp = m_blobs[i];
    checksum = temp;
    buf16[2] = temp;

    // width
    width = m_blobs[i+2] - m_blobs[i+1];
    checksum += width;
    buf16[5] = width;

    // height
    height = m_blobs[i+4] - m_blobs[i+3];
    checksum += height;
    buf16[6] = height;

    // x center
    temp = m_blobs[i+1] + width/2;
    checksum += temp;
    buf16[3] = temp;

    // y center
    temp = m_blobs[i+3] + height/2;
    checksum += temp;
    buf16[4] = temp;

    buf16[1] = checksum;

    // next blob
    m_blobReadIndex++;

    return len*sizeof(uint16_t);
}
Zuletzt geändert von hamlet am 07 Feb 2015, 18:26, insgesamt 1-mal geändert.

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 07 Feb 2015, 18:25

Hallo,
ich hab mein obiges Posting aktualisiert
Beste Grüße,
Helmut

funmca
Beiträge: 102
Registriert: 03 Jan 2013, 18:54
Wohnort: Hannover
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von funmca » 08 Feb 2015, 13:09

Hallo Ihr lieben Tüftler!

Kommt man tatsächlich an das Programm in der Pixy ran? Wie ? Oder ist das in der Pix Mon irgendwie und wird immer hochgeladen?

Gruß Marco
;-)

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 08 Feb 2015, 14:40

Hallo Marco,
Das ist halt der große Vorteil eines Open Source Projektes:
http://www.cmucam.org/projects/cmucam5/ ... ource_code
Beste Grüße,
Helmut

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 13 Feb 2015, 18:22

Hallo Pixy-Fans,
es gibt wieder eine neue Firmware (2.0.8) + PixyMon-App(2.0.6):
http://cmucam.org/projects/cmucam5/files and http://cmucam.org/projects/cmucam5/wiki/Latest_release Beste Grüße,
Helmut

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 13 Mär 2015, 22:54

Hallo Pixy-Fans,

unter folgendem Link findet ihr ein paar Bilder meines ersten Pixy-TX-Roboters, dessen Programm, den Treiber auf dem das Programm basiert und ein Video, das den Roboter in Aktion zeigt:
Pixy doesn't like Lego ... Program+Driver
Funktioniert noch nicht ganz perfekt, da die Pixy-Cam ohne Studio-Beleuchtung ganz schön zickig bei der Farberkennung sein kann. Der Treiber ist dokumentiert, das Programm leider nicht. Es ist hoffentlich auch so verständlich.
Der Treiber unterstützt Color Codes, erlaubt es die Servos anzusteuern und sollte nun nach einigen Tests und Fixes stabil laufen.
Viel Spaß damit.

Beste Grüße,
Helmut

Benutzeravatar
DirkW
Beiträge: 353
Registriert: 10 Nov 2014, 16:16
Wohnort: Bad Schwartau
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 14 Mär 2015, 09:43

Hallo Helmut,

tolles Video. Schöne Idee die Pixy-Kamera über den Servo zu steuern.
Was mir gefällt, ist das die Objekterkennung gut funktioniert. :D

Viel Grüße
Dirk

Wolf
Beiträge: 42
Registriert: 05 Dez 2014, 16:04
Wohnort: Erlangen

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von Wolf » 14 Mär 2015, 10:12

Hallo,

@hamlet:
hamlet hat geschrieben:nach x,y,h,w kommt nur 1 Sync Wort 0xaa55 ... in welchem Film war das noch: "Aber nur einen Ping!"?
Es ist der Film "Jagd auf roter Oktober" mit Sean Connery nach dem Roman von Tom Clancy.

Gruß
Wolfgang
Damit das Mögliche entsteht, muss immer wieder das Unmögliche versucht werden.
(Hermann Hesse)

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

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von hamlet » 15 Mär 2015, 08:38

Hallo,
ich habe gerade eine interessante Funktion der Pixy entdeckt. Man kann die Pixy in der PixyMon-Shell in einen lichtempfindlicheren „low ambient light“-Modus versetzen:

Code: Alles auswählen

> help cam_setLightMode
cam_setLightMode(INT8 mode)
Set light mode to compensate for low or high lighting conditions
Parameters:
   mode: one of the following: CAM_LIGHT_NORMAL (0), CAM_LIGHT_LOW (1), CAM_LIGHT_HIGH (2)
Returns:
   0 if success, negative if error
> cam_setLightMode 1
response: 0 (0x0)
Pixy erhöht dann die Belichtungszeit abhängig von der Beleuchtung weit über die sonst maximal verwendeten 20ms und kommt mit wirklich wenig Licht klar. Die Framerate geht dann natürlich entsprechend runter und die Bewegungsunschärfe nimmt zu. Die niedrigere Framerate hat aber einen interessanten Nebeneffekt. Das TestNStress-Beispiel meines Treibers ist plötzlich in der Lage weit mehr als die sonst üblichen 11-12 Objekte pro Frame zu lesen. Bei minimaler Beleuchtung habe ich eine Frame-Periode von bis zu 160ms beobachtet (Parameter „dt“ im TX-Display).

Interessant könnte auch folgende Funktion sein:

Code: Alles auswählen

> help cam_setMode
cam_setMode(INT8 mode)
Set camera mode
Parameters:
mode: 0=25 FPS, 1280x800; 1=50 FPS, 640x400
Returns:
0 if success, negative if error
Es wäre klasse, wenn man die Framerate bei manchen Applikation auf 25Hz halbieren und somit die Anzahl der zum TX übertragbaren Objekte verdoppeln könnte. Das geht aber leider nicht, da die Pixy FW beim Neustart des Blobs-Programms grundsätzlich zurück zum „640x400/50FPS“-Modus wechselt.
Ich hab diesbezüglich eine Anfrage im Pixy-Forum gestellt: http://cmucam.org/boards/9/topics/3528? ... ssage-5647 … Mal schauen.

Eine Liste aller möglichen Befehle der PixyMon-Shell erhält man, wenn man einfach „help“ als Kommando absetzt. Zur Shell-Aktivierung muss man vorher den blauen Stop-Button anklicken.

Beste Grüße,
Helmut

PS:
Danke für die Rückmeldung, Dirk … Aber Im Vergleich zu Deinen perfekt in Szene gesetzten Filmen ist mein Bröckel-Filmchen ja schon eher ein Frechheit (-; Naja, aber das Wichtigste ist ja zu erkennen. Bei mir ist die Qualität übrigens etwas besser wenn ich die 20MB vorher komplett herunterlade.
Ich muss Dir hier auch mal danken, dass Du die Pixy entdeckt und diesen Thread hier angeschoben hast. Die Pixy ist echt eine klasse Erweiterung für den TX.
@Wolfgang Stimmt, Danke! Lange nicht gesehen …

Benutzeravatar
DirkW
Beiträge: 353
Registriert: 10 Nov 2014, 16:16
Wohnort: Bad Schwartau
Kontaktdaten:

Re: Robo TX + I2C-Kamera Objekterkennung

Beitrag von DirkW » 16 Mär 2015, 19:42

Hallo Helmut,

mich begeistert die Funktionalität deines Roboters, die Aufmachung ist da nebensächlich.
Du bist ja schon in die Pixy Codewelt abgetaucht. Hut ab, was du schon alles entdeckt hast,...das ist
halt opensource. ;)

Viel Spass beim forschen und entdecken
Gruß
Dirk

PS.: ...und danke für das Kompliment :)

Antworten