640 likes | 804 Views
Implementierung einer RoboCup Soccer Server Fußball-Mannschaft. Alexander Bernard Johannes Tuchscherer 17.01.2005. Agenda. Ziele Unsere Mannschaft Fazit und Kritik. Agenda. Ziele Unsere Mannschaft Fazit und Kritik. Ziele.
E N D
Implementierung einer RoboCup Soccer Server Fußball-Mannschaft Alexander Bernard Johannes Tuchscherer 17.01.2005
Agenda • Ziele • Unsere Mannschaft • Fazit und Kritik
Agenda • Ziele • Unsere Mannschaft • Fazit und Kritik
Ziele • Hauptziel: Eine funktionierende Mannschaft, die sich intelligent auf dem Spielfeld verhält • Einsetzen von KI bei der Entscheidungsfindung • Übertragung von erfolgreichen Strategien aus dem echten Fußball auf die simulierte Fußball-Mannschaft z.B. Flankenspiel, Abseitsfalle,...
Agenda • Ziele • Unsere Mannschaft • Fazit und Kritik
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Beispiele • Verbesserungen
Entwicklungsumgebung • Soccer Server 9.4.5 • SoccerMonitor und SoccerWindow • Eclipse • CVS um parallele und konsistente Programmierung zu ermöglichen • eigene GUI für jeden Agenten
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Beispiele • Verbesserungen
Herangehensweise • Simple-Client als rudimentäre Grundlage für unsere Mannschaft • Verbesserung des Simple Clients: • Auswertung aller Events (visual, aural, senseBody, ...) • Einlesen der Server-Parameter (server.conf) • Entwicklung der Spielfeldberechnung • Ergebnis: einzelner Agent findet sich in seiner simulierten Umgebung zurecht
Herangehensweise • Mannschaften mit Team-Verhalten • Kommunikation zwischen den Spielern • Spezielle Methoden (dribbeln, passen, Pass annehmen ...) • Abstimmen der Aktionen • Torwart • Standardsituationen (Ecke, Seiteneinwurf) • Fehlerbeseitigung und Optimierung
GUI-Hilfsmittel • Entwicklung einer GUI für jeden Agenten • „nebenbei“ entwickelt und ständig verbessert • Umwelt-Informationen und Informationen zu Aktionen des Agenten werden strukturiert visuell aufbereitet • Erleichterung der Entwicklung und Fehlerfindung • Entfernen des Spielers vom Spielfeld möglich ohne die GUI zu schließen
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Module
Basis Aktionen • Dash • Turn • Move • Kick • Catch Ball (nur Goalie)
Spezielle Aktionen • Dribbeln • Ball passen • Ball-Annahme • Torschuss • Ball-Einwurf • Eckball • Gehe zur Position
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Beispiele • Verbesserungen
Taktik • Spielfeld-Einteilung • Kommunikation der Agenten • Pass und Kick-Strategie • Defensiv-Strategie • Alternativ - Mannschaft
Spielfeld-Einteilung • Mannschaftsaufstellung: • 3 Stürmer • 4 Mittelfeldspieler • 3 Verteidiger • 1 Torwart • Einteilung des Spielfelds in Zuständigkeitsbereiche • Jeder Spieler besitzt • Startposition • Standardposition
Taktik • Spielfeld-Einteilung • Kommunikation der Agenten • Pass und Kick-Strategie • Defensiv-Strategie • Alternativ - Mannschaft
Kommunikation der Agenten • Nur der Ball besitzende Spieler spricht • Vorteil: • Keine Kollisionen von say–Messages • In jedem Zyklus kann der Ball-Spieler sprechen • Nachteil: • Spieler außerhalb der Rufdistanz werden nicht erreicht • Verteidigung wird nicht durch einen Spieler (z.B. Torwart) koordiniert
Taktik • Spielfeld-Einteilung • Kommunikation der Agenten • Pass und Kick-Strategie • Defensiv-Strategie • Alternativ - Mannschaft
Passen • Ballspieler sucht geeigneten Spieler • Geeigneter Spieler? • Anzuspielender Spieler muss näher am gegnerischen Tor stehen Kein Rückpass möglich! • ein Spieler, der durch keinen Gegenspieler blockiert wird und die geringste Distanz aufweist • Ball-Spieler broadcastet say-Message:(say passball 4 -23.0 12.7) • Schießt den Ball zum ausgewählten Spieler Schusskraft wird berechnet, so dass der der Ball möglichst zielgenau beim anderen Spieler ankommt
Pass Annahme • Spieler empfängt die say-Message und erkennt darin seine Spieler-Nr.(hear 128.5 our 2 „passball 4 -23.0 12.7“) • Spieler dreht sich in die Ruf-Richtung und schaltet seine View auf narrow • versucht seine Position so zu korrigieren, dass der Ball frontal auf ihn zukommt. • Switch in normalen Modus, wenn … • Pass angekommen • Pass durch Gegner abgefangen
Kicken vs. dribbeln • Spieler versucht immer einen freien Spieler anzuspielen (aber kein Rückpass!) • Wenn kein freier Spieler da ist, dann dribbelt der Spieler Richtung Tor • Spieler kann seine Spielfeldzone nicht verlassen am Spielzonenrand kickt er Richtung Tor
Taktik • Spielfeld-Einteilung • Kommunikation der Agenten • Pass und Kick-Strategie • Defensiv-Strategie • Alternativ - Mannschaft
Defensiv-Strategie • Raumdeckung statt Manndeckung • Jeder Spieler ist für seinen Spielzonenbereich zuständig • Spieler geht direkt zum Ball, wenn er in seine Spielzone kommt
Taktik • Spielfeld-Einteilung • Kommunikation der Agenten • Pass und Kick-Strategie • Defensiv-Strategie • Alternativ - Mannschaft
Alternativ - Mannschaft • Nur ein Spieler-Typ (und Torwart) • Verbesserter Simple-Client • Spieler-Verhalten: • Finde den Ball • Laufe zum Ball • Kicke Richtung Tor • Erfolgreiche Strategie??? „keep it simple and stupid!“
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Beispiele • Verbesserungen
Beispiele • Orientierung • Dribbeln • Torwart-Verhalten
Orientierung – Wozu überhaupt • Für alle Objekte im Sichtradius die wichtigen Daten vom Server • (see Time ((ObjektName) Entfernung Richtung) • Keine Informationen zu übrigen Punkte • Deswegen: • Aufwendige Berechnung von Entfernung und Richtung zu Punkten außerhalb des Sichtradiuses • Berechnung nur für statische Punkt (z. B. Tor, Ecken, Mittelpunkt..)
Orientierung – Vorgehen (1/4) • Speicherung der statischen Objekte im Source-Code im Koordinatenformat • Das Koordinatensystem: y (-36.5, 20 ) (36.5, 20 ) (0,0) -x x (-36.5, -20 ) (36.5, -20 ) -y
Orientierung – Vorgehen (2/4) • Berechnen der eigenen Blickrichtung… • an Hand einer Linie • an Hand zweier Punkte (see ((f p r t) 10 42.3) ((f g r b) 24 36.7)…) (see ((l t) 65 45.4)…) (36.5, 20 ) 45.4° TOR 45.4° (52.5, -7.02 )
Orientierung – Vorgehen (3/4) • Berechnen der eigenen Position an Hand des nächsten Punktes und der Blickrichtung • Beispiel • Speicherung der Position als Koordinaten eines Koordinatensystems (36.5, 20 ) (27.9, 3 ) TOR
Orientierung – Vorgehen (4/4) • Berechnen der Entfernung und Richtung zu statischem Objekten • Korrektur der Richtung um eigene Blickrichtung (23.7, 12 ) TOR (52.5, 0 )
Dribbeln (1/3) • Wenn Ball außerhalb der Kick-Reichweite: • Lauf dem Ball hinterher • Sonst • Berechne Deine Position im übernächsten Tick (Bewegung durch Trägheit in diesem Tick und Beschleunigung durch Laufen im nächsten Tick) • Berechne die Position, zu der der Ball im übernächsten Tick soll (eigene zukünftige Position plus einem Abstand zwischen Spieler und Ball)
Dribbeln (2/3) • Berechne Weg, den der Ball von aktueller zu gewünschter Position zurücklegen muss • Berechne Beschleunigung, die Ball braucht um den Weg in zwei Ticks zurückzulegen (Aktueller Geschwindigkeitsvektor und Trägheit wird berücksichtigt)
Dribbeln (3/3) • Berechne Kraft, die eingesetzt werden muss, damit der Ball diese Beschleunigung erhält (Abstand zum Ball, Richtung zum Ball und Server-Variablen gehen ein)
Torwart-Algorithmus • Steht auf gedachter Linie von Tormittelpunkt zu Ball fünf Meter vor dem Tor • Läuft aus dem Tor, wenn der Ball in eine festgelegte Zone um das Tor kommt • Geht nach erfolgreicher Parade an die Strafraumgrenze und von dort Abschlag mit voller Power in Richtung Mittelpunkt
Unsere Mannschaft • Entwicklungsumgebung • Herangehensweise • Architektur • Taktik • Beispiele • Verbesserungen
Verbesserungen • Features, die dringend eingebaut werden sollten • Weitersagen des Ballbesitzes und der Ballposition • Freilaufen und Decken • Verbesserung der Mannschaftstaktik • Nice-to-have-Liste • Angepasstes Angriffs-Verhalten • Ausbau der GUI • Komplexere Spielzüge • Scoring-Modell