Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Abschlusspräsentation
Projekt ”Diogenes”
2
Vortragsablauf Benutzte Softwaretechnikmethoden GUI Movement
Wander-Funktion Map Kamera Facedetection Was nehmen wir mit?
3
SOFTWARETECHNIK METHODEN
4
Softwaretechnik im Projekt
Methoden: Vorgenommen: Unified Process Ausgeartet in: Extreme Programming
5
Softwaretechnik im Projekt
Funktionalität des Programms im Vordergrund Einfache Bedienung
6
Softwaretechnik im Projekt
Gruppenkommunikation über Facebook Google:Code als Repository
7
Aufwandsschätzung Top-Down Zeitpunkt Abgabe war klar
Teilaufgaben verteilt um Termin einzuhalten
8
Gantt-Diagramm
9
Verwendete Testmethoden
Sporadische Tests Konstruktive Nur getestet worauf User Einfluss hat Final: Walkthrough
10
GUI
11
GUI – Was ist uns wichtig?
Übersichtliche GUI Wenig Unterbäume Einfach zu bedienen/selbsterklärend
12
Idee Wenig Pop-ups Klar strukturiertes Menü
Viele Informationen auf einen Blick
13
Alte GUI
14
Neue Funktionen Manuelle Steuerungsoptionen
Switch zwischen Roboter und Kamerasteuerung Map angepasst
15
Neue Funktionen Präsentationsmodus auf Roboter
Roboter wird auf Map dargestellt Option für Facedetection
16
Wegrationalisierte Funktionen
Koordinatenangabe
17
Finale GUI
18
Probleme bei der GUI Position der Teilfenster Auswahl Layout
Hängen während Befehle ausgeführt werden
19
MOVEMENT
20
Movement ...wo wir waren: MoveTo MoveForward/Backward TurnLeft/Right
Wander
21
Movement WRPCommands zur Anfrage einer Bewegung: GOTO_XY MOVE_BACKWARD
MOVE_FORWARD TURN_LEFT TURN_RIGHT Movement
22
Movement Entwickeln von Workarounds mit GOTO_XY
1 Woche später: Nicht machbar 2 Wochen später: Bugfix! (WRPServer-1.1.0)
23
Movement ...war ein Zeitfresser! Grundfunktionalität verstehen (Doku?)
Rumprobieren Fehlersuche am falschen Ende Workarounds – Code für die Tonne Movement
24
WANDER-FUNKTION
25
Wander Funktion Punkte durch klicken auf die Map festlegen
Ausgewählte Punkte in der Map darstellen Umrechnung Panel ↔ Roboterkoordinaten Einzelne Punkte auf der Karte abwandern Darstellung bei Zoom und Scroll anpassen
26
Ablauf Klick auf die Map erstellt Punkt
Jeder Punkt → Kreis auf der Map Werden in einer Liste gespeichert Umrechnung in Roboterkoordinaten Roboter kriegt umgerechnete Koordinaten Punkte abwandern Löschen der Punkte auf der Map
27
Beispielbild Blaue Punkte = Wegpunkte Roter Punkt = Roboter
Start des Wanderns über Functions → wander the given points
28
Umrechnung X-Wert * Skalierung Y-Wert * Skalierung * -1
Mapverschiebung mit einrechnen +/- Verschiebung * Skalierung
29
MAP
30
Map Visualisierung Problemstellung: Wie visualisiert man angegebene Punkte & Linien im Textformat für eine GUI. 2 Ansätze: Ein Bild davon erstellen Direkt auf dem Panel zeichnen LINES DATA(points)
31
Ansatz: Bild erstellen
Punkte und Linien werden dem Graphics(2D) Objekt eines BufferedImage's hinzugefügt. for (MapLine ml : lines){ g.drawLine((int)ml.getP1().getX(), (int)ml.getP1().getY()*-1, (int)ml.getP2().getX(), (int)ml.getP2().getY()*-1 ); } for (MapPoint mp : points){ g.drawLine((int)mp.getX(), (int)mp.getY()*-1, (int)mp.getX()+5), ((int)mp.getY()*-1
32
Ansatz: Bild erstellen
Generell gute Idee, aber Probleme! Map Koordinaten != GUI Koordinaten Bild Koordinaten ggf. != GUI Koordinaten → hoher Aufwand, evtl. nicht performant. Ebenfalls Probleme beim skalieren/zoomen → Bild für jedes zoomen neu erstellen? Keine gute Idee → wurde verworfen
33
Ansatz: Direkt auf dem Panel zeichnen
Gleiche Vorgehensweise wie Bild erstellen Unterschied: paintComponent Methode des Panels wird überschrieben und dort die Linien und Punkte gezeichnet. Vorteile: → Map Koordinaten ~ Panel/GUI Koordinaten → Einheitliches skalieren mit wenig Aufwand möglich
34
Ansatz: Direkt auf dem Panel zeichnen
Resultat:
35
Problem – große Map, kleineres Sichtfeld
Maps können teilweise sehr groß sein Verhältnis Mapgröße ↔ GUI Fenster teilweise schlecht Lösung: → MapPanel zoomable machen Zoomfaktor einführen, kein Zoom → Zoomfaktor 1.0 In der paintComponent() Methode muss dann der zoomfaktor auf die x & y Werte multipliziert werden. public static void zoomOut() { if(zoomFactor >= 0.5){ MapCanvas.zoomFactor -= 0.1; } public static void zoomIn() { if(zoomFactor <= 2.0){ MapCanvas.zoomFactor += 0.1; }
36
FACE DETECTION
37
Welche Software ist für unser Projekt
Face Detection Probleme: Welche Software ist für unser Projekt die richtige?
38
Face Detection Alternativen Faint OpenCV Face.com
39
Entscheidung fiel auf:
Face Detection Entscheidung fiel auf:
40
Face Detection Warum? Faint: Läuft nur unter Windows
OpenCV: C++ Version kam nicht in Frage Java Version genügte nicht unseren Anforderungen Face.com: Verhältnismäßig einfache Integration in unser Projekt
41
Face Detection Funktionsweise
Gesichtsmerkmale werden auf Face.com mit einem Label gespeichert Vergleich der Merkmale eines übergebenen Fotos mit den gespeicherten
42
Face Detection Fazit In dem Sinne keine Face Detection
Passender: Face Recognition
43
Was nehmen wir mit?
44
Was nehmen wir mit? Wichtige Erkenntnisse: API gut dokumentieren!
Erst denken -> dann programmieren = riesige Zeitersparnis!
45
Was nehmen wir mit? - gute Kommunikation in der Gruppe wichtig!
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.