Schlagwort-Archive: RAT

RAT: Neuer Algorithmus Gesichtserkennung

Da das bisherige Verfahren zum Erkennen von Gesichtern doch etwas fehleranfällig war und zu viel Zeit in Anspruch genommen hat, habe ich mir inzwischen einen komplett anderen Ansatz überlegt. Die neue Methode geht davon aus, dass jeder Mensch individuelle, biometrische Merkmale hat, die es erlauben, eine eindeutige Identifikation vorzunehmen. Um diese Identifikation realisieren zu können, durchlaface-recognition1ufe ich folgende Schritte:

RAT: Neuer Algorithmus Gesichtserkennung weiterlesen

RAT: Gesichtserkennung und Stereoskopie

15_2_4Hier abgebildet der 4 Achsen-Robot-ARm von Sainsmart, den ich inzwischen um eine vierte Achse erweitert habe (siehe Fotos unten), der die „Augen“ meines Versuchsaufbaus trägt. Die Bewegung des Arms ist zurzeit deaktiviert, wird später das Tracken eines Objekts ermöglichen.
Zuletzt hatte ich gezeigt, dass es mit OpenCV relativ simpel ist, eine Gesichtserkennung zu realisieren. Jetzt geht es eine kleinen Schritt weiter. Nun soll die Software erkennen, welche konkrete Person gerade vor der Linse ist. Dazu habe ich einen Algorithmus entworfen, der aus dem aktuellen Frame die relevanten Bildteile herausschneidet, normaliusiert und mit einer Datenbank von bekannten Mustern vergleicht. Logischerweise sollte dieser Abgleich performant sein. Momentan habe ich knapp 800 Thumbnails in der Datenbank, die je Identifizierung einmal komplett durchlaufen werden. Deshalb habe ich die Muster und das Live-Bild auf 100×100 Pixel heruntergerechnet. Der Abgleich selbst läuft zurzeit (auf dem PC) in 0.17 Sekunden durch. Noch akzeptabel! Mal schauen, wie später der Raspberry damit klar kommt. Der Vergleich ist reine Mathematik. Das Ergebnis wird anhand des besten Wertes und eines zu erreichenden Schwellwertes entschieden.

face_thumbsDanach gibt es noch ein Zuverlässigkeits-Gate, dass die Fehlerlesungen nach Möglichkeit herausfiltert und so die Erkennung glättet. Die Treffergenauigkeit lässt noch zu wünschen übrig, wird aber mit der Zahl der divergierenden Musterdateien besser. (siehe Video)
Zusätzlich gibt es einen Reorg-Lauf, der dafür sorgt, dass mathematisch redundante Muster entfernt werden.

Stereoskopie

Mein Versuchsaufbau besitzt 2 parallel angeordnete Kameras. Die Idee dahinter ist, dass die Kameras als zusätzliche Möglichkeit zur Orientierung benutzt werden.
Ein Aspekt dabei ist die Stereoskopie. Vereinfacht: Beide Bilder werden miteinander verglichen, die sich durch die unterschiedlichen Perspektiven ergebenden Unterschiede ergeben eine so genannte Depthmask, letztlich ein Bild, dass etwas darüber aussagt, wie weit ein Gegenstand entfernt ist. In diesem Beispiel bedeutet das, je heller eine Fläche, umso näher ist sie an den Kameras.

IMG_0856
4 Axis Arm mit installierten Stereo-Kameras
IMG_0854
Die zusätzliche 5. Achse zum Neigen der Kamera-Ebene

 IMG_0855

Projekt RAT: Der Dreh mit dem Dreh

Heute ist die kontrollierte Drehung auf der Stelle auf der Tagesordnung. Zwar traue ich den Meßwerten des Kompass immer noch nicht ganz, aber davon unabhängig muss ich soundso die entspechenden Methoden in die RAT Software implementieren.
Im Prinzip gibt es zwei diesbezügliche Kommandos, die der Server entgegennimmt:

turn([degrees]) # führt eine relative Drehung um [degrees] Grad durch.
turnto([degrees]) # führt ein absolute Drehung bis zur gewünschten Gradzahl [degrees] aus.

Beide Methoden zeigen am RAT Controller auf dieselbe Methode, wobei ein zusätzlicher Parameter [relative] den Modus bestimmt. Der Unterschied besteht letztlich nur darin, wie der Ziel-Winkel bestimmt wird.
Problem 1: In Abhängigkeit von aktuellem und Ziel-Winkel sollte RAT sich links oder rechts herum drehen. Der Einfachheit halber vertage ich diese Frage zunächst zugunsten von Problem Nr.2.
Problem 2: Abgleich von Drehimpuls und erreichtem Winkel. Ich rechne damit, dass der Zielwinkel nicht aufs Grad genau erreicht wird. D.h. wird reden hier von einem kleinen Regelkreis, der sich dem Ziel-Winkel in Schwingungen nähert und bei Unterschreitung eines definierten Toleranzweres (+-2 Grad?) abschaltet. Dabei zu beachten das Überschreiten des 360 Grad Punktes.
Soweit die Theorie. In der Praxis dreht sich der RAT noch wie ein Kreisel…
Das nehme ich mal besser nicht auf.