Einführung (pdf vom 17.04.07)

Werbung
Seminar im Grundstudium SS2007
Seminar im Grundstudium: Motion-Tracking in der Robotik
Lehrstuhl für Hardware-Software-Co-Design
Universität Erlangen-Nürnberg
[email protected]
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
1
Ziel
Detektieren und
Tracken von Person
Mitdrehen
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
2
Roboteransteuerung
 Problem: Sobald der Roboter seine Richtung ändert, stimmen
das lokale Koordinatensystem des Roboters (+ Laserscanners)
und das golbale Weltkoordinatensystem nicht mehr überein.
 Translation und Rotation des Laserscans bzw. der detektierten
Objekte notwendig
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
3
Systemaufbau
Sehen
Objekterkennung
Bewegungserkennung
Anchoring
Gedächtnis
Bewegungsvorhersage
und
Tracking
Robotersteuerung
Handeln
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
Tracking
4
Laserscanner
 SICK Laser Measurement System 200
 arbeitet nach Phasenlaufzeitverfahren:
Δt⋅c
Distanz=
2
Friedrich-Alexander-Universität Erlangen-Nürnberg
5
Laserscanner
 Rotationsspiegel, der den Lichtstrahl umlenkt
 Ebene von 180° lässt sich abtasten (2D Scan)
Friedrich-Alexander-Universität Erlangen-Nürnberg
6
Objekt-/Bewegungserkennung (Gruppen 1&2)
Teilaufgaben:
•
Laserdaten sammeln:
laser.LaserClient laser =
new laser.LaserClient("131.188.52.173", 4444);
[...]
laser.Scan scan = laser.getScan();
•
Personen finden:
public interface ObjectDetector implementieren
•
Visualisierung mittels GUI
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
7
Objekt-/Bewegungserkennung (Gruppen 1&2)
 package: detection
public interface ObjectDetector
Vector findFeatures( Scan scan ) throws Exception;
 Sucht im Laserscan nach bestimmten Merkmalen (abgeleitet
von abstrakter Klasse Feature)
 z.B. Linien; Kreisbögen; Segment, das sich bewegt hat
Vector findObjects( Vector features ) throws Exception;
 Klassifiziert diese Merkmale als Person oder etwas anders
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
8
Anchoring (Gruppe 3)
Teilaufgaben:
•
Einarbeitung in die Roboteransteuerung: Kurt3D
 Studienarbeit von Igor Kats
 Kommunikation über TCP/IP (Socket)
•
Anchoring von gemessenen und gespeicherten Daten
public class tracking.Anchoring
•
Steuerung des Kurt3D anhand der Daten
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
9
Anchoring (Gruppe 3)
 public class tracking.Anchoring
 Objekte aus dem Laserscan werden mit den Objekten aus
dem Gedächtnis (Memory) assoziiert
 Neue Personen sollen erkannt und ins Gedächtnis
aufgenommen werden
 Bereits erkannte Personen werden “getrackt“
 Für diesen Zweck wird ein Bewegungsmodell eingesetzt
(Gruppe 4)
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
10
Bewegunsvorhersage, Tracking (Gruppe 4)
Teilaufgaben:
•
Laden der Bewegungspattern (siehe TrackIt.java)
•
Implementierung des Kalman Filters:
public interface tracking.MotionModel
•
Visualisieren des Trackings mittels GUI
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
11
Bewegunsvorhersage, Tracking (Gruppe 4)
 public interface tracking.MotionModel
 Generelles Interface für ein Bewegungsmodell
 Das Modell muss einerseits Positionen basierend auf
vorangegangenen Positionen vorhersagen können
(Prediction)
 Ebenso müssen neue Messungen zur Verbesserung der
Vorhersage eingearbeitet werden (Time Update)
 TrackedObject predict( TrackedObject object,
Date timestamp )

liefert eine Schätzung der Position von object zum Zeitpunkt
timestamp zurück
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
12
Bewegunsvorhersage, Tracking (Gruppe 4)
 TrackedObject timeUpdate( TrackedObject object,
DetectedObject measurement,
Date timestamp )


Verknüpft die Messung aus dem Laserscan measurement
und die vorhergesagte Position von object
liefert somit eine verbesserte Schätzung der Position der
Person
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
13
Packages: Hilfsklassen
 graphics
 Klassen zum Erstellen von 2D-Szenen
 gui
 Klassen für GUI zur Anzeige von 2D-Szenen
 benötigt JOGL-Bibliothek (https://jogl.dev.java.net/)
 math
 Klassen für Matrizen und Vektoren mit einigen
Standardoperationen (Addition, Subtraktion, Determinante,
Invertieren, ...)
 laser
 Klassen für die Kommunikation mit dem Laserscanner
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
14
Laserserver starten
 Verbindung mit Roboter über SSH
> ssh -X [email protected]
 Server starten
> ./laserserver/bin/server
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
15
GUI verwenden
packages: graphics, gui
//GUI erzeugen:
MyGUI gui = new MyGUI("Motion Tracker");
//Neue Szene erzeugen
MyScene scene = new MyScene();
//Kreis erstellen
Circle circle = new Circle( 100, 50, 80,
new Color(255, 255, 255));
//Kreis zur Szene hinzufügen
scene.addCircle(circle);
//Szene anzeigen
gui.setScene(scene);

Circle
Line
Point
Steuerung: Cursor-Tasten; Zoom In: A; Zoom Out: Y;
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
16
Roboteransteuerung
 Roboteransteuerung
erfolgt über Sockets
 IP: 131.188.52.173
Port: 30000
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
17
Eclipse einrichten
 lib/jogl.jar in den Java Build Path hinzufügen
Project -> Properties -> Java Build Path -> add External JARs
 Vor Ausführen den Pfad zur Library angeben
Run -> Run -> Arguments
-Djava.library.path=<Pfad zur Library>
Friedrich-Alexander-Universität Erlangen-Nürnberg
Stefan Wildermann
18
Herunterladen