Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. ·...

66
Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit zum Diplom 1 an der Universität Kassel Offiziell abgegeben: 15.08.2005 Vorgelegt von Christian Niemand Betreuer: Dipl.-Inform. Björn Knafla Prof. Dr. Claudia Leopold Prof. Dr. Heinrich Werner Universität Kassel Fachbereich 16 - Elektrotechnik / Informatik Fachgebiet Programmiersprachen/-methodik Wilhelmshöher Allee 73 34121 Kassel

Transcript of Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. ·...

Page 1: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Architektur und Kuumlnstliche Intelligenz fuumlr Rennspiele und

Rennsimulationen

Abschlussarbeit zum Diplom 1 an der Universitaumlt Kassel

Offiziell abgegeben 15082005

Vorgelegt von Christian Niemand

Betreuer Dipl-Inform Bjoumlrn Knafla Prof Dr Claudia Leopold Prof Dr Heinrich Werner

Universitaumlt Kassel Fachbereich 16 - Elektrotechnik Informatik Fachgebiet Programmiersprachen-methodik

Wilhelmshoumlher Allee 73 34121 Kassel

i

Selbstaumlndigkeitserklaumlrung

sect13(7) der Pruumlfungsordnung vom 30042002 fuumlr den Diplomstudiengang Informatik im Fachbereich Elektrotechnik der Universitaumlt Kassel

bdquoBei der Abgabe der Bachelorarbeit hat der Kandidatdie Kandidatin schriftlich zu versichern daszlig ersie seineihre Arbeit - bei einer Gruppenarbeit seinenihren entsprechend gekennzeichneten Anteil der Arbeit - selbstaumlndig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt hatldquo

Hiermit versichere ich dass ich die vorliegende Diplomarbeit selbststaumlndig erarbeitet und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe

Christian Niemand

Guxhagen 12082005

iii

Inhaltsverzeichnis

SELBSTAumlNDIGKEITSERKLAumlRUNG I INHALTSVERZEICHNISIII ABBILDUNGSVERZEICHNIS V 1 EINFUumlHRUNG 1 2 INFRASTRUKTUR 3

21 STRECKENMODELL 4 211 Der Streckenverlauf 4 212 Sektoren 6 213 Startpositionen 7 214 Checkpoints 8

22 FAHRZEUGMODELL 9 221 Open Dynamics Engine 9 222 Fahrzeugeigenschaften 12 223 Aufbau und Funktionsweise der Fahrzeuge 13 224 Justierung des Fahrverhaltens 15

23 KONFIGURATIONSDATEIEN 16 231 Zusammensetzung der Fahrzeuge 16 232 Konfiguration der Kuumlnstlichen Intelligenz 16 233 Festlegung der Rennaufstellung 16

3 KUumlNSTLICHE INTELLIGENZ 17 31 FINITE-STATE MACHINE 18

311 Konzept 18 312 Umsetzung 19

32 FEEDBACK LOOP 19 321 Konzept 20 322 Umsetzung 21

33 FUZZY-LOGIC 21 331 Konzept 22 332 Umsetzung 24

34 NEURONALE NETZE 24 341 Konzept 24 342 Umsetzung 27

35 GENETISCHE ALGORITHMEN 27 351 Konzept 28 352 Umsetzung 29

4 FAHRZEUGSTEUERUNG ndash INTEGRATION DER KI 31 41 CONTROLLER - OBJEKTKONTROLLE MIT DER SCAPE-ENGINE 32 42 SCANNER - WAHRNEHMUNG DER UMWELT 32

421 Path-Scanner 33 422 Opponent-Scanner 33

43 AUFBAU DER FAHRZEUGSTEUERUNG 34 431 Der RACE-Zustand 35

44 TRADITIONELLE UMSETZUNG 36 45 FEEDBACK LOOPS 37 46 FUZZY-LOGIC 37 47 NEURONALE NETZE 39 48 UumlBERWACHUNG DER RENNREGELN UND ZEITEN 39

5 ERGEBNISSE UND ANALYSE 41 51 PHYSIKALISCHE SIMULATION MIT DER ODE 42

511 CPU-Auslastung 42

Inhaltsverzeichnis

iv

512 Kollisionskoumlrper fuumlr die Raumlder 42 513 Fahrverhalten 43

52 CPU-AUSLASTUNGEN DER KI-TECHNIKEN 43 53 TRADITIONELLE UMSETZUNG 44 54 FEEDBACK LOOPS 44 55 FUZZY-LOGIC 45 56 NEURONALE NETZE 46 57 GENETISCHE ALGORITHMEN 47 58 RACE-SUPERVISOR 48 59 SUBJEKTIV ECHTES RENNVERHALTEN 49

6 FAZIT 51 61 ZUSAMMENFASSUNG 52

7 AUSBLICK 53 71 PFADFINDUNG MIT DEM A-ALGORITHMUS 54 72 REALISTISCHERES SPRUNGVERHALTEN 54 73 KONZENTRATION UND REAKTION 54 74 OPTIMIERUNG DES FAHRGEFUumlHLS 54 75 GESAMTE STEUERUNG DURCH FUZZY-LOGIC 55 76 FUZZY-SKRIPTING 55 77 BACKPROPAGATION-TRAINING FUumlR NEURONALE NETZE 55

A LITERATUR- UND QUELLENVERZEICHNIS 57

v

Abbildungsverzeichnis

ABBILDUNG 21 BEISPIEL EINER OFFENEN UND EINER GESCHLOSSENEN HERMITEKURVE 4 ABBILDUNG 22 EXTRUDIERTE HERMITEKURVE MIT EINER STRAszligENTEXTUR UND RACINGLINE 5 ABBILDUNG 23 UNTERTEILUNG DER RENNSTRECKE IN SEKTOREN 6 ABBILDUNG 24 PUNKT INNERHALB EINES SEKTORS QUELLE [KIIR] 7 ABBILDUNG 25 AUF DER STRECKE VERTEILTE STARTPOSITIONEN 8 ABBILDUNG 26 BEISPIEL EINES CHECKPOINTS 8 ABBILDUNG 27 ODE UumlBERBLICK QUELLE [PSIM] 10 ABBILDUNG 28 BALL AND SOCKET JOINT QUELLE [ODEUG] 10 ABBILDUNG 29 HINGE JOINT QUELLE [ODEUG] 10 ABBILDUNG 210 SLIDER JOINT QUELLE [ODEUG] 10 ABBILDUNG 211 UNIVERSAL JOINT QUELLE [ODEUG] 10 ABBILDUNG 212 HINGE2 JOINT QUELLE [ODEUG] 10 ABBILDUNG 213 CONTACT JOINT QUELLE [ODEUG] 10 ABBILDUNG 214 ANGULAR MOTOR QUELLE [ODEUG] 10 ABBILDUNG 215 MODELLE FUumlR CHASSIS UND RAumlDER IN SOLIDER- UND DRAHTGITTER-DARSTELLUNG 13 ABBILDUNG 216 HINGE2 RADAUFHAumlNGUNG AM FAHRZEUG 14 ABBILDUNG 31 GRAFISCHE DARSTELLUNG EINER FSM FUumlR DIE TORSTEUERUNG 18 ABBILDUNG 32 ZUSTANDSAumlNDERUNGEN DER FSM FUumlR DIE TORSTEUERUNG 19 ABBILDUNG 33 BLOCKDIAGRAMM EINER P FEEDBACK LOOP QUELLE [FBLP] 20 ABBILDUNG 34 TYPISCHER STABILER REGELVORGANG QUELLE [KIIR] [FBLP] 20 ABBILDUNG 35 IN-GAME P LOOP QUELLE [KIIR] [FBLP] 20 ABBILDUNG 36 STABILITAumlTSGRENZE QUELLE [KIIR] [ETEI] 20 ABBILDUNG 37 INSTABILER REGELVORGANG QUELLE [KIIR] [ETEI] 20 ABBILDUNG 38 ALLGEMEINE FORMEL FUumlR P-FEEDBACK LOOP 21 ABBILDUNG 39 P-FEEDBACK LOOP FORMEL FUumlR LENKEINSCHLAG 21 ABBILDUNG 310 P-FEEDBACK LOOP FORMEL FUumlR BESCHLEUNIGUNG 21 ABBILDUNG 311 IQ-GRUPPIERUNG DURCH DISKRETE MENGEN QUELLE [PGAI] 21 ABBILDUNG 312 FLV MIT DEN DREI SETS DUMB AVERAGE CLEVER QUELLE [PGAI] 22 ABBILDUNG 313 UNTERSCHIEDLICHE FUZZY-SETS QUELLE [PGAI] 22 ABBILDUNG 314 FUZZY-AND OPERATOR QUELLE [PGAI] 23 ABBILDUNG 315 FUZZY-OR OPERATOR QUELLE [PGAI] 23 ABBILDUNG 316 ERGEBNISMATRIX NACH ANWENDUNG VON NEUN FUZZY-REGELN QUELLE [PGAI] 23 ABBILDUNG 317 EINSCHRAumlNKUNG DER SET-MAXIMA DURCH DEN DOM DER FAM QUELLE [PGAI] 23 ABBILDUNG 318 ZUSAMMENSETZUNG DER EINGESCHRAumlNKTEN FUZZY-SETS QUELLE [PGAI] 24 ABBILDUNG 319 BEISPIEL FUumlR DEN DURCHSCHNITTSWERT DER MAXIMA QUELLE [PGAI] 24 ABBILDUNG 320 SCHEMATISCHER AUFBAU VON NEURONEN QUELLE [VNN] 25 ABBILDUNG 321 DAS KUumlNSTLICHE NEURONENMODELL QUELLE [VNN] 25 ABBILDUNG 322 1-BETRAG FUNKTION QUELLE [VNN] 25 ABBILDUNG 323 SPRUNG FUNKTION QUELLE [VNN] 25 ABBILDUNG 324 LINEAR BEGRENZTE FUNKTION QUELLE [VNN] 25 ABBILDUNG 325 BEISPIEL FUumlR NEURONALE NETZ-TOPOLOGIEN QUELLE [VNN] 26 ABBILDUNG 326 KLASSEN VON LERNALGORITHMEN QUELLE [TDNN] 26 ABBILDUNG 327 ROULETTE-AUSWAHL DER GENOME QUELLE [AITFGP] 28 ABBILDUNG 328 REKOMBINATION UND MUTATION VON GENOMEN 29 ABBILDUNG 41 FUNKTIONSWEISE DES PATH-SCANNERS 33 ABBILDUNG 42 OPPONENT-SCANNER FUNKTIONSWEISE UND DATENANORDNUNG 34 ABBILDUNG 43 BLOCKDIAGRAMM DER FAHRZEUGSTEUERUNG INSBESONDERE DES RACE-ZUSTANDS 35 ABBILDUNG 44 EINGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 45 EINGABE-SET FUumlR BESCHLEUNIGUNG 38 ABBILDUNG 46 AUSGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 47 AUSGABE-SET FUumlR BESCHLEUNIGUNG 38

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 2: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

i

Selbstaumlndigkeitserklaumlrung

sect13(7) der Pruumlfungsordnung vom 30042002 fuumlr den Diplomstudiengang Informatik im Fachbereich Elektrotechnik der Universitaumlt Kassel

bdquoBei der Abgabe der Bachelorarbeit hat der Kandidatdie Kandidatin schriftlich zu versichern daszlig ersie seineihre Arbeit - bei einer Gruppenarbeit seinenihren entsprechend gekennzeichneten Anteil der Arbeit - selbstaumlndig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt hatldquo

Hiermit versichere ich dass ich die vorliegende Diplomarbeit selbststaumlndig erarbeitet und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe

Christian Niemand

Guxhagen 12082005

iii

Inhaltsverzeichnis

SELBSTAumlNDIGKEITSERKLAumlRUNG I INHALTSVERZEICHNISIII ABBILDUNGSVERZEICHNIS V 1 EINFUumlHRUNG 1 2 INFRASTRUKTUR 3

21 STRECKENMODELL 4 211 Der Streckenverlauf 4 212 Sektoren 6 213 Startpositionen 7 214 Checkpoints 8

22 FAHRZEUGMODELL 9 221 Open Dynamics Engine 9 222 Fahrzeugeigenschaften 12 223 Aufbau und Funktionsweise der Fahrzeuge 13 224 Justierung des Fahrverhaltens 15

23 KONFIGURATIONSDATEIEN 16 231 Zusammensetzung der Fahrzeuge 16 232 Konfiguration der Kuumlnstlichen Intelligenz 16 233 Festlegung der Rennaufstellung 16

3 KUumlNSTLICHE INTELLIGENZ 17 31 FINITE-STATE MACHINE 18

311 Konzept 18 312 Umsetzung 19

32 FEEDBACK LOOP 19 321 Konzept 20 322 Umsetzung 21

33 FUZZY-LOGIC 21 331 Konzept 22 332 Umsetzung 24

34 NEURONALE NETZE 24 341 Konzept 24 342 Umsetzung 27

35 GENETISCHE ALGORITHMEN 27 351 Konzept 28 352 Umsetzung 29

4 FAHRZEUGSTEUERUNG ndash INTEGRATION DER KI 31 41 CONTROLLER - OBJEKTKONTROLLE MIT DER SCAPE-ENGINE 32 42 SCANNER - WAHRNEHMUNG DER UMWELT 32

421 Path-Scanner 33 422 Opponent-Scanner 33

43 AUFBAU DER FAHRZEUGSTEUERUNG 34 431 Der RACE-Zustand 35

44 TRADITIONELLE UMSETZUNG 36 45 FEEDBACK LOOPS 37 46 FUZZY-LOGIC 37 47 NEURONALE NETZE 39 48 UumlBERWACHUNG DER RENNREGELN UND ZEITEN 39

5 ERGEBNISSE UND ANALYSE 41 51 PHYSIKALISCHE SIMULATION MIT DER ODE 42

511 CPU-Auslastung 42

Inhaltsverzeichnis

iv

512 Kollisionskoumlrper fuumlr die Raumlder 42 513 Fahrverhalten 43

52 CPU-AUSLASTUNGEN DER KI-TECHNIKEN 43 53 TRADITIONELLE UMSETZUNG 44 54 FEEDBACK LOOPS 44 55 FUZZY-LOGIC 45 56 NEURONALE NETZE 46 57 GENETISCHE ALGORITHMEN 47 58 RACE-SUPERVISOR 48 59 SUBJEKTIV ECHTES RENNVERHALTEN 49

6 FAZIT 51 61 ZUSAMMENFASSUNG 52

7 AUSBLICK 53 71 PFADFINDUNG MIT DEM A-ALGORITHMUS 54 72 REALISTISCHERES SPRUNGVERHALTEN 54 73 KONZENTRATION UND REAKTION 54 74 OPTIMIERUNG DES FAHRGEFUumlHLS 54 75 GESAMTE STEUERUNG DURCH FUZZY-LOGIC 55 76 FUZZY-SKRIPTING 55 77 BACKPROPAGATION-TRAINING FUumlR NEURONALE NETZE 55

A LITERATUR- UND QUELLENVERZEICHNIS 57

v

Abbildungsverzeichnis

ABBILDUNG 21 BEISPIEL EINER OFFENEN UND EINER GESCHLOSSENEN HERMITEKURVE 4 ABBILDUNG 22 EXTRUDIERTE HERMITEKURVE MIT EINER STRAszligENTEXTUR UND RACINGLINE 5 ABBILDUNG 23 UNTERTEILUNG DER RENNSTRECKE IN SEKTOREN 6 ABBILDUNG 24 PUNKT INNERHALB EINES SEKTORS QUELLE [KIIR] 7 ABBILDUNG 25 AUF DER STRECKE VERTEILTE STARTPOSITIONEN 8 ABBILDUNG 26 BEISPIEL EINES CHECKPOINTS 8 ABBILDUNG 27 ODE UumlBERBLICK QUELLE [PSIM] 10 ABBILDUNG 28 BALL AND SOCKET JOINT QUELLE [ODEUG] 10 ABBILDUNG 29 HINGE JOINT QUELLE [ODEUG] 10 ABBILDUNG 210 SLIDER JOINT QUELLE [ODEUG] 10 ABBILDUNG 211 UNIVERSAL JOINT QUELLE [ODEUG] 10 ABBILDUNG 212 HINGE2 JOINT QUELLE [ODEUG] 10 ABBILDUNG 213 CONTACT JOINT QUELLE [ODEUG] 10 ABBILDUNG 214 ANGULAR MOTOR QUELLE [ODEUG] 10 ABBILDUNG 215 MODELLE FUumlR CHASSIS UND RAumlDER IN SOLIDER- UND DRAHTGITTER-DARSTELLUNG 13 ABBILDUNG 216 HINGE2 RADAUFHAumlNGUNG AM FAHRZEUG 14 ABBILDUNG 31 GRAFISCHE DARSTELLUNG EINER FSM FUumlR DIE TORSTEUERUNG 18 ABBILDUNG 32 ZUSTANDSAumlNDERUNGEN DER FSM FUumlR DIE TORSTEUERUNG 19 ABBILDUNG 33 BLOCKDIAGRAMM EINER P FEEDBACK LOOP QUELLE [FBLP] 20 ABBILDUNG 34 TYPISCHER STABILER REGELVORGANG QUELLE [KIIR] [FBLP] 20 ABBILDUNG 35 IN-GAME P LOOP QUELLE [KIIR] [FBLP] 20 ABBILDUNG 36 STABILITAumlTSGRENZE QUELLE [KIIR] [ETEI] 20 ABBILDUNG 37 INSTABILER REGELVORGANG QUELLE [KIIR] [ETEI] 20 ABBILDUNG 38 ALLGEMEINE FORMEL FUumlR P-FEEDBACK LOOP 21 ABBILDUNG 39 P-FEEDBACK LOOP FORMEL FUumlR LENKEINSCHLAG 21 ABBILDUNG 310 P-FEEDBACK LOOP FORMEL FUumlR BESCHLEUNIGUNG 21 ABBILDUNG 311 IQ-GRUPPIERUNG DURCH DISKRETE MENGEN QUELLE [PGAI] 21 ABBILDUNG 312 FLV MIT DEN DREI SETS DUMB AVERAGE CLEVER QUELLE [PGAI] 22 ABBILDUNG 313 UNTERSCHIEDLICHE FUZZY-SETS QUELLE [PGAI] 22 ABBILDUNG 314 FUZZY-AND OPERATOR QUELLE [PGAI] 23 ABBILDUNG 315 FUZZY-OR OPERATOR QUELLE [PGAI] 23 ABBILDUNG 316 ERGEBNISMATRIX NACH ANWENDUNG VON NEUN FUZZY-REGELN QUELLE [PGAI] 23 ABBILDUNG 317 EINSCHRAumlNKUNG DER SET-MAXIMA DURCH DEN DOM DER FAM QUELLE [PGAI] 23 ABBILDUNG 318 ZUSAMMENSETZUNG DER EINGESCHRAumlNKTEN FUZZY-SETS QUELLE [PGAI] 24 ABBILDUNG 319 BEISPIEL FUumlR DEN DURCHSCHNITTSWERT DER MAXIMA QUELLE [PGAI] 24 ABBILDUNG 320 SCHEMATISCHER AUFBAU VON NEURONEN QUELLE [VNN] 25 ABBILDUNG 321 DAS KUumlNSTLICHE NEURONENMODELL QUELLE [VNN] 25 ABBILDUNG 322 1-BETRAG FUNKTION QUELLE [VNN] 25 ABBILDUNG 323 SPRUNG FUNKTION QUELLE [VNN] 25 ABBILDUNG 324 LINEAR BEGRENZTE FUNKTION QUELLE [VNN] 25 ABBILDUNG 325 BEISPIEL FUumlR NEURONALE NETZ-TOPOLOGIEN QUELLE [VNN] 26 ABBILDUNG 326 KLASSEN VON LERNALGORITHMEN QUELLE [TDNN] 26 ABBILDUNG 327 ROULETTE-AUSWAHL DER GENOME QUELLE [AITFGP] 28 ABBILDUNG 328 REKOMBINATION UND MUTATION VON GENOMEN 29 ABBILDUNG 41 FUNKTIONSWEISE DES PATH-SCANNERS 33 ABBILDUNG 42 OPPONENT-SCANNER FUNKTIONSWEISE UND DATENANORDNUNG 34 ABBILDUNG 43 BLOCKDIAGRAMM DER FAHRZEUGSTEUERUNG INSBESONDERE DES RACE-ZUSTANDS 35 ABBILDUNG 44 EINGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 45 EINGABE-SET FUumlR BESCHLEUNIGUNG 38 ABBILDUNG 46 AUSGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 47 AUSGABE-SET FUumlR BESCHLEUNIGUNG 38

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 3: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

iii

Inhaltsverzeichnis

SELBSTAumlNDIGKEITSERKLAumlRUNG I INHALTSVERZEICHNISIII ABBILDUNGSVERZEICHNIS V 1 EINFUumlHRUNG 1 2 INFRASTRUKTUR 3

21 STRECKENMODELL 4 211 Der Streckenverlauf 4 212 Sektoren 6 213 Startpositionen 7 214 Checkpoints 8

22 FAHRZEUGMODELL 9 221 Open Dynamics Engine 9 222 Fahrzeugeigenschaften 12 223 Aufbau und Funktionsweise der Fahrzeuge 13 224 Justierung des Fahrverhaltens 15

23 KONFIGURATIONSDATEIEN 16 231 Zusammensetzung der Fahrzeuge 16 232 Konfiguration der Kuumlnstlichen Intelligenz 16 233 Festlegung der Rennaufstellung 16

3 KUumlNSTLICHE INTELLIGENZ 17 31 FINITE-STATE MACHINE 18

311 Konzept 18 312 Umsetzung 19

32 FEEDBACK LOOP 19 321 Konzept 20 322 Umsetzung 21

33 FUZZY-LOGIC 21 331 Konzept 22 332 Umsetzung 24

34 NEURONALE NETZE 24 341 Konzept 24 342 Umsetzung 27

35 GENETISCHE ALGORITHMEN 27 351 Konzept 28 352 Umsetzung 29

4 FAHRZEUGSTEUERUNG ndash INTEGRATION DER KI 31 41 CONTROLLER - OBJEKTKONTROLLE MIT DER SCAPE-ENGINE 32 42 SCANNER - WAHRNEHMUNG DER UMWELT 32

421 Path-Scanner 33 422 Opponent-Scanner 33

43 AUFBAU DER FAHRZEUGSTEUERUNG 34 431 Der RACE-Zustand 35

44 TRADITIONELLE UMSETZUNG 36 45 FEEDBACK LOOPS 37 46 FUZZY-LOGIC 37 47 NEURONALE NETZE 39 48 UumlBERWACHUNG DER RENNREGELN UND ZEITEN 39

5 ERGEBNISSE UND ANALYSE 41 51 PHYSIKALISCHE SIMULATION MIT DER ODE 42

511 CPU-Auslastung 42

Inhaltsverzeichnis

iv

512 Kollisionskoumlrper fuumlr die Raumlder 42 513 Fahrverhalten 43

52 CPU-AUSLASTUNGEN DER KI-TECHNIKEN 43 53 TRADITIONELLE UMSETZUNG 44 54 FEEDBACK LOOPS 44 55 FUZZY-LOGIC 45 56 NEURONALE NETZE 46 57 GENETISCHE ALGORITHMEN 47 58 RACE-SUPERVISOR 48 59 SUBJEKTIV ECHTES RENNVERHALTEN 49

6 FAZIT 51 61 ZUSAMMENFASSUNG 52

7 AUSBLICK 53 71 PFADFINDUNG MIT DEM A-ALGORITHMUS 54 72 REALISTISCHERES SPRUNGVERHALTEN 54 73 KONZENTRATION UND REAKTION 54 74 OPTIMIERUNG DES FAHRGEFUumlHLS 54 75 GESAMTE STEUERUNG DURCH FUZZY-LOGIC 55 76 FUZZY-SKRIPTING 55 77 BACKPROPAGATION-TRAINING FUumlR NEURONALE NETZE 55

A LITERATUR- UND QUELLENVERZEICHNIS 57

v

Abbildungsverzeichnis

ABBILDUNG 21 BEISPIEL EINER OFFENEN UND EINER GESCHLOSSENEN HERMITEKURVE 4 ABBILDUNG 22 EXTRUDIERTE HERMITEKURVE MIT EINER STRAszligENTEXTUR UND RACINGLINE 5 ABBILDUNG 23 UNTERTEILUNG DER RENNSTRECKE IN SEKTOREN 6 ABBILDUNG 24 PUNKT INNERHALB EINES SEKTORS QUELLE [KIIR] 7 ABBILDUNG 25 AUF DER STRECKE VERTEILTE STARTPOSITIONEN 8 ABBILDUNG 26 BEISPIEL EINES CHECKPOINTS 8 ABBILDUNG 27 ODE UumlBERBLICK QUELLE [PSIM] 10 ABBILDUNG 28 BALL AND SOCKET JOINT QUELLE [ODEUG] 10 ABBILDUNG 29 HINGE JOINT QUELLE [ODEUG] 10 ABBILDUNG 210 SLIDER JOINT QUELLE [ODEUG] 10 ABBILDUNG 211 UNIVERSAL JOINT QUELLE [ODEUG] 10 ABBILDUNG 212 HINGE2 JOINT QUELLE [ODEUG] 10 ABBILDUNG 213 CONTACT JOINT QUELLE [ODEUG] 10 ABBILDUNG 214 ANGULAR MOTOR QUELLE [ODEUG] 10 ABBILDUNG 215 MODELLE FUumlR CHASSIS UND RAumlDER IN SOLIDER- UND DRAHTGITTER-DARSTELLUNG 13 ABBILDUNG 216 HINGE2 RADAUFHAumlNGUNG AM FAHRZEUG 14 ABBILDUNG 31 GRAFISCHE DARSTELLUNG EINER FSM FUumlR DIE TORSTEUERUNG 18 ABBILDUNG 32 ZUSTANDSAumlNDERUNGEN DER FSM FUumlR DIE TORSTEUERUNG 19 ABBILDUNG 33 BLOCKDIAGRAMM EINER P FEEDBACK LOOP QUELLE [FBLP] 20 ABBILDUNG 34 TYPISCHER STABILER REGELVORGANG QUELLE [KIIR] [FBLP] 20 ABBILDUNG 35 IN-GAME P LOOP QUELLE [KIIR] [FBLP] 20 ABBILDUNG 36 STABILITAumlTSGRENZE QUELLE [KIIR] [ETEI] 20 ABBILDUNG 37 INSTABILER REGELVORGANG QUELLE [KIIR] [ETEI] 20 ABBILDUNG 38 ALLGEMEINE FORMEL FUumlR P-FEEDBACK LOOP 21 ABBILDUNG 39 P-FEEDBACK LOOP FORMEL FUumlR LENKEINSCHLAG 21 ABBILDUNG 310 P-FEEDBACK LOOP FORMEL FUumlR BESCHLEUNIGUNG 21 ABBILDUNG 311 IQ-GRUPPIERUNG DURCH DISKRETE MENGEN QUELLE [PGAI] 21 ABBILDUNG 312 FLV MIT DEN DREI SETS DUMB AVERAGE CLEVER QUELLE [PGAI] 22 ABBILDUNG 313 UNTERSCHIEDLICHE FUZZY-SETS QUELLE [PGAI] 22 ABBILDUNG 314 FUZZY-AND OPERATOR QUELLE [PGAI] 23 ABBILDUNG 315 FUZZY-OR OPERATOR QUELLE [PGAI] 23 ABBILDUNG 316 ERGEBNISMATRIX NACH ANWENDUNG VON NEUN FUZZY-REGELN QUELLE [PGAI] 23 ABBILDUNG 317 EINSCHRAumlNKUNG DER SET-MAXIMA DURCH DEN DOM DER FAM QUELLE [PGAI] 23 ABBILDUNG 318 ZUSAMMENSETZUNG DER EINGESCHRAumlNKTEN FUZZY-SETS QUELLE [PGAI] 24 ABBILDUNG 319 BEISPIEL FUumlR DEN DURCHSCHNITTSWERT DER MAXIMA QUELLE [PGAI] 24 ABBILDUNG 320 SCHEMATISCHER AUFBAU VON NEURONEN QUELLE [VNN] 25 ABBILDUNG 321 DAS KUumlNSTLICHE NEURONENMODELL QUELLE [VNN] 25 ABBILDUNG 322 1-BETRAG FUNKTION QUELLE [VNN] 25 ABBILDUNG 323 SPRUNG FUNKTION QUELLE [VNN] 25 ABBILDUNG 324 LINEAR BEGRENZTE FUNKTION QUELLE [VNN] 25 ABBILDUNG 325 BEISPIEL FUumlR NEURONALE NETZ-TOPOLOGIEN QUELLE [VNN] 26 ABBILDUNG 326 KLASSEN VON LERNALGORITHMEN QUELLE [TDNN] 26 ABBILDUNG 327 ROULETTE-AUSWAHL DER GENOME QUELLE [AITFGP] 28 ABBILDUNG 328 REKOMBINATION UND MUTATION VON GENOMEN 29 ABBILDUNG 41 FUNKTIONSWEISE DES PATH-SCANNERS 33 ABBILDUNG 42 OPPONENT-SCANNER FUNKTIONSWEISE UND DATENANORDNUNG 34 ABBILDUNG 43 BLOCKDIAGRAMM DER FAHRZEUGSTEUERUNG INSBESONDERE DES RACE-ZUSTANDS 35 ABBILDUNG 44 EINGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 45 EINGABE-SET FUumlR BESCHLEUNIGUNG 38 ABBILDUNG 46 AUSGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 47 AUSGABE-SET FUumlR BESCHLEUNIGUNG 38

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 4: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Inhaltsverzeichnis

iv

512 Kollisionskoumlrper fuumlr die Raumlder 42 513 Fahrverhalten 43

52 CPU-AUSLASTUNGEN DER KI-TECHNIKEN 43 53 TRADITIONELLE UMSETZUNG 44 54 FEEDBACK LOOPS 44 55 FUZZY-LOGIC 45 56 NEURONALE NETZE 46 57 GENETISCHE ALGORITHMEN 47 58 RACE-SUPERVISOR 48 59 SUBJEKTIV ECHTES RENNVERHALTEN 49

6 FAZIT 51 61 ZUSAMMENFASSUNG 52

7 AUSBLICK 53 71 PFADFINDUNG MIT DEM A-ALGORITHMUS 54 72 REALISTISCHERES SPRUNGVERHALTEN 54 73 KONZENTRATION UND REAKTION 54 74 OPTIMIERUNG DES FAHRGEFUumlHLS 54 75 GESAMTE STEUERUNG DURCH FUZZY-LOGIC 55 76 FUZZY-SKRIPTING 55 77 BACKPROPAGATION-TRAINING FUumlR NEURONALE NETZE 55

A LITERATUR- UND QUELLENVERZEICHNIS 57

v

Abbildungsverzeichnis

ABBILDUNG 21 BEISPIEL EINER OFFENEN UND EINER GESCHLOSSENEN HERMITEKURVE 4 ABBILDUNG 22 EXTRUDIERTE HERMITEKURVE MIT EINER STRAszligENTEXTUR UND RACINGLINE 5 ABBILDUNG 23 UNTERTEILUNG DER RENNSTRECKE IN SEKTOREN 6 ABBILDUNG 24 PUNKT INNERHALB EINES SEKTORS QUELLE [KIIR] 7 ABBILDUNG 25 AUF DER STRECKE VERTEILTE STARTPOSITIONEN 8 ABBILDUNG 26 BEISPIEL EINES CHECKPOINTS 8 ABBILDUNG 27 ODE UumlBERBLICK QUELLE [PSIM] 10 ABBILDUNG 28 BALL AND SOCKET JOINT QUELLE [ODEUG] 10 ABBILDUNG 29 HINGE JOINT QUELLE [ODEUG] 10 ABBILDUNG 210 SLIDER JOINT QUELLE [ODEUG] 10 ABBILDUNG 211 UNIVERSAL JOINT QUELLE [ODEUG] 10 ABBILDUNG 212 HINGE2 JOINT QUELLE [ODEUG] 10 ABBILDUNG 213 CONTACT JOINT QUELLE [ODEUG] 10 ABBILDUNG 214 ANGULAR MOTOR QUELLE [ODEUG] 10 ABBILDUNG 215 MODELLE FUumlR CHASSIS UND RAumlDER IN SOLIDER- UND DRAHTGITTER-DARSTELLUNG 13 ABBILDUNG 216 HINGE2 RADAUFHAumlNGUNG AM FAHRZEUG 14 ABBILDUNG 31 GRAFISCHE DARSTELLUNG EINER FSM FUumlR DIE TORSTEUERUNG 18 ABBILDUNG 32 ZUSTANDSAumlNDERUNGEN DER FSM FUumlR DIE TORSTEUERUNG 19 ABBILDUNG 33 BLOCKDIAGRAMM EINER P FEEDBACK LOOP QUELLE [FBLP] 20 ABBILDUNG 34 TYPISCHER STABILER REGELVORGANG QUELLE [KIIR] [FBLP] 20 ABBILDUNG 35 IN-GAME P LOOP QUELLE [KIIR] [FBLP] 20 ABBILDUNG 36 STABILITAumlTSGRENZE QUELLE [KIIR] [ETEI] 20 ABBILDUNG 37 INSTABILER REGELVORGANG QUELLE [KIIR] [ETEI] 20 ABBILDUNG 38 ALLGEMEINE FORMEL FUumlR P-FEEDBACK LOOP 21 ABBILDUNG 39 P-FEEDBACK LOOP FORMEL FUumlR LENKEINSCHLAG 21 ABBILDUNG 310 P-FEEDBACK LOOP FORMEL FUumlR BESCHLEUNIGUNG 21 ABBILDUNG 311 IQ-GRUPPIERUNG DURCH DISKRETE MENGEN QUELLE [PGAI] 21 ABBILDUNG 312 FLV MIT DEN DREI SETS DUMB AVERAGE CLEVER QUELLE [PGAI] 22 ABBILDUNG 313 UNTERSCHIEDLICHE FUZZY-SETS QUELLE [PGAI] 22 ABBILDUNG 314 FUZZY-AND OPERATOR QUELLE [PGAI] 23 ABBILDUNG 315 FUZZY-OR OPERATOR QUELLE [PGAI] 23 ABBILDUNG 316 ERGEBNISMATRIX NACH ANWENDUNG VON NEUN FUZZY-REGELN QUELLE [PGAI] 23 ABBILDUNG 317 EINSCHRAumlNKUNG DER SET-MAXIMA DURCH DEN DOM DER FAM QUELLE [PGAI] 23 ABBILDUNG 318 ZUSAMMENSETZUNG DER EINGESCHRAumlNKTEN FUZZY-SETS QUELLE [PGAI] 24 ABBILDUNG 319 BEISPIEL FUumlR DEN DURCHSCHNITTSWERT DER MAXIMA QUELLE [PGAI] 24 ABBILDUNG 320 SCHEMATISCHER AUFBAU VON NEURONEN QUELLE [VNN] 25 ABBILDUNG 321 DAS KUumlNSTLICHE NEURONENMODELL QUELLE [VNN] 25 ABBILDUNG 322 1-BETRAG FUNKTION QUELLE [VNN] 25 ABBILDUNG 323 SPRUNG FUNKTION QUELLE [VNN] 25 ABBILDUNG 324 LINEAR BEGRENZTE FUNKTION QUELLE [VNN] 25 ABBILDUNG 325 BEISPIEL FUumlR NEURONALE NETZ-TOPOLOGIEN QUELLE [VNN] 26 ABBILDUNG 326 KLASSEN VON LERNALGORITHMEN QUELLE [TDNN] 26 ABBILDUNG 327 ROULETTE-AUSWAHL DER GENOME QUELLE [AITFGP] 28 ABBILDUNG 328 REKOMBINATION UND MUTATION VON GENOMEN 29 ABBILDUNG 41 FUNKTIONSWEISE DES PATH-SCANNERS 33 ABBILDUNG 42 OPPONENT-SCANNER FUNKTIONSWEISE UND DATENANORDNUNG 34 ABBILDUNG 43 BLOCKDIAGRAMM DER FAHRZEUGSTEUERUNG INSBESONDERE DES RACE-ZUSTANDS 35 ABBILDUNG 44 EINGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 45 EINGABE-SET FUumlR BESCHLEUNIGUNG 38 ABBILDUNG 46 AUSGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 47 AUSGABE-SET FUumlR BESCHLEUNIGUNG 38

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 5: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

v

Abbildungsverzeichnis

ABBILDUNG 21 BEISPIEL EINER OFFENEN UND EINER GESCHLOSSENEN HERMITEKURVE 4 ABBILDUNG 22 EXTRUDIERTE HERMITEKURVE MIT EINER STRAszligENTEXTUR UND RACINGLINE 5 ABBILDUNG 23 UNTERTEILUNG DER RENNSTRECKE IN SEKTOREN 6 ABBILDUNG 24 PUNKT INNERHALB EINES SEKTORS QUELLE [KIIR] 7 ABBILDUNG 25 AUF DER STRECKE VERTEILTE STARTPOSITIONEN 8 ABBILDUNG 26 BEISPIEL EINES CHECKPOINTS 8 ABBILDUNG 27 ODE UumlBERBLICK QUELLE [PSIM] 10 ABBILDUNG 28 BALL AND SOCKET JOINT QUELLE [ODEUG] 10 ABBILDUNG 29 HINGE JOINT QUELLE [ODEUG] 10 ABBILDUNG 210 SLIDER JOINT QUELLE [ODEUG] 10 ABBILDUNG 211 UNIVERSAL JOINT QUELLE [ODEUG] 10 ABBILDUNG 212 HINGE2 JOINT QUELLE [ODEUG] 10 ABBILDUNG 213 CONTACT JOINT QUELLE [ODEUG] 10 ABBILDUNG 214 ANGULAR MOTOR QUELLE [ODEUG] 10 ABBILDUNG 215 MODELLE FUumlR CHASSIS UND RAumlDER IN SOLIDER- UND DRAHTGITTER-DARSTELLUNG 13 ABBILDUNG 216 HINGE2 RADAUFHAumlNGUNG AM FAHRZEUG 14 ABBILDUNG 31 GRAFISCHE DARSTELLUNG EINER FSM FUumlR DIE TORSTEUERUNG 18 ABBILDUNG 32 ZUSTANDSAumlNDERUNGEN DER FSM FUumlR DIE TORSTEUERUNG 19 ABBILDUNG 33 BLOCKDIAGRAMM EINER P FEEDBACK LOOP QUELLE [FBLP] 20 ABBILDUNG 34 TYPISCHER STABILER REGELVORGANG QUELLE [KIIR] [FBLP] 20 ABBILDUNG 35 IN-GAME P LOOP QUELLE [KIIR] [FBLP] 20 ABBILDUNG 36 STABILITAumlTSGRENZE QUELLE [KIIR] [ETEI] 20 ABBILDUNG 37 INSTABILER REGELVORGANG QUELLE [KIIR] [ETEI] 20 ABBILDUNG 38 ALLGEMEINE FORMEL FUumlR P-FEEDBACK LOOP 21 ABBILDUNG 39 P-FEEDBACK LOOP FORMEL FUumlR LENKEINSCHLAG 21 ABBILDUNG 310 P-FEEDBACK LOOP FORMEL FUumlR BESCHLEUNIGUNG 21 ABBILDUNG 311 IQ-GRUPPIERUNG DURCH DISKRETE MENGEN QUELLE [PGAI] 21 ABBILDUNG 312 FLV MIT DEN DREI SETS DUMB AVERAGE CLEVER QUELLE [PGAI] 22 ABBILDUNG 313 UNTERSCHIEDLICHE FUZZY-SETS QUELLE [PGAI] 22 ABBILDUNG 314 FUZZY-AND OPERATOR QUELLE [PGAI] 23 ABBILDUNG 315 FUZZY-OR OPERATOR QUELLE [PGAI] 23 ABBILDUNG 316 ERGEBNISMATRIX NACH ANWENDUNG VON NEUN FUZZY-REGELN QUELLE [PGAI] 23 ABBILDUNG 317 EINSCHRAumlNKUNG DER SET-MAXIMA DURCH DEN DOM DER FAM QUELLE [PGAI] 23 ABBILDUNG 318 ZUSAMMENSETZUNG DER EINGESCHRAumlNKTEN FUZZY-SETS QUELLE [PGAI] 24 ABBILDUNG 319 BEISPIEL FUumlR DEN DURCHSCHNITTSWERT DER MAXIMA QUELLE [PGAI] 24 ABBILDUNG 320 SCHEMATISCHER AUFBAU VON NEURONEN QUELLE [VNN] 25 ABBILDUNG 321 DAS KUumlNSTLICHE NEURONENMODELL QUELLE [VNN] 25 ABBILDUNG 322 1-BETRAG FUNKTION QUELLE [VNN] 25 ABBILDUNG 323 SPRUNG FUNKTION QUELLE [VNN] 25 ABBILDUNG 324 LINEAR BEGRENZTE FUNKTION QUELLE [VNN] 25 ABBILDUNG 325 BEISPIEL FUumlR NEURONALE NETZ-TOPOLOGIEN QUELLE [VNN] 26 ABBILDUNG 326 KLASSEN VON LERNALGORITHMEN QUELLE [TDNN] 26 ABBILDUNG 327 ROULETTE-AUSWAHL DER GENOME QUELLE [AITFGP] 28 ABBILDUNG 328 REKOMBINATION UND MUTATION VON GENOMEN 29 ABBILDUNG 41 FUNKTIONSWEISE DES PATH-SCANNERS 33 ABBILDUNG 42 OPPONENT-SCANNER FUNKTIONSWEISE UND DATENANORDNUNG 34 ABBILDUNG 43 BLOCKDIAGRAMM DER FAHRZEUGSTEUERUNG INSBESONDERE DES RACE-ZUSTANDS 35 ABBILDUNG 44 EINGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 45 EINGABE-SET FUumlR BESCHLEUNIGUNG 38 ABBILDUNG 46 AUSGABE-SET FUumlR LENKEINSCHLAG 38 ABBILDUNG 47 AUSGABE-SET FUumlR BESCHLEUNIGUNG 38

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 6: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Abbildungsverzeichnis

vi

ABBILDUNG 48 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DEN LENKEINSCHLAG 38 ABBILDUNG 49 GRAFISCHE DARSTELLUNG DER AUSGABE FUumlR DIE BESCHLEUNIGUNG 38 ABBILDUNG 410 STEUERUNG DURCH EIN NEURONALES NETZ 39 ABBILDUNG 411 AUSGABEFUNKTION TANH QUELLE [NNC] 39 ABBILDUNG 51 CPU-AUSLASTUNG DURCH DIE PHYSIKALISCHEN SIMULATION 42 ABBILDUNG 52 CPU-AUSLASTUNG VERSCHIEDENER KI-TECHNIKEN IM VERGLEICH 44 ABBILDUNG 53 OPTIMIERUNG EINES NEURONALEN NETZ 46 ABBILDUNG 54 EVOLUTION UumlBER BESUCHTE CHECKPOINTS EINES NEURONALEN NETZ 47 ABBILDUNG 55 OPTIMIERUNG EINER KI TRADITIONELLER UMSETZUNG 48

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 7: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

1

1 Einfuumlhrung

Ziel dieser Diplomarbeit ist die Entwicklung einer Architektur zur Simulation subjektiv bdquoechterldquo Rennen zwischen computergesteuerten physikalisch simulierten Fahrzeugen auf einem virtuellen Rennparcours Die Softwarekomponenten sollen fuumlr die scApe-Engine entwickelt werden dh Grundstrukturen sollen direkt in die Engine implementiert und umfangreichere Module als Plugin gekoppelt werden Bei der scApe-Engine handelt es sich um eine Grafik- bzw Game-Engine (das Grundgeruumlst eines Computerspiels) die zur Darstellung und Bearbeitung von Landschaften entwickelt wurde Ein paar der verwendeten Bilder stammen direkt aus dem scApe-Editor bzw der scApe-Engine

Der Schwerpunkt der Arbeit liegt auf der Anwendung und Integration verschiedener Techniken und der Dokumentation der gesammelten Erfahrungen bei der Anpassung bzw dem Finetuning der Komponenten um die gestellte Aufgabe zu loumlsen Es geht also nicht um die erschoumlpfende Untersuchung der einzelnen Methoden

In der Ausarbeitung wird Anfangs ein Uumlberblick uumlber moumlgliche Techniken gegeben werden und dann die Umsetzung und die Erfahrungen damit beschrieben So soll auch dokumentiert werden welche KI-Techniken nicht wieder verwendbar implementiert werden konnten und warum

Um ein Rennen KI gesteuerter Rennfahrer in einer virtuellen Welt realisieren zu koumlnnen gilt es die Rennstrecke Fahrzeuge und Fahrer in Software zu modellieren

Aber wie wird eine Rennstrecke in einer virtuellen Welt mit Algorithmen und Datenstrukturen umgesetzt Wie kann ein Fahrzeug in solch einer Welt physikalisch simuliert werden Welche Verfahren befaumlhigen einen virtuellen Fahrer Rennen zu bestreiten

In Kapitel 2 wird auf die benoumltigte Infrastruktur fuumlr eine Rennsimulation eingegangen Eine Moumlglichkeit zur Streckenrepraumlsentation und Hilfsmittel wie zB zur Festlegung von Startpositionen werden vorgestellt Fahrzeuge muumlssen sich in Kurven neigen und die Raumlder sollen bei Schlagloumlchern tief in den Radkasten gedruumlckt werden Dazu wird erklaumlrt wie man virtuelle Fahrzeuge zusammenstellen und wie man sie physikalisch simulieren kann

Virtuelle Fahrer sollen Fahrzeuge entlang einer Rennstrecke steuern Dazu werden bestimmte Algorithmen und Datenstrukturen die sogenannte bdquoKuumlnstliche Intelligenzldquo kurz KI benoumltigt In Kapitel 3 werden Techniken vorgestellt die fuumlr die Fahrzeugsteuerung und zur Verbesserung der KI in Frage kommen

Ein konkretes Modell einer KI fuumlr die Fahrzeugsteuerung wird in Kapitel 4 dargestellt Es wird zu sehen sein wie die Kuumlnstliche Intelligenz ihre Umwelt wahrnehmen kann und wie die in Kapitel 3 vorgestellten Techniken in das Modell integriert werden Auszligerdem wird eine Moumlglichkeit vorgestellt um die einzelnen Fahrzeuge zu uumlberwachen und eine Rennstatistik zu fuumlhren

Anschlieszligend werden in Kapitel 5 die erlangten Ergebnisse und Erfahrungen dokumentiert und Vor- und Nachteile der einzelnen Techniken praumlsentiert

Im Anschluss wird in Kapitel 6 ein kurzes Fazit gegeben waumlhrend Kapitel 7 am Schluss einen Ausblick uumlber moumlgliche Verbesserungen und Erweiterungen gibt

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 8: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

3

2 Infrastruktur

In diesem Kapitel wird auf die Umsetzung des Strecken- und Fahrzeugmodells eingegangen Diese Infrastruktur dient zum Einen zur grafische Darstellung der Strecke und der Fahrzeuge zum Anderen ist sie die Grundlage mit der die KI arbeiten muss

Das Streckenmodell muss so aufgebaut sein dass ein praumlziser Streckenverlauf gegeben ist und dass die KI moumlglichst schnell Informationen beispielsweise uumlber den Streckenverlauf und die eigene Position erhalten kann

Die Rennsimulation verlaumluft in Echtzeit dh der zeitliche Ablauf des Rennens entspricht annaumlhernd dem zeitlichen Ablauf der Realitaumlt Daher werden die Strecken- und Positionsinformationen sehr haumlufig benoumltigt Das bringt die Anforderung mit sich dass die verwendeten Algorithmen und Datenstrukturen eine hohe Performance erlauben muumlssen

Die Fahrzeugmodelle muumlssen bestimmte Schnittstellen anbieten die spaumlter von der KI verwendet werden koumlnnen um das Fahrzeug beispielsweise zu beschleunigen zu bremsen oder zu lenken Die Schnittstellen die das Fahrzeug zum Steuern anbietet werden von dessen grafischer Darstellung und deren physikalischer Simulation getrennt Der physikalische Aufbau des Fahrzeugs ist unabhaumlngig von den Schnittstellen die der KI zum Steuern zur Verfuumlgung gestellt werden Diese Architektur ermoumlglicht dass bestimmte Softwarekomponenten spaumlter einfach ersetzt werden koumlnnen Beispielsweise koumlnnte eine andere Physik-Engine anstelle der ODE eingesetzt werden

Thema Seite

21 Streckenmodell 4

22 Fahrzeugmodell 9

23 Konfigurationsdateien 16

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 9: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

4

21 Streckenmodell Kennt man Autorennen aus dem Fernsehen so erkennt man eine Rennstrecke als ein sehr einfaches Gebilde eine einfache Straszlige die meistens als Rundkurs verlaumluft

Soll so eine Rennstrecke jedoch innerhalb einer virtuellen Computerwelt umgesetzt werden gibt es den Ansatz eine komplette virtuelle Welt inklusive Rennstrecke mit Hilfe eines 3D Modellierungstools zu erstellen Diese Karte kann dann von der Game-Engine geladen und dargestellt werden Ein menschlicher Betrachter wuumlrde wohl auch ohne groszliges Zoumlgern die Rennstrecke auf der Karte erkennen koumlnnen Eine computergesteuerte KI ist bislang noch nicht im Stande komplexe Situationen so schnell zu begreifen und darauf zu reagieren wie es ein Mensch tun kann Uumlbergibt man einer KI den Blickwinkel einer Kamera der virtuellen Welt als Eingabe kann man nicht erwarten dass sie aus dieser Eingabe die Rennstrecke erkennen kann Dazu muumlssten zuvor Algorithmen fuumlr Bilderkennung geschrieben werden damit die KI beispielsweise den Alphalt der Straszlige von Wiesen unterscheiden kann Allerdings waumlren diese Algorithmen fuumlr eine Echtzeitanwendung viel zu langsam Fuumlr ein Spiel ist es wichtig die Dinge moumlglichst schnell und einfach zu halten und dennoch bei den Spielern den Eindruck der Realitaumlt zu vermitteln Daher werden ein paar Hilfsmittel benoumltigt um die Fahrzeuge moumlglichst glaubwuumlrdig und schnell uumlber die Rennstrecke zu bewegen

Im Verlauf dieses Kapitels wird eine Moumlglichkeit aufgezeigt wie man im Computer repraumlsentieren kann was wir Menschen intuitiv als Rennstrecke bezeichnen

211 Der Streckenverlauf Damit die KI den Rennstreckenverlauf schnell nachvollziehen kann wird haumlufig eine mathematische Repraumlsentation der Strecke ein sogenannter Pfad verwendet

Um einen dreidimensionalen Pfad zu realisieren bieten sich zB sogenannte bdquoHermitekurvenldquo an Hermitekurven sind mathematische Kurven deren genauer Verlauf mithilfe von Kontrollpunkten angegeben wird Bei Hermitekurven wird jedem Kontrollpunkt die Distanz zum ersten Kontrollpunkt zugewiesen Der erste Kontrollpunkt bildet den Anfang der Kurve und bekommt somit die Distanz 0 Jeder weitere Kontrollpunkt kennt daher seine Distanz zum ersten Kontrollpunkt Die Distanz des letzten Kontrollpunktes entspricht gleichzeitig der gesamten Laumlnge der Kurve Je nach Lage der Kontrollpunkte zueinander koumlnnen bestimmte Kurvenverlaumlufe erzielt werden Fuumlr weitere Informationen verweise ich auf die Quelle [HCI]

Abbildung 21 Beispiel einer offenen und einer geschlossenen Hermitekurve

In Abbildung 21 werden eine offene und eine geschlossene Hermitekurve gezeigt Die umrahmten Stellen der Kurve stellen die Kontrollpunkte dar die frei im dreidimensionalen Raum platziert werden koumlnnen

Hermitekurven eignen sich gut fuumlr die grafische Darstellung der Rennstrecke da man durch sie eine Strecke mit weichen Kurvenverlaumlufen erhaumllt wenn man sie in die Breite

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 10: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

5

extrudiert In Abbildung 22 wird eine extrudierte Hermitekurve gezeigt die mit einer Straszligentextur versehen wurde

Abbildung 22 Extrudierte Hermitekurve mit Straszligentextur und Racingline

Entweder wird aus der Hermitekurve durch Extrusion ein dreidimensionales Modell berechnet dass sehr dicht uumlber den Untergrund gelegt wird oder der Untergrund wird entlang der Hermitekurve direkt mit einer Asphalt aumlhnlichen Bemalung Textur genannt versehen

Des Weiteren eignen sich Hermitekurven ebenfalls gut fuumlr die Repraumlsentation des Pfades dem die Fahrzeuge folgen sollen Die KI erhaumllt uumlber sogenannte bdquoScannerldquo die in Kapitel 42 behandelt werden indirekten Zugriff auf die Hermitekurve die den Streckenverlauf darstellt Sie kann aber auch zu jeder Zeit selbst uumlberpruumlfen wo sie sich auf der Strecke befindet und wie sie an bestimmten Stellen verlaumluft

Der Pfad dem die Fahrzeuge im Rennen folgen koumlnnte sich durchaus von dem Urspruumlnglichen Streckenverlauf unterscheiden da die Rennfahrer im Rennen die sogenannte Ideallinie (Racingline) verfolgen In der momentanen Umsetzung verlaumluft die Racingline immer in der Mitte des Streckenverlaufes Racingline und Streckenverlauf sind also identisch

Falls es zu einem Uumlberholvorgang kommen sollte werden haumlufig weitere Pfade die sogenannten Overtakinglines angeboten In dieser Arbeit wird jedoch bewusst auf Overtakinglines verzichtet da durch sie der Eindruck entstehen kann dass die Fahrzeuge keine echte Freiheit haben Sie folgen der Strecke wie auf Schienen (den Racing- und Overtakinglines)

Daher gibt es in dieser Arbeit nur eine Racingline als Pfadangabe Es wird den Fahrzeugen erlaubt sich bis zu einer gewissen Entfernung von dem Pfad zu entfernen Dadurch entsteht kein duumlnner sondern ein breiter Pfad auf dem die Fahrzeuge entlang fahren duumlrfen Sollte nun ein Uumlberholvorgang anstehen kann sich das Fahrzeug bis zu einem gewissen Abstand von der urspruumlnglichen Racingline entfernen ohne einer Overtakingline folgen zu muumlssen

Um eine Hermitekurve sinnvoll als Strecken- bzw Pfadrepraumlsentation verwenden zu koumlnnen sollte die Implementierung einige hilfreiche Methoden anbieten

Die Ruumlckgabe der Punktkoordinaten an einer bestimmten Distanz auf der Kurve (wobei der Distanzwert zwischen 0 und der Laumlnge der Kurve liegen sollte) ist wichtig damit die KI auf der Strecke vorausschauen kann um den weiteren Streckenverlauf zu ermitteln und dementsprechend zu lenken

Die Tangente an einem erwuumlnschten Punkt auf der Kurve hilft der KI dabei die richtige Richtung zu finden in die sie sich bewegen muss Mithilfe dieser Tangente kann der genaue Lenkeinschlag fuumlr Fahrzeuge bestimmt werden indem sie mit der Ausrichtung des Fahrzeugs verglichen wird Dabei entstehen weiche Lenkbewegungen

Die Ruumlckgabe des nahesten Punktes auf der Kurve zu einem beliebigen Punkt im Raum und deren Entfernung zueinander

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 11: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

6

sowie die Distanz des soeben bestimmten Punktes auf der Hermitekurve sind fuumlr die KI von Bedeutung Damit kann die eigene genaue Renndistanz auf der Strecke ermitteln kann

212 Sektoren Damit die KI ihre momentane Position auf der Strecke bestimmen kann wird die Hermitekurve verwendet Der verantwortliche Algorithmus ist allerdings recht langsam da es sich um eine iterative Berechnung handelt Hier werden alle Punkte auf der Hermitekurve in festgelegten Abstaumlnden uumlberpruumlft und der Punkt mit dem kleinsten Abstand zur aktuellen Position des Fahrzeugs repraumlsentiert die entsprechende Distanz bzw Position auf der Hermitekurve Sektoren zerlegen die Rennstrecke in kleinere Teilbereiche um diese Berechnung zu beschleunigen

Ein Sektor ist eine trapezfoumlrmige Approximation eines kleinen Teils der Rennstrecke und wird hauptsaumlchlich dazu genutzt um festzustellen ob und wo sich die Fahrzeuge ungefaumlhr auf der Strecke befinden Sofern man die Rennstrecke mit Hermitekurven realisiert hat bietet es sich an jeweils zwei Sektoren zwischen zwei Kontrollpunkten der Kurve zu platzieren Bei engen Kurven kann es sonst vorkommen dass die Strecke nicht komplett mit Sektoren abgedeckt ist da die Kurve an manchen Stellen herausragt

Um einen Sektor zu erstellen genuumlgt es die Hermitekurve an den gewuumlnschten Stellen in die Breite zu extrudieren und man bekommt die Koordinaten der Sektorenecken In Abbildung 23 wird gezeigt wie die Sektoren die Hermitekurve des Streckenverlaufs umschlieszligen An den mit bdquoKPldquo bezeichneten Stellen befinden sich Kontrollpunkte der Hermitekurve Hilfreich ist es in einem Sektor die Information zu speichern bei welcher Streckendistanz er beginnt Diese Information kann eine KI auslesen und ihre exakte Position auf der Rennstrecke anschlieszligend anhand der Hermitekurve auswerten Es braucht aber nun lediglich der Teil der Hermitekurve uumlberpruumlft werden der innerhalb des Sektors liegt in dem sich die KI befindet Sollte sich ein Fahrzeug gar nicht mehr auf der Rennstrecke befinden so kann dies sehr schnell anhand der Sektoren uumlberpruumlft werden Den zuletzt besuchten Sektor merkt sich die KI damit sie gegebenenfalls wieder an dessen Anfang zuruumlckgesetzt werden kann um das Rennen erneut aufzunehmen

Abbildung 23 Unterteilung der Rennstrecke in Sektoren

Um zu bestimmen ob sich ein Punkt innerhalb eines Sektors befindet benoumltigt man die Normalenvektoren der Sektorenseiten Diese muumlssen nicht zur Laufzeit sondern koumlnnen bereits vor dem Rennen berechnet werden Man erstellt an den Kanten jeweils eine aufrecht stehende Flaumlche so dass deren Normalenvektor ins Innere des Sektors zeigt Nun werden Richtungsvektoren von jeder Kantenmitte zum gewuumlnschten Objekt gespannt und die Winkel zwischen diesen Richtungsvektoren und den Normalvektoren der entsprechenden Kante berechnet Sind alle Winkel kleiner als 90deg so befindet sich der Punkt innerhalb des Sektors (Kanten ausgeschlossen) Pruumlft man die Winkel auf kleiner gleich 90deg so werden bereits die Kanten zum Sektor gezaumlhlt Ein Objekt wie beispielsweise ein Fahrzeug wird bei diesen Uumlberpruumlfungen als Punkt abstrahiert

Diese Methode funktioniert lediglich fuumlr Sektoren bei denen alle Eckwinkel zwischen den Raumlndern im Inneren kleiner sind als 180deg

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 12: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

7

Abbildung 24 Punkt innerhalb eines Sektors Quelle [KIiR]

Des Weiteren eignen sich Sektoren dafuumlr um spezielle Streckeninformationen fuumlr die KI zu speichern Diese zusaumltzlichen Informationen koumlnnen der KI dann helfen die Strecke besser zu absolvieren Beispielsweise koumlnnte ein Sektor kurz vor einer engen Kurve die Information bdquohairpin-turnldquo oauml enthalten die von der KI ausgelesen wird und sie dadurch veranlasst staumlrker zu bremsen und einzulenken als vor bzw in normalen Kurven

213 Startpositionen Wie in Abbildung 25 dargestellt wird werden auf der Strecke bestimmte Orte festgelegt an denen die Fahrzeuge das Rennen beginnen sollen Jede dieser Startpositionen enthaumllt die Informationen um welche Startnummer oder Startplatzierung es sich handelt In den haumlufigsten Faumlllen ist es so dass die kleinste Startnummer den besten Startplatz vorne repraumlsentiert und die houmlchste Startnummer den schlechtesten Startplatz weit hinten im Fahrerfeld Eine Gleichberechtigung durch das nebeneinander Platzieren der Startpositionen oder eine gemischte Platzierung ist aber auch moumlglich Wichtig ist neben der Position auch die Ausrichtung der Startposition In der Abbildung 25 zeigen die Pfeile die Richtung an in der die Fahrzeuge zu Rennbeginn platziert werden sollen

Bei der Darstellung einer Startposition handelt es sich um ein 3D Modell dessen Translation und Rotation spaumlter auf das entsprechende Fahrzeug angewendet wird um dieses in die gewuumlnschte Position und Richtung zu bringen Eine Rennstrecke kann inklusive Startpositionen mit einem speziellen Tool zur Erstellung von Landschaften und Rennstrecken dem scApe-Editor erstellt werden und in scape Dateien gespeichert werden Die grafische Visualisierung der Startposition dient jemandem der eine Rennstrecke erstellt dem Leveldesigner zur Orientierung an welcher Position und in welcher Richtung die Fahrzeuge starten sollen In dem eigentlichen Rennen werden die Startpositionen nicht mehr angezeigt sorgen aber durch ihre Durchnummerierung waumlhrend der Initialisierungsphase vor dem Rennen dafuumlr dass jedes Fahrzeug in der korrekten Richtung an die vorherbestimmte Position gesetzt wird

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 13: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

8

Abbildung 25 Auf der Strecke verteilte Startpositionen

214 Checkpoints In den meisten Rennen moumlchte man gewaumlhrleisten dass sich die Fahrer an den Streckenverlauf halten In der Formel1 beispielsweise bekommt ein Fahrer eine Strafe falls er eine Schikane abkuumlrzt und daraus einen Vorteil zieht Um das in einer Computersimulation zu uumlberwachen koumlnnen sogenannte Checkpoints verwendet werden

Die Checkpoints auf der Strecke sind durchnummeriert beginnend bei 0 Es muumlssen alle Checkpoints von den Fahrern besucht und in der durchnummerierten Reihenfolge durchfahren werden um eine Runde zu absolvieren Sollte ein Checkpoint ausgelassen werden ist die Reihenfolge unterbrochen Ein Checkpoint gilt als besucht sobald ein Fahrzeug in dessen Wirkungsbereich eindringt Das Eindringen eines Fahrzeugs in den Wirkungsbereich wird nur einmalig pro Runde getriggert Es loumlst bei dem Checkpoint aus dass dieser eine Nachricht an den Race-Supervisor (siehe Kapitel 48) mit der Startnummer des Fahrzeugs schickt welches den Checkpoint gerade durchfahren hat

In meiner derzeitigen Implementierung werden lediglich Checkpoints mit rundem Wirkungsradius verwendet Im Falle der Start- und Ziellinie fuumlhrt das zu einer leichten Verzerrung der Rundenzeiten da ein Fahrzeug das auf die Mitte eines Checkpoints zufaumlhrt fruumlher in den Wirkungsradius eindringt als ein Fahrzeug das einen Checkpoint dicht am Rand schneidet Fuumlr Start- und Ziellinie soll spaumlter noch einen Checkpoint erstellt werden der durch eine gerade Strecke zwischen zwei Punkten repraumlsentiert wird Dieser Checkpoint sollte dann getriggert werden sobald ein Fahrzeug zwischen diesen Punkten hindurch faumlhrt

Abbildung 26 Beispiel eines Checkpoints

Ein Checkpoint ist unabhaumlngig vom Streckenverlauf und der Leveldesigner muss daher darauf achten dass die Checkpoints nicht abseits sondern wie in Abbildung 26 dargestellt direkt auf der Rennstrecke platziert werden Wie bei den Startpositionen werden die Checkpoints waumlhrend der Simulation nicht angezeigt

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 14: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

9

22 Fahrzeugmodell Um Fahrzeuge in einer grafischen und physikalischen Simulation verwenden zu koumlnnen muumlssen drei grundlegende Dinge realisiert werden

Zum Einen werden ein oder mehrere 3D Modelle verwendet um das eigentliche Fahrzeug in der Simulation darstellen zu koumlnnen Fuumlr das Verarbeiten der grafischen Datenstrukturen sowie der Darstellung der Modelle ist die scApe-Engine verantwortlich

Zum Anderen wird die Open Dynamics Engine dazu eingesetzt um Fahrzeuge und andere Objekte in der virtuellen Welt physikalisch zu simulieren

Des Weiteren muumlssen Algorithmen und Datenstrukturen implementiert werden welche die Fahrzeugdaten enthalten sie ein- und auslesen koumlnnen und bestimmte Funktionen wie beispielsweise Lenken anbieten

Die Basisklasse bdquoCarldquo fuumlr die Fahrzeuge wird abstrakt implementiert und definiert die allgemeinen Schnittstellen fuumlr die Fahrzeuge Von der Basisklasse wird eine weitere Klasse bdquoODECarldquo abgeleitet in der ein konkreter Fahrzeugaufbau implementiert wird Dadurch steht fuumlr spaumlter die Option offen weitere Klassen von Car abzuleiten

221 Open Dynamics Engine Reale Fahrzeuge unterliegen den Kraumlften der Physik Waumlhrend einer zuumlgigen Fahrt kann man zB nicht einfach eine sehr enge Kurve fahren Die Traumlgheitskraft des Fahrzeugs wirkt der Kurvenfahrt entgegen Es kann dadurch sogar ausbrechen und ins Schleudern geraten Beim Beschleunigen Bremsen oder in Kurven neigt sich das Fahrzeug nach hinten vorn oder zu einer Seite Um dieses Verhalten in einer virtuellen Welt zu realisieren wird eine Softwarekomponente benoumltigt welche die noumltigen Berechnungen durchfuumlhrt

In der freien Online-Enzyklopaumldie Wikipedia [WIKI] wird die Open Dynamics Engine wie folgt beschrieben

bdquoDie Open Dynamics Engine (kurz ODE) ist eine freie Open Source industriellen Anspruumlchen genuumlgende Bibliothek die fuumlr das Simulieren der Koumlrperdynamik in der virtuellen Realitaumlt eingesetzt wird Die Physikengine gilt als schnell leistungsstark robust und flexibel und hat eine integrierte Kollisionsabfrage Sie wird von Russell Smith und einigen Firmen (weiter-)entwickelt Dank der BSD-Lizenz unter der die Physikengine steht kann und wird sie von vielen Spielen und kommerziellen Closed Source-Programmen verwendetldquo

Die ODE kann physikalische Simulationen mit Festkoumlrpern sogenannten bdquorigid bodiesldquo durchfuumlhren Unter Festkoumlrper versteht man Objekte die nicht verformbar sind Das bedeutet dass man sich alle verwendeten Objekte als starr vorstellen muss Ein Fuszligball beispielsweise wuumlrde nicht verformt werden wenn er fest geschossen wird

Um Simulationen durchfuumlhren zu koumlnnen bietet die ODE bestimmte Algorithmen und Datenstrukturen an Dazu ist die sie in zwei Bestandteile aufgeteilt die bdquodynamische Simulationldquo und die bdquoKollisionserkennungldquo auch bdquophysikalische Weltldquo und bdquogeometrische Weltldquo genannt [PSIM]

Das bedeutet dass es unabhaumlngige Datenstrukturen fuumlr die physikalischen und die geometrischen Eigenschaften der Objekte gibt

Physikalische Welt In ihr werden die physikalischen Eigenschaften wie beispielsweise Masse oder Geschwindigkeit der Objekte definiert Auszligerdem fuumlhrt sie in Abhaumlngigkeit von einem anzugebenden Zeitintervall die Berechnungen der Simulation durch Es werden in jedem Intervall alle auftretenden Kraumlfte berechnet und auf die Objektzustaumlnde des vergangenen Simulationsschrittes angewendet Diese Berechnungen fuumlhren die Objekte in den neuen Simulationsschritt uumlber

Geometrische Welt Die geometrische Welt ist dafuumlr zustaumlndig die Objekte geometrisch zu repraumlsentieren Ein Objekt wie beispielsweise ein Autorad kann durch einen einfachen mathematischen Zylinder mit Radius und Houmlhe repraumlsentiert werden

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 15: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

10

Auszligerdem ist die physikalische Welt auch fuumlr die Kollisionserkennung zwischen den Objekten zustaumlndig da nur sie aufgrund der konkreten Abmessungen der Objekte erkennt ob und an welchen Stellen sie sich uumlberschneiden Es wird durchaus von der ODE erlaubt eine eigene Kollisionserkennung zu verwenden

Abbildung 27 ODE Uumlberblick Quelle [PSIM]

Wie in Abbildung 27 dargestellt ist die Basis der physikalischen Welt die bdquoODE-Worldldquo im Folgenden auch bdquoWorldldquo genannt In der World legt man die Gravitation fest und ihr werden alle Koumlrper zugewiesen die in der virtuellen Welt simuliert werden sollen Der World muss auch mitgeteilt werden wie groszlig das Simulationsintervall sein soll dh nach welcher Zeit der naumlchste Simulationsschritt durchgefuumlhrt werden soll

Ein bdquoODE-Bodyldquo im weiteren Verlauf auch bdquoBodyldquo genannt beinhaltet die physikalischen Eigenschaften eines Koumlrpers wie Position Rotation und Masse sowie auf ihn wirkende Kraumlfte und Drehmomente Bodies koumlnnen mit Gelenken den bdquoODE-Jointsldquo miteinander verbunden werden

In Abbildung 28 - Abbildung 214 werden verschiedene Jointtypen gezeigt

Abbildung 28 Ball and Socket Joint Quelle [ODEUG]

Abbildung 29 Hinge Joint Quelle [ODEUG]

Abbildung 210 Slider Joint Quelle [ODEUG]

Abbildung 211 Universal Joint

Quelle [ODEUG]

Abbildung 212 Hinge2 Joint Quelle

[ODEUG]

Abbildung 213 Contact Joint Quelle

[ODEUG]

Abbildung 214 Angular Motor

Quelle [ODEUG]

Des Weiteren existiert noch ein Fixed Joint der eine starre Verbindung zwischen Bodies darstellt In Kapitel 2211 und 2212 wird detaillierter auf den Hinge2 und den Contact Joint eingegangen da diese sehr wichtig fuumlr den Aufbau der Fahrzeuge und deren Fahrverhalten sind

Auf der geometrischen Seite werden Objekte durch die Datenstruktur Geom definiert Ein Geom repraumlsentiert ein einzelnes Objekt oder ein Teil eines Objektes und

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 16: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

11

ermoumlglicht die Kollision mit Geoms anderer Objekte Einfache Objekte wie beispielsweise ein Spielwuumlrfel koumlnnen geometrisch uumlber einen mathematischen Quader angenaumlhert werden Ein komplexeres Objekt wie zB ein Tisch sollte nur an der Tischplatte und an den Beinen kollidieren koumlnnen und sonst nicht so dass man einen Stuhl darunter platzieren kann Dazu koumlnnen mehrere Geoms zu sogenannten bdquocomposite objectsldquo zusammengefasst werden

Die von der ODE unterstuumltzten geometrischen Objekte sind Sphere Box Plane Capped Cylinder Ray und Triangle Mesh Von Drittanbietern wird auch weiterer Quellcode fuumlr beispielsweise Cones normale Cylinder oder Terrain angeboten den man in sein ODE Projekt mit einkompilieren kann

Kollidieren zwei Geoms miteinander entstehen ein oder mehrere Kontaktpunkte je nachdem wie die Geoms miteinander kollidieren und wie tief sie innerhalb des vergangenen Simulationsschrittes ineinander eingedrungen sind Die Kontaktpunkte werden durch Contact Joints repraumlsentiert und in die physikalische Simulation einbezogen um Kollisionen aufzuloumlsen

Damit nicht jedes in der virtuellen Welt vorhandene Geom mit jedem anderen Geom auf Kollision gepruumlft werden muss koumlnnen Geoms in Spaces gruppiert werden Die Spaces sorgen fuumlr Collision-culling dh wenn zwei Spaces nicht miteinander kollidieren kann auch kein Geom des einen Space mit einem Geom des anderen Space kollidieren Spaces koumlnnen wiederum andere Spaces enthalten und somit einen hierarchischen Aufbau haben Dieses Vorgehen spart enorm viel Zeit bei der Kollisionsberechnung

2211 Radaufhaumlngung mit einem Hinge2 Joint Um ein Fahrzeug annaumlhernd korrekt simulieren zu koumlnnen wird die Federung der Raumlder benoumltigt In Kurvenfahrten wird die Federung des Fahrzeugs an der Kurvenauszligenseite aufgrund der Zentrifugalkraft zusammengedruumlckt Dadurch entsteht eine Neigung des Fahrzeugs in Kurvenlagen Auszligerdem faumlngt die Federung Stoumlszlige auf die auf die Raumlder einwirken Je haumlrter die Federung desto direkter wirkt der Stoszlig auf das Chassis

Der Hinge2 Joint der ODE eignet sich aus folgenden Gruumlnden sehr gut zur Simulation einer Radaufhaumlngung

Zum Einen unterstuumltzt er bereits genau die Kombination an Gelenkachsen die benoumltigt wird Er enthaumllt eine horizontale Antriebsachse an der das Rad angebracht wird und eine vertikale Achse uumlber die man die Lenkung realisieren kann

Zum Anderen ist er auch der einzige Joint der eine Federung die sogenannte Suspension ermoumlglicht

Schaut man auf Abbildung 212 und betrachtet das gelbe Objekt (Body1) als Fahrzeugchassis und das blaue Objekt (Body2) als Rad so kann man erkennen dass das Rad uumlber die vertikale Achse (Axis1) gelenkt werden kann waumlhrend es uumlber die horizontale Achse (Axis2) rollen kann Somit bekommt man eine Radaufhaumlngung von der ODE recht einfach zur Verfuumlgung gestellt

Der Hinge2 Joint kann wie die meisten anderen Joints uumlber bestimmte Parameter wie beispielsweise minimaler und maximaler Drehwinkel Antriebskraft und maximale Rotationsgeschwindigkeit der Achsen konfiguriert werden Auszligerdem ist der Hinge2 Joint der einzige Joint bei dem der Parameter Federung (Suspension) implementiert ist

2212 Oberflaumlcheneigenschaften mit dem Contact Joint Wer schon einmal bei Regen oder Schnee Auto gefahren ist hat mit Sicherheit feststellen koumlnnen dass sich das Fahrverhalten des Fahrzeugs stark veraumlndert hat im Vergleich zu trockenen Fahrbahnbedingungen Bei Naumlsse oder Schnee wird das Fahrzeug bereits bei geringeren Geschwindigkeiten aus der Kurve getragen und die Raumlder drehen wesentlich schneller durch als bei trockenen Wetterverhaumlltnissen Das Problem liegt in den Reibungseigenschaften der Oberflaumlchen Eine schneebedeckte oder nasse Fahrbahn hat einen geringeren Reibungsfaktor als die gleiche Fahrbahn unter optimalen trockenen Bedingungen

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 17: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

12

Ein Contact Joint wird von der ODE bei der Kollision zweier oder mehr Geoms erzeugt Der Contact Joint besitzt Parameter die das Verhalten des Oberflaumlchenmaterials der Geoms zueinander beschreibt Diese Parameter koumlnnen beispielsweise der Reibungsfaktor μ oder die Elastizitaumlt sein Die Elastizitaumlt bestimmt wie flexibel ein Koumlrper sein soll und wie stark er von anderen Koumlrpern bzw andere Koumlrper von ihm abprallen sollen

Bei der ODE ist es jedoch nicht moumlglich einem Contact Joint die Oberflaumlcheneigenschaften beider Kollisionskoumlrper anzugeben Das hat zur Folge dass man dem Contact Joint lediglich Parameter angeben kann die sich aus den Eigenschaften der sich beruumlhrenden Oberflaumlchen berechnen Eine Moumlglichkeit waumlre beispielsweise der Mittelwert beider Oberflaumlcheneigenschaften In der derzeitigen Implementierung werden beispielsweise der geringste Reibungsfaktor und der groumlszligte Elastizitaumltswert der beiden kollidierenden Oberflaumlchen an den Contact Joint weitergegeben

Eine weitere Moumlglichkeit die Parameter des Contact Joints zu bestimmen ist eine bdquoOberflaumlchenmatrixldquo In der Matrix werden die konkreten Parameter fuumlr den Contact Joint gespeichert wenn unterschiedliche Oberflaumlchen aufeinander treffen Diese brauchen dann nur aus der Matrix abgelesen und in den Contact Joint eingetragen zu werden

2213 Zusammenfassung Die ODE besteht aus der dynamischen Simulation und der Kollisionserkennung In der dynamischen Simulation werden Position Rotation Geschwindigkeit usw der Bodies durch auf sie wirkende Kraumlfte berechnet

Die Bodies koumlnnen uumlber unterschiedliche Joints miteinander verbunden und die Bewegungsfreiheit zueinander eingeschraumlnkt werden

Die Kollisionserkennung erzeugt bei Kontakten zwischen Geoms die sogenannten Contact Joints Diese werden wiederum von der dynamischen Simulation in Kraumlfte umgewandelt die auf die Bodies wirken um die Kollisionen aufzuloumlsen Die entstehenden Kraumlfte haumlngen unter anderem von den Oberflaumlcheneigenschaften und der Kollisionskonstellation der Geoms ab Je nach Eintrittstiefe der Geoms koumlnnen unterschiedliche Kraumlfte auftreten

222 Fahrzeugeigenschaften Die physikalischen Bestandteile um ein Fahrzeug aufbauen zu koumlnnen sind nun alle bekannt Es fehlen noch die konkreten Fahrzeugeigenschaften um diese Bestandteile konfigurieren zu koumlnnen sowie deren Zusammensetzung

Bevor im spaumlteren Kapitel auf den genaueren Aufbau und die Funktionsweise der Fahrzeuge eingegangen wird werden an dieser Stelle kurz die wichtigsten Eigenschaften erlaumlutert die ein Fahrzeug besitzen sollte

Masse Gibt die Masse eines Fahrzeugs an Die Masse fuumlr Chassis und Raumlder wird getrennt behandelt Die Angabe der Masse ist fuumlr die physikalische Simulation wichtig

Abmessungen Die Abmessungen fuumlr Chassis und Raumlder sind wichtig fuumlr die Kollisionserkennung

Oberflaumlchenbeschaffenheit Wichtig fuumlr die physikalische Simulation ist die Oberflaumlchenbeschaffenheit des Chassis als auch der Raumlder Hier wird zB der Reibungsfaktor angeben

Aeroload Diese Eigenschaft bestimmt das Fahrverhalten des Fahrzeugs mit Sie sorgt fuumlr den waumlhrend der Fahrt entstehenden Anpressdruck der durch den Fahrtwind entsteht

Antriebskraft Die Antriebskraft bestimmt wie stark das Fahrzeug beschleunigt werden kann

Bremskraft Entgegen der Antriebskraft sorgt die Bremskraft fuumlr die entsprechende Verzoumlgerung des Fahrzeugs

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 18: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

13

entsprechende Verzoumlgerung des Fahrzeugs

Maximaler Lenkeinschlag Diese Eigenschaft bestimmt wie weit die Raumlder der Lenkachse maximal nach recht und links eingeschlagen werden koumlnnen

Lenkgeschwindigkeit Die Lenkgeschwindigkeit ist dafuumlr zustaumlndig die Raumlder der Lenkachse auf eine gewuumlnschte Geschwindigkeit der Richtungsaumlnderung zu begrenzen So kann nicht sofort von null auf Maximum umgestellt werden

Federung Hier wird angeben wie stark das Fahrzeug gefedert sein soll

Antriebsart Die Antriebsart unterscheidet zwischen Front- Heck und Allradantrieb

Achsabstand Der Achsabstand wird aus den Positionen der Raumlder errechnet und muss nicht explizit angegeben werden Der Achsabstand ist aber wichtig um wirkende Radialkraumlfte vorherberechnen zu koumlnnen Die auftretenden Radialkraumlfte werden von der KI verwendet um zu bestimmen wie schnell sie durch Kurven fahren koumlnnen

223 Aufbau und Funktionsweise der Fahrzeuge Betrachtet man im realen Leben ein Fahrzeug zB ein Pickup Truck so wird man einfach feststellen koumlnnen dass sich dieser Truck aus sehr vielen Bestandteilen zusammensetzt Er hat eine metallene Karosserie vier Raumlder einen Motor ein Radio und jedes dieser Bestandteile besteht wiederum aus einer scheinbar endlosen Anzahl einzelner Teile Ein komplettes Fahrzeug mit all seinen Bestandteilen zu simulieren und grafisch darzustellen ist jedoch viel zu aufwendig und liegt jenseits der Performance die man fuumlr eine Echtzeit-Simulation oder ein Spiel auf einem Heimrechner benoumltigt Daher muss der Aufbau der Fahrzeuge stark eingeschraumlnkt werden

2231 Zusammenspiel zwischen Chassis und Raumldern Die Fahrzeuge werden grafisch auf die in Abbildung 215 dargestellten 3D Modelle fuumlr das Chassis und das Rad reduziert Die einzelnen Modelle koumlnnen beliebig oft in einer Simulation verwendet werden so ist es kein Problem das Rad Modell fuumlr alle vier Raumlder des Fahrzeugs zu verwenden

Abbildung 215 Modelle fuumlr Chassis und Raumlder in Solider- und Drahtgitter-Darstellung

Eine Instanz der Klasse ODECar bekommt die konkreten Modelle zugewiesen die sie fuumlr Chassis und Raumlder verwenden soll Auszligerdem muumlssen die physikalischen geometrischen und sonstigen Eigenschaften fuumlr Chassis und Raumlder festgelegt werden Das bedeutet die grafischen Modelle werden in die Position gebracht in der sich das Fahrzeug befindet Sie bekommen ein Geom fuumlr die Kollision und einen Body fuumlr die Simulation zugewiesen

Das Geom benoumltigt eine genaue Definition Form und Abmessungen der Geometrie Fuumlr die Raumlder eignen sich die Geometrien Capped Cylinder Cylinder Cone oder auch Sphere Fuumlr das Chassis ist eher eine umschlieszligende Box zu empfehlen oder ein composite object das sich aus mehreren Boxen zusammensetzt Ich verwende fuumlr das Chassis vorerst eine umschlieszligende Box und die Raumlder wurden sowohl mit Cones Capped Cylindern und Spheres getestet

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 19: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

14

Der Body benoumltigt lediglich die Information uumlber die Masse des Objektes Allerdings muumlssen die Oberflaumlcheneigenschaften der Objekte noch irgendwo gespeichert werden so dass diese bei einer Kollision wieder ausgelesen werden koumlnnen In der scApe-Engine gibt es eine abstrakte Klasse fuumlr einen physikalischen Body die diese Information aufnehmen kann

Sind alle Geoms und Bodies mit den gewuumlnschten Parametern versehen und befinden sich die Objekte an der richtigen Position und in der korrekten Lage muumlssen sie miteinander verbunden werden Um die Raumlder mit dem Chassis zu verbinden werden die in Kapitel 2211 vorgestellten Hinge2 Joints verwendet Der Hinge2 Joint wird so zwischen Chassis und Rad angebracht dass sich der Anchor im Mittelpunkt des entsprechenden Rads befindet Die Axis1 entspricht dem Stoszligdaumlmpfer und die Axis2 zeigt horizontal nach auszligen

Abbildung 216 Hinge2 Radaufhaumlngung am Fahrzeug

Auszligerdem muumlssen die Werte fuumlr die Federung (Suspension) der Raumlder und der maximale Lenkeinschlag fuumlr die Raumlder festgelegt werden An den lenkenden Raumldern entspricht das dem gewuumlnschten Lenkeinschlag fuumlr das Fahrzeug und an den nicht lenkenden Raumldern muss null angeben werden damit diese stabil in der Fahrspur bleiben

Damit ist der Aufbau mithilfe der ODE Komponenten komplett

2232 Lenken und Beschleunigen Fahrzeuge werden uumlber bestimmte Schnittstellen gesteuert die sowohl von der KI als auch von menschlichen Benutzern verwendet werden Das bedeutet dass die Benutzer keinen Einfluss auf die Umsetzung der Steuerung haben

Lenken

Fuumlr das Lenken ist die Schnittstelle bdquosetSteeringldquo in der Car-Klasse zustaumlndig Der Parameter kann innerhalb des Intervalls [-10 10] angegeben werden und bestimmt die Staumlrke des Lenkeinschlags ndash10 bedeutet maximaler Lenkeinschlag nach links und 10 realisiert den maximalen Lenkeinschlag nach rechts waumlhrend 00 keinen Lenkeinschlag zur Folge hat Der endguumlltige Lenkeinschlag des Fahrzeugs ist dann abhaumlngig von seinem maximal moumlglichen Lenkeinschlag

Erlaubt ein Fahrzeug beispielsweise einen maximalen Lenkeinschlag von 055 (Angabe im Bogenmaszlig) und die Eingabe fuumlr das Steering betraumlgt 025 so wird der endguumlltige Lenkeinschlag berechnet durch 025 055 = 01375

Die entsprechende Implementierung in diesem Fall uumlber die ODE sorgt dafuumlr dass dieser absolute Wert den Lenkeinschlag des Fahrzeugs bestimmt Dazu werden die entsprechenden Parameter fuumlr die Rotationsbeschraumlnkung der Hinge2 Joints eingestellt

In einem realen Fahrzeug muss der Fahrer mit einer Kraft uumlber das Lenkrad auf die Lenkachse einwirken um die Raumlder einschlagen zu koumlnnen Laumlsst der Fahrer das Lenkrad waumlhrend der Kurvenfahrt los so bewirken die auftretenden Kraumlfte an den lenkenden Raumldern dass diese wieder geradeaus ausgerichtet werden

Diese Kraumlfte fuumlhren in der Simulation dazu dass die Raumlder bei hohen Geschwindigkeiten kaum mehr einzuschlagen sind Daher muumlssen die Joints so konfiguriert werden dass die auf die lenkenden Raumlder wirkenden Kraumlfte ignoriert

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 20: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Infrastruktur

15

werden und der Lenkeinschlag nicht beeinflusst wird Um dies umsetzen zu koumlnnen werden spezielle Parameter verwendet die von der ODE bereitgestellt werden

Beschleunigen und Bremsen uumlber die Joints

Die Beschleunigung wird uumlber die bdquosetAccelerationldquo Schnittstelle gesteuert Genau wie die bdquosetSteeringldquo Schnittstelle wird dieser Parameter innerhalb des Intervalls [-10 10] angeben Hier entspricht ndash10 der maximalen Bremskraft und 10 der maximalen Beschleunigung waumlhrend 00 keinen Einfluss hat Dieser Parameter ist ebenfalls keine absolute Angabe sondern die endguumlltige Kraft die zur Beschleunigung oder zur Verzoumlgerung eingesetzt werden soll haumlngt von der Motorkraft der Getriebeumsetzung und der Kupplung und deren Wirkungsgrade sowie der Bremskraft des Fahrzeugs ab Motor und Getriebe sind zZt aus der Implementierung genommen um das Fahrzeugmodell zu vereinfachen

Um die entsprechende Beschleunigung umzusetzen werden die Parameter fuumlr die momentan wirkende Kraft und die maximale Umdrehungsgeschwindigkeit der Antriebsachsen bzw der sie nachbildenden Joints gesetzt Das simuliert die Antriebskraft des Motors die auf die Raumlder wirkt

Beschleunigen und Bremsen uumlber direkte Kraumlfte

Ein anderer Weg der Beschleunigung bzw der Verzoumlgerung besteht darin die Kraumlfte uumlber einen gewissen Zeitraum direkt an die Raumlder anzulegen als ob Seile angebracht waumlren die das Fahrzeug ziehen Beim Bremsvorgang muumlssen diese Kraumlfte dann entsprechend entgegen der Fahrtrichtung wirken um das Fahrzeug zum Stillstand zu bewegen

224 Justierung des Fahrverhaltens Eine der wohl zeitintensivsten Aufgaben ist die Einstellung der vielen moumlglichen Parameter um ein zufriedenstellendes Fahrverhalten der Fahrzeuge zu bekommen Ohne bestimmte Hilfsmittel ist es jedoch kaum moumlglich dies zu erreichen Die haumlufigsten Probleme sind

Das Fahrzeug rutscht bei normalen Reibungsverhaumlltnissen zu sehr in Kurven

Das Fahrzeug beginnt schnell zu kippen und uumlberschlaumlgt sich leicht wenn die Reibungskraumlfte etwas erhoumlht werden

Das Fahrverhalten des Fahrzeugs wird als unrealistisch empfunden wenn es von einem Benutzer gefahren wird

Der letzte Punkt ist wohl der schwierigste von allen Ein menschlicher Benutzer ist meistens sehr geuumlbt im Umgang mit Fahrzeugen und besitzt ein sehr gutes intuitives und natuumlrliches Gefuumlhl fuumlr physikalisches Verhalten Daher fallen einem menschlichen Betrachter physikalisch unrealistische Verhalten recht schnell auf Im Rahmen dieser Arbeit kann aus zeitlichen Gruumlnden nicht auf diesen Punkt eingegangen werden

Um das fruumlhzeitige Uumlberschlagen der Fahrzeuge in Kurven zu verhindern gibt es folgende Dinge zu beachten

Der Schwerpunkt des Fahrzeugs kann weiter nach unten verschoben werden

Die Daumlmpfung des Fahrzeugs kann haumlrter eingestellt werden

Der Aeroload kann erhoumlht werden dh das Fahrzeug unterliegt einem houmlheren Anpressdruck als normal Ein Formel1-Wagen wird beispielsweise bei Houmlchstgeschwindigkeiten vom Fahrtwind mit bis zu 27 Tonnen auf den Boden gedruumlckt [F1TC]

Man kann den Fahrzeugen noch zusaumltzlich Gewichte an die Raumlder haumlngen bzw zusaumltzliche Kraumlfte auf die Raumlder wirken lassen die sie auf den Boden druumlcken

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 21: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 2

16

23 Konfigurationsdateien Um Simulationskonfigurationen nicht fest im Programmcode implementieren zu muumlssen werden Konfigurationsdateien eingesetzt Es gibt drei unterschiedliche Arten von Konfigurationsdateien Eine Art konfiguriert die Fahrzeuge eine ist fuumlr die KI zustaumlndig und die dritte stellt das Rennen zusammen

231 Zusammensetzung der Fahrzeuge Die Fahrzeuge koumlnnen auf unterschiedliche Art und Weise definiert werden In den bdquocarldquo Dateien werden alle notwendigen Eigenschaften eines Fahrzeugs gespeichert so dass sie in einer beliebigen Simulation wieder geladen werden koumlnnen

Die car Dateien sind in XML verfasst und die Tags werden auf die entsprechenden Fahrzeugeigenschaften abgebildet dh die innerhalb der Tags stehenden Werte werden den entsprechenden Eigenschaften des Fahrzeugs zugewiesen

232 Konfiguration der Kuumlnstlichen Intelligenz In den bdquoaipldquo Dateien wird angegeben welche KI-Technik verwendet wird und wie diese parametrisiert werden soll

233 Festlegung der Rennaufstellung Um eine Rennsimulation durchfuumlhren zu koumlnnen muss sowohl eine Rennstrecke als auch die teilnehmenden Fahrzeuge und die ihnen zugewiesene KI ausgewaumlhlt werden Zusaumltzlich muss festgelegt werden wie viele Runden das Rennen andauern soll

In der bdquoTrackxmlldquo Datei wird die Besetzung der Rennstrecke festgelegt Der Name der Datei ist zur Zeit noch auf Trackxml festgelegt soll aber spaumlter dahingehend geaumlndert werden so dass es fuumlr jede Strecke eine eigene XML-Datei gibt

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 22: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

17

3 Kuumlnstliche Intelligenz

In diesem Kapitel wird auf die verwendeten Techniken der Kuumlnstlichen Intelligenz eingegangen die verwendet werden um die Fahrzeuge zu steuern Zuerst wird jedes grundlegende Konzept der verwendeten Technik erklaumlrt und anschlieszligend dessen Umsetzung erlaumlutert

Dieses Kapitel ist ein einfuumlhrender Uumlberblick uumlber die unterschiedlichen Technologien Es beinhaltet noch nicht die Anwendung dieser Techniken um mit ihnen eine Fahrzeugsteuerung umzusetzen Auf die konkrete Anwendung wird in Kapitel 4 eingegangen

Mit Ausnahme von Feedback Loops sind alle KI-Verfahren wiederverwendbar implementiert Sie sind also sofort fuumlr andere Aufgaben einsatzbereit Die Feedback Loops bestehen in den meisten Faumlllen aus nur ein oder zwei Zeilen Quellcode daher wurde von einer Abstraktion abgesehen

Thema Seite

31 Finite-State Machine 18

32 Feedback Loop 19

33 Fuzzy-Logic 21

34 Neuronale Netze 24

35 Genetische Algorithmen 27

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 23: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

18

31 Finite-State Machine In einem Autorennen gibt es verschiedene Phasen die das Rennen charakterisieren Zum Beispiel gibt es zu Beginn eines Rennens eine Start-Phase In dieser Phase warten alle Fahrer in ihrer Startposition auf das Startsignal um das eigentliche Rennen beginnen zu duumlrfen Nach dem Startsignal beginnt die Renn-Phase Hier versucht jeder Fahrer schneller zu fahren als die anderen und diese gegebenenfalls zu uumlberholen In manchen Rennen kann es fuumlr die Fahrer auch zu kurzen Unterbrechungen der Renn-Phase kommen indem sie zB an die Box fahren muumlssen um evtl die Reifen zu wechseln und Treibstoff aufzunehmen Diese Phase koumlnnte man die Pitstop-Phase nennen Nach dem Betanken und dem Reifenwechsel kehrt der Fahrer wieder auf die Rennstrecke und in die Renn-Phase zuruumlck Hat er die Ziellinie uumlberquert und das Rennen abgeschlossen so beginnt fuumlr ihn die Auslauf-Phase

In allen Phasen des oben geschilderten Beispiels verfolgt der Fahrer bestimmte unterschiedliche Ziele In der Start-Phase wartet er auf das Startsignal in der Renn-Phase versucht er die Rennstrecke moumlglichst schnell zu absolvieren und so weiter Fuumlr die Implementierung dieser Verhaltensweisen ist es hilfreich wenn festgehalten wird in welcher Phase sich der Fahrer gerade befindet Dazu eignet sich eine Finite-State Machine (kurz FSM) auch Zustandsautomat genannt

311 Konzept Eine FSM besteht aus einer endlichen Anzahl von eindeutigen Zustaumlnden ZB koumlnnte man eine FSM fuumlr ein automatisches Garagentor in die Zustaumlnde bdquoOffenldquo bdquoSchlieszligvorgangldquo bdquoGeschlossenldquo und bdquoOumlffnungsvorgangldquo einteilen Je nach Zustand in dem sich die FSM befindet wird ein bestimmter Programmcode ausgefuumlhrt

Um Zustaumlnde wechseln zu koumlnnen erwartet die FSM bestimmte Eingaben Je nach Eingabe geht die FSM in einen anderen entsprechenden Zustand uumlber Die Eingaben die eine FSM verarbeiten kann bestimmen in welche Zustaumlnde sie uumlberfuumlhren Sie muumlssen genau wie die Zustaumlnde zuvor definiert werden Fuumlr das beispielhafte Tor waumlre es sinnvoll die Eingaben bdquooumlffnenldquo und bdquoschlieszligenldquo sowie bdquoobenldquo und bdquountenldquo anzubieten Die ersten beiden Eingaben koumlnnten vielleicht von einer Fernbedienung ausgeloumlst werden waumlhrend die letzteren beiden von Schaltern ausgeloumlst werden die signalisieren dass das Tor seine Endposition erreicht hat

Angenommen die beispielhafte FSM befindet sich zZt im Zustand bdquoOffenldquo und bekommt die Eingabe bdquoschlieszligenldquo so kann man aus der Abbildung 31 entnehmen dass die FSM daraufhin ihren Zustand in bdquoSchlieszligvorgangldquo aumlndern wuumlrde

Abbildung 31 Grafische Darstellung einer FSM zur Torsteuerung

In Abbildung 31 werden die Zustaumlnde der FSM als orangene Rechtecke dargestellt in denen sich der Name des Zustandes befindet Die Pfeile symbolisieren die Uumlbergaumlnge zwischen zwei Zustaumlnden Die Eingabe die den jeweiligen Uumlbergang bewirkt steht direkt an dem Pfeil

Aktueller Zustand Eingabe Folgender Zustand

Offen schlieszligen Schlieszligvorgang

Schlieszligvorgang unten Geschlossen

Schlieszligvorgang oumlffnen Oumlffnungsvorgang

Geschlossen oumlffnen Oumlffnungsvorgang

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 24: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

19

Oumlffnungsvorgang oben Offen

Oumlffnungsvorgang schlieszligen Schlieszligvorgang

Abbildung 32 Zustandsaumlnderungen der FSM zur Torsteuerung

Sollte eine Eingabe erfolgen die in dem aktuellen Zustand nicht verarbeitet werden kann dh nicht definiert ist so bleibt der aktuelle Zustand bestehen In dem Beispiel waumlre das der Fall wenn der aktuelle Zustand bdquoOffenldquo oder bdquoOumlffnungsvorgangldquo waumlre und die Eingabe bdquooumlffnenldquo erfolgen wuumlrde

Die FSM ist ein aus der Informatik bekannter deterministischer endlicher Automat Eine Eingabe fuumlhrt von einem Zustand nur maximal zu einem anderen Zustand Nicht wie bei nichtdeterministischen endlichen Automaten bei denen eine Eingabe durchaus von einem Zustand zu unterschiedlichen anderen Zustaumlnden fuumlhren kann

Fuumlr weitere Informationen verweise ich auf die Quellen Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1]

312 Umsetzung Die Implementierung der FSM besteht aus den Klassen bdquoStateldquo und bdquoFSMldquo

Die Klasse State implementiert die Zustaumlnde und enthaumllt eine eindeutige ID so dass jede Instanz der Klasse eindeutig identifiziert werden kann Der Programmierer ist jedoch dafuumlr verantwortlich eindeutige IDs zu vergeben Die Klasse selbst ist nicht in der Lage mehrdeutige IDs zu entdecken oder gar zu unterscheiden

Des Weiteren besitzt die Klasse State eine bdquoKey-Value Mapldquo in der die Uumlbergaumlnge abgelegt werden Ein Uumlbergang besteht aus einer Eingabe und einem Zielzustand In der Map wird die Eingabe als Key gehandhabt und der Zielzustand ist der dazugehoumlrige Wert Ein Zustand kann beliebig viele Uumlbergaumlnge besitzen jedoch sollte gewaumlhrleistet sein dass eine Eingabe nur einmal pro Zustand vorkommt denn der Zustand ist nicht in der Lage zwischen mehrdeutigen Eingaben zu unterscheiden

In der Klasse FSM kann eine beliebige Anzahl an Zustaumlnden ebenfalls in einer Key-Value Map aufgenommen werden Bekommt die FSM eine Eingabe wird diese an den aktuellen Zustand weitergegeben Der Zustand pruumlft ob die Eingabe enthalten ist und gibt gegebenenfalls den Zielzustand zuruumlck Sollte die Eingabe nicht enthalten sein so gibt der Zustand seine eigene ID zuruumlck Die FSM pruumlft die vom Zustand erhaltene ID ebenfalls darauf ob dieser in der FSM enthalten ist Sollte der Zustand gefunden werden wird dieser als aktuell gesetzt andernfalls wird der vorherige Zustand beibehalten

32 Feedback Loop Faumlhrt man selbst ein Fahrzeug entlang einer Straszlige so empfinden wir Menschen den Lenkvorgang als sehr intuitiv und einfach Bewegen wir uns in einer Kurve auf die Mittellinie zu oder driftet das Fahrzeug weiter nach auszligen so muumlssen wir das Lenkrad entsprechend gegenlenken und evtl etwas bremsen

Konkret bedeutet das dass die Strecke in eine bestimmte Richtung fuumlhrt die Fahrtrichtung jedoch von dieser abweicht Der auftretende Unterschied zwischen der Streckenrichtung und der Fahrtrichtung des Fahrzeugs wird als Fehler betrachtet den es zu minimieren gilt Dieser Fehler flieszligt in den Lenkeinschlag ein und bestimmt die neue Fahrtrichtung Diesen Vorgang nennt man bdquoRegelungldquo und muss von der Kuumlnstlichen Intelligenz umsetzen werden

Laut der online Enzyklopaumldie Wikipedia [WIKI] ist die Definition fuumlr die Regelung folgende bdquoBei einer Regelung wird die zu regelnde Groumlszlige [] eines Prozesses fortlaufend gemessen und mit einem vorgegebenen Wert [] verglichen Besteht zwischen diesen beiden Groumlszligen eine Abweichung [] wird - abhaumlngig von der Regelabweichung - eine den Prozess beeinflussende Stellgroumlszlige [] derart veraumlndert dass die Regelgroumlszlige mit dem Fuumlhrungswert wieder in Uumlbereinstimmung gebracht wirdldquo

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 25: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

20

321 Konzept Laut Terence J Bordelon [FBLP] gibt es Proportional- Integral- und Differential-Regler die miteinander kombiniert werden koumlnnen Fuumlr diese Arbeit werden nur die P-Regler verwendet

Ein P-Regler funktioniert wie der in Abbildung 33 dargestellte bdquoRegelkreisldquo Dort sieht man dass ein momentaner bdquoIstwertldquo eines Systems uumlber ein bestimmtes Regelverhalten zu dem gewuumlnschten bdquoSollwertldquo uumlberfuumlhrt wird Der Istwert ist der momentane Wert der in dem System vorhanden ist und der Sollwert ist der gewuumlnschte Wert der erreicht werden soll Entscheidend fuumlr die Anpassung ist die bdquoRegeldifferenzldquo dh der Unterschied der beiden Werte Die Regeldifferenz wird mit dem bdquoProportional-Beiwert Kpldquo multipliziert und das Resultat flieszligt wieder in das System ein und bewirkt die Anpassung des Istwertes der wiederum in den Regelkreis zuruumlckflieszligt

Abbildung 33 Blockdiagramm einer P Feedback Loop Quelle [FBLP]

Folgende Regelverhalten koumlnnen auftreten

In Abbildung 34 wird ein typischer stabiler Regelvorgang gezeigt bdquoCommandldquo stellt den Sollwert dar waumlhrend der Kurvenverlauf den zeitabhaumlngigen Istwert repraumlsentiert Zu Beginn des Regelvorgangs naumlhert sich der Istwert steil von unten an den Sollwert heran bdquouumlbersteuertldquo jedoch dh er schieszligt uumlber den Sollwert hinaus Der Regelkreis merkt das und versucht den Fehler in entgegengesetzter Richtung zu kompensieren Jetzt naumlhert sich der Istwert von oben an den Sollwert an bewegt sich aber wieder uumlber das Ziel hinaus Der Fehler ist jedoch wesentlich kleiner als zuvor Dieser Vorgang wiederholt sich staumlndig und der Fehler wird immer kleiner bis der Sollwert annaumlhernd oder ganz erreicht ist

Die folgende Abbildung 35 zeigt einen vom Ablauf aumlhnlichen Vorgang In einem Spiel sind die Regelintervalle meistens sehr klein Daher werden auch viele Korrekturen durchgefuumlhrt Ein geringer Proportional-Beiwert Kp fuumlhrt zu einem sich an den Sollwert annaumlhernden Kurvenverlauf ohne zu uumlbersteuern

Ein bdquoinstabiler Regelvorgangldquo wird in Abbildung 37 gezeigt Er zeigt ein Verhalten bei dem der Fehler im Laufe der Zeit immer groumlszliger wird Dieses Verhalten ist unerwuumlnscht und kann zB an zu groszligen Regelintervallen oder an einem zu groszligen Proportional-Beiwert Kp liegen

Wenn sich der Fehler im Laufe des Regelvorgangs nicht aumlndert befindet er sich an der bdquoStabilitaumltsgrenzeldquo wie in Abbildung 36 zu sehen ist

Abbildung 34

Typischer stabiler Regelvorgang Quelle

[KIiR] [FBLP]

Abbildung 35 In-

game P loop Quelle [KIiR] [FBLP]

Abbildung 36

Stabilitaumltsgrenze Quelle [KIiR] [ETEI]

Abbildung 37

Instabiler Regelvorgang Quelle

[KIiR] [ETEI]

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 26: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

21

Detailliertere Informationen zu diesem Thema koumlnnen der Quelle Feedback ndash Implementing Real-World Control [FBLP] entnommen werden

322 Umsetzung Die Formeln der Regelkreise fuumlr Lenkeinschlag und Beschleunigung sind dem Blockdiagramm aus Abbildung 33 nachempfunden Zusaumltzlich flieszligt noch die vergangene Zeit zwischen zwei Regelzyklen mit ein Die vergangene Zeit wir mit dem Proportional-Beiwert Kp multipliziert

Die Allgemeinen Formel ist nach Terence J Bordelon [FBLP]

dtKpFCommandOO ff )(1

Abbildung 38 Allgemeine Formel fuumlr P-Feedback Loop

Zur Berechnung des neuen Wertes Of wird durch (Command-F) die Fehlergroumlszlige bestimmt Command stellt den Sollwert dar und F das Feedback Signal das aus dem aktuellen Stand des Systems stammt Die Fehlergroumlszlige wird mit der zwischen den Regelzyklen vergangenen Zeit und dem Proportional-Beiwert Kp multipliziert Die beiden Werte geben an wie schnell sich dem Sollwert angenaumlhert werden soll Das Ergebnis wird auf den Wert des vorherigen Regelzyklus Of-1 aufaddiert

Fuumlr den Lenkeinschlag und die Beschleunigung werden folgende Formeln verwendet

dtKplagLenkeinschnschlagZiellenkeilagLenkeinsch )(

Abbildung 39 P-Feedback Loop Formel fuumlr Lenkeinschlag

dtKpgungBeschleunieunigungZielbeschlgungBeschleuni )(

Abbildung 310 P-Feedback Loop Formel fuumlr Beschleunigung

33 Fuzzy-Logic Faumlhrt ein Fahrzeug auf eine enge Kurve nach rechts oder links zu und ist die Fahrbahn nass so sollte das Fahrzeug besser abgebremst werden um nicht von der Fahrbahn zu geraten Fuzzy-Logic kann solche Situationen verarbeiten

Wie mit den Feedback Loops ist man mit der Fuzzy-Logic in der Lage Dinge zu regeln Es gibt in der Fuzzy-Logic allerdings nicht nur Istwert und Sollwert Man kann mit Fuzzy-Logic komplexere Sachverhalte erfassen und auswerten

Moumlchte man beispielsweise eine Spezies in ihrer Intelligenz klassifizieren koumlnnte man laut Mat Buckland [PGAI] folgende drei IQ-Mengen definieren

Dumb (einfach) = 70 71 72 89

Average (durchschnittlich) = 90 91 109

Clever (schlau) = 110 101 129

Abbildung 311 IQ-Gruppierung durch diskrete Mengen Quelle [PGAI]

Ein Wesen mit einem IQ von 109 faumlllt somit in die Menge Average und ein Wesen mit einem IQ von 110 in die Menge Clever obwohl der Unterschied gerade einmal 1 betraumlgt Es waumlre also nicht sonderlich fair ein Wesen mit einem IQ von 109 und gleichzeitig ein anderes mit einem IQ von 90 als durchschnittlich intelligent zu

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 27: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

22

bezeichnen und sie somit in die selbe Menge zu stecken obwohl der Unterschied 19 betraumlgt waumlhrend 110 bereits als Clever gilt

Man muss also bei solchen Problemen versuchen einen flieszligenderen Uumlbergang zu finden Und dabei hilft die Fuzzy-Logic

331 Konzept In der Fuzzy-Logic wird nicht nur zwischen logisch 0 (false) und 1 (true) unterschieden sondern es gibt eine prozentuale Abbildung zwischen 00 (0) und 10 (100) Im Falle der IQ-Gruppierung kann also ein Wesen wie in Abbildung 312 dargestellt mit einem IQ von 115 eine Zugehoumlrigkeit von 025 zu Average und von 075 zu Clever besitzen Umgangssprachlich wuumlrde man wohl sagen bdquoDieses Wesen ist recht Cleverldquo oder bdquo nicht sehr durchschnittlichldquo Diese Zugehoumlrigkeit wird bdquodegree of membershipldquo (kurz DOM) genannt

Abbildung 312 FLV mit den drei Sets Dumb Average Clever Quelle [PGAI]

Die Umsetzung von solchen Gruppierungen nennt man bdquoFuzzy linguistic variableldquo (kurz FLV) Diese FLV setzt sich aus ein oder mehreren bdquoFuzzy Setsldquo zusammen In Abbildung 312 besitzt die FLV IQ die drei Sets Dumb Average und Clever

Abbildung 313 Unterschiedliche Fuzzy-Sets Quelle [PGAI]

In Abbildung 313 werden unterschiedliche Fuzzy-Sets dargestellt Bei dem bdquoSingletonldquo Set handelt es sich um kein richtiges Fuzzy-Set Es ist ein spezielles Set welches das Verhalten eines diskreten Wertes hat

Die Fuzzy-Logic bietet einige Operatoren an die man auch in der booleschen Mathematik verwendet So koumlnnen Fuzzy-Sets beispielsweise mit den Operatoren AND OR oder NOT verknuumlpft werden

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 28: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

23

Abbildung 314 Fuzzy-AND Operator Quelle

[PGAI]

Abbildung 315 Fuzzy-OR Operator Quelle

[PGAI]

Anhand der definierten FLVs koumlnnen mit den Operatoren gewuumlnschte Regeln erstellt werden Eine Regel besteht immer aus bdquoantecedentldquo (Bedingungsteil) und bdquoconsequentldquo (Aktionsteil) in der Form

IF antecedent THEN consequent

Beispiel

IF (engeKurveLinks OR engeKurveRechts) AND streckeNass THEN geschwindigkeitSehrLangsam

Der Bedingungsteil und der Aktionsteil verweisen immer auf zuvor in FLVs definierte Fuzzy-Sets In dem obigen Beispiel sind diese Fuzzy-Sets bdquoengeKurveLinksldquo bdquoengeKurveRechtsldquo bdquostreckeNassldquo und bdquogeschwindigkeitSehrLangsamldquo

Durch die Auswertung aller Regeln entsteht eine Ergebnismatrix aus den aktivierten Fuzzy-Sets der Regel-Aktionen die sogenannte bdquofuzzy associative matrixldquo (kurz FAM) Ein Beispiel einer Ergebnismatrix wird in Abbildung 316 gezeigt Anhand dieser Matrix werden die DOMs der einzelnen Aktions-Fuzzy-Sets bestimmt Wie in Abbildung 317 zu sehen ist beschraumlnkt der jeweils houmlchste DOM eines Aktions-Sets aus der FAM den maximal moumlglichen Wert des entsprechenden Aktions-Sets Anschlieszligend werden die Aktions-Sets wieder zusammengefasst wie Abbildung 318 zu entnehmen ist

Abbildung 316 Ergebnismatrix nach

Anwendung von neun Fuzzy-Regeln Quelle [PGAI]

Abbildung 317 Einschraumlnkung der Set-Maxima

durch den DOM der FAM Quelle [PGAI]

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 29: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

24

Abbildung 318 Zusammensetzung der eingeschraumlnkten Fuzzy-Sets Quelle [PGAI]

Die zusammengefassten Sets koumlnnen nun wieder in einen konkreten Wert umgerechnet werden Diesen Vorgang nennt man bdquoDefuzzifikationldquo Der dadurch entstehende Wert kann als endguumlltige Ausgabe betrachtet werden

Zur Defuzzifikation eignen sich mehrere Vorgehensweisen Die exakteste Methode ist die Bestimmung des Schwerpunktes der zusammengefassten Sets Diese Methode ist allerdings recht aufwaumlndig und daher auch langsam

In einer anderen Methode werden die Durchschnittswerte der Set-Maxima verwendet Ein Set-Maximum befindet sich auf der x-Achse da wo sein DOM 10 betraumlgt Bei dreieckigen Sets ist das die Spitze Bei Plateau Sets wie Right- oder Left-Shoulder wird der Durchschnitt vom Beginn bis zum Ende des Plateaus genommen

Die Durchschnittswerte werden mit den aus der FAM gewonnenen DOM-Werten fuumlr das entsprechende Aktions-Set multipliziert und anschlieszligend aufaddiert Die Summe wird durch die Summe der houmlchsten DOM Werte fuumlr unterschiedliche Aktions-Sets geteilt

Abbildung 319 Beispiel fuumlr den Durchschnittswert der Maxima Quelle [PGAI]

Umfangreichere Informationen koumlnnen der Quelle Programming Game AI by Example [PGAI] und Spieleprogrammierung Gems 1 [SpG1] entnommen werden

332 Umsetzung In dieser Arbeit wird der dem Buch bdquoProgramming Game AI by Examplerdquo [PGAI] beiliegende Quellcode von Mat Buckland verwendet

Diese Implementierung sieht mehrere Klassen fuumlr die unterschiedlichen Fuzzy-Sets wie bdquoLeftShoulderldquo oder bdquoTriangleldquo vor Die Sets werden in einer Klasse fuumlr FLVs gesammelt Die FLVs wiederum werden in sogenannten Modulen zusammengefasst

Um Regeln umsetzen zu koumlnnen gibt es Klassen fuumlr die Operatoren und fuumlr die Regeln

34 Neuronale Netze Alle bisherigen Techniken muumlssen von Entwicklern eingestellt werden Der Lernvorgang wird also nicht von der eigentlichen KI absolviert sondern wird durch den Optimierungsprozess des Entwicklers geleistet Neuronale Netze koumlnnen selbst lernen ihre Aufgabe zu loumlsen Sie stellen ein technisches Modell eines biologischen Gehirns dar

341 Konzept Da Neuronale Netze einem biologischen Gehirn einer Ansammlung von miteinander verbundenen Nervenzellen nachempfunden sind wird kurz auf die Funktionsweise

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 30: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

25

biologischer Nervenzellen eingegangen In Abbildung 320 wird der schematische Aufbau von Neuronen dargestellt

Abbildung 320 Schematischer Aufbau von Neuronen Quelle [VNN]

Die bdquoSomaldquo ist der eigentlich Zellkoumlrper einer biologischen Nervenzelle Der bdquoNucleusldquo (dt Nukleus) bildet deren Zellkern Uumlber die bdquoDendritenldquo gelangen Eingabereizungen an die Nervenzelle die von dieser gesammelt werden und die dann daraus ein Ausgabesignal erstellt Dieses Signal wird uumlber das bdquoAxonldquo zu mehreren Dendriten anderer Nervenzellen gefuumlhrt Axon und Dendriten sind mittels bdquoSynapsenldquo miteinander verbunden Waumlhrend der Aufbau eines Neurons recht einfach ist ist die Vernetzung zwischen ihnen sehr komplex

Der Discovery Channel [DCMM] schreibt in einem Artikel uumlber den bdquoMikrokosmos Menschldquo bdquoUnser Gehirn besteht schaumltzungsweise aus bis zu 100 Milliarden dieser Neuronen Aber nicht nur die Anzahl sondern auch ihre Vernetzung ist beachtlich Jede Hirnzelle ist mit Tausenden anderen verbunden Auf diese Weise entsteht ein aumluszligerst komplexes Netzwerkldquo

Der Aufbau der kuumlnstlichen Neuronen ist dem seiner biologischen Vorbilder wie in Abbildung 321 nachempfunden Uumlber die Verbindungen X1 bis Xn werden die Eingaben in das Neuron gefuumlhrt Das Neuron bewertet (multipliziert) diese Eingaben anhand der Gewichtungen W1 bis Wn

Abbildung 321 Das kuumlnstliche Neuronenmodell Quelle [VNN]

Anschlieszligend werden die gewichteten Eingaben zusammengefasst (addiert) und auf sie die Ausgabe- (Output-) Funktion angewendet Der Verlauf der Ausgabe-Funktion bestimmt den konkreten Ausgabewert der das Neuron verlaumlsst Die Ausgabe-Funktionen koumlnnen beliebige Formen annehmen wie Abbildung 322 bis Abbildung 324 beispielsweise zeigen

Abbildung 322 1-Betrag Funktion Quelle [VNN]

Abbildung 323 Sprung Funktion Quelle [VNN]

Abbildung 324 Linear

begrenzte Funktion Quelle [VNN]

Mit einem bdquoBiasldquo einem zusaumltzlich gewichteten Eingang fuumlr ein Neuron dessen Wert immer 1 betraumlgt kann die Zusammenfassung der Eingangssignale beeinflusst werden

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 31: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

26

Der eigentlichen Eingangsumme wird zusaumltzlich der Bias aufaddiert und veraumlndert so den urspruumlnglichen Wert auf den die Ausgangs-Funktion angewendet wird Der Effekt ist dass die Ausgabefunktionen scheinbar entlang der x-Achse verschoben werden Die Funktion hat sich allerdings nicht veraumlndert

Wie im biologischen Vorbild dienen die Ausgaumlnge der Neuronen wieder als Eingaumlnge fuumlr andere Neuronen Somit entsteht ein Netzwerk aus vielen Neuronen Es koumlnnen unterschiedliche bdquoTopologienldquo Anordnungen der Neuronen erstellt werden Neuronen werden in Schichten organisiert und koumlnnen auch ruumlckgekoppelt werden dh ein Ausgang eines Neurons kann als Eingang fuumlr sich selbst oder fuumlr ein Neuron einer vorherigen Schicht verwendet werden In Abbildung 325 werden typische Organisationen fuumlr Neuronen dargestellt Im Rahmen dieser Arbeit werden lediglich vorwaumlrtsgerichtete Netze verwendet dh die Ausgaumlnge der Neuronen werden lediglich mit Neuronen folgender Schichten verknuumlpft und gehen nicht in zuvor liegende Schichten Es gibt also keine Ruumlckkopplung

Abbildung 325 Beispiel fuumlr Neuronale Netz-Topologien Quelle [VNN]

Um ein Neuronales Netzwerk auf seine Aufgabe zu spezialisieren werden verschiedene Lernverfahren angewandt Wie in Abbildung 326 dargestellt unterscheidet man grundlegend zwischen zwei Arten von Lernalgorithmen dem bdquouumlberwachtenldquo und dem bdquounuumlberwachtenldquo Lernen

Abbildung 326 Klassen von Lernalgorithmen Quelle [TdnN]

Unter uumlberwachtem Lernen versteht man das Neuronale Netz mit einer Menge an Eingaben zu versorgen fuumlr die jede korrekte Ausgabe bereits vorher bekannt ist Stimmte die Ausgabe des Netzes mit der korrekten Antwort uumlberein so kann die naumlchste Eingabe betrachtet werden Stimmt die Ausgabe nicht mit der korrekten Antwort uumlberein so muumlssen die Gewichte korrigiert werden Dieser Vorgang wird wiederholt bis alle Eingaben die korrekte Ausgabe haben

Uumlberwachtes Lernen wird weiterhin unterteilt in bdquoKorrigierendes Lernenldquo und bdquoVerstaumlrkungslernenldquo Verstaumlrkungslernen unterscheidet lediglich ob die Ausgabe richtig oder falsch ist Daraufhin werden die Gewichte manipuliert Das Korrigierende Lernen vergleicht die Ausgabe mit der Eingabe bildet daraus eine Fehlergroumlszlige und laumlsst diese in die Korrektur der Gewichte einflieszligen

Ein verbreiteter Lernalgorithmus fuumlr uumlberwachtes Lernen vorwaumlrtsgerichteter Neuronaler Netze ohne Ruumlckkopplung ist der bdquoBackpropagationldquo-Algorithmus Dieser Algorithmus uumlbergibt zu Ablaufbeginn die Eingaben an das Netz und betrachtet die Ausgabe Hierbei werden alle Ausgaben der einzelnen Schichten gespeichert Anschlieszligend wird die Ausgabe des Netzes mit der gewuumlnschten Ausgabe verglichen

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 32: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

27

und die Fehlergroumlszlige bestimmt Nun wird das Netz Schicht fuumlr Schicht ruumlckwaumlrts durchlaufen und die entsprechenden Gewichte der Schichtneuronen beruhend auf der Fehlergroumlszlige an den Ausgabeneuronen der jeweiligen Schicht angepasst

Ein weiteres Lernverfahren funktioniert uumlber bdquoGenetische Algorithmenldquo auf die in Kapitel 35 genauer eingegangen wird An dieser Stelle soll nur erwaumlhnt werden dass hierbei unterschiedliche Gewichts-Parametrisierungen fuumlr ein Neuronales Netz erstellt werden von denen die am besten geeigneten kombiniert und weiter verwendet werden koumlnnen waumlhrend die schlechten Gewichts-Parametrisierungen ausgeloumlscht werden Da eine Parametrisierung der Gewichte bewertet werden muss dh ob sie ein gutes oder ein schlechtes Ergebnis erzielt hat muss dieser Vorgang uumlberwacht werden Er gehoumlrt also zu den uumlberwachten Lernverfahren Unuumlberwachtes Lernen wird dagegen verwendet wenn die korrekte Ausgabe einer bestimmten Eingabe vorher nicht bekannt ist Da dieses Verfahren innerhalb dieser Arbeit nicht verwendet wird wird nicht weiter darauf eingegangen

Um weitere Informationen uumlber dieses Thema zu erhalten verweise ich auf die Quellen Theorie der neuronalen Netze [TdnN] Vorlesung Neuronale Netze [VNN] und die Seminarausarbeitung Neuronale Netze in Spielen [NNiS]

342 Umsetzung In der Umsetzung werden folgende drei Klassen implementiert

Die Klasse bdquoNeuronldquo implementiert ein kuumlnstliches Neuron mit beliebig vielen Eingaumlngen und einem Bias Eine Methode bdquopropagateldquo empfaumlngt die gesamten Eingaben und veranlasst das Neuron diese Eingaben zusammenzufassen und entsprechend der Ausgangsfunktion zu feuern bzw den entsprechenden Ausgabewert zu berechnen und zwischenzuspeichern

Die Klasse bdquoLayerldquo stellt beliebig viele Neuronen zu einer Schicht zusammen Wie bei der Klasse Neuron empfaumlngt eine Methode bdquopropagateldquo die gesamten Eingaben die in diese Schicht gelangen Diese Eingaben werden dann entsprechend an die einzelnen Neuronen weitergeleitet Die Ausgaben der Neuronen werden gesammelt und zwischengespeichert

In der Klasse bdquoNetldquo koumlnnen beliebig viele Layer aufgenommen werden Wie die beiden Klassen zuvor verfuumlgt die Klasse Net uumlber eine Methode bdquopropagateldquo die eine Menge an Eingaben erwartet Diese Eingaben werden an die erste Schicht gegeben die wiederum diese Eingaben an die einzelnen Neuronen verteilt Die von der Schicht gesammelten Ausgaben der Neuronen werden wieder an die Klasse Net gegeben die diese als Eingaben an die folgende Schicht weitergibt Dieser Vorgang wiederholt sich solange bis die Ausgaben der letzten Schicht berechnet sind Diese Resultate repraumlsentieren dann die Ausgabe des gesamten Neuronalen Netzes Des Weiteren besitzt die Klasse Net noch eine Methode bdquotrainldquo welche dafuumlr verantwortlich ist das Netz zu trainieren Dieses Training verlaumluft nach dem Backpropagation-Prinzip Daher erwartet die Methode eine entsprechende Menge an Eingaben und die zugehoumlrigen erwuumlnschten Ausgaben

35 Genetische Algorithmen Eine Kuumlnstliche Intelligenz wird von dem Entwickler auf eine bestimmte Umgebung angepasst Sie kann meistens nur die Aufgabe bewaumlltigen fuumlr die sie entwickelt wurde und wird durch bestimmte Parameter eingestellt und optimiert Die KI stellt somit eine Technologie dar deren Wirkungsweise durch Manipulation der Parameter veraumlnderbar ist Welche Parametereinstellungen nun aber optimal fuumlr die KI sind ist im Voraus nicht ersichtlich Genetische Algorithmen bieten die Moumlglichkeit Parameter als eine Art bdquoGenldquo eine einzelne Erbinformation zu kodieren und die bestoptimierten Gene fortzupflanzen Somit koumlnnen Parameter gefunden werden welche die KI optimal einstellen um die Aufgabe zu bewaumlltigen

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 33: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 3

28

351 Konzept Das Konzept dieser Technologie basiert auf dem natuumlrlichen Vorbild der Evolutionstheorie von Charles Darwin

Die Natur hat bis heute viele unterschiedliche Organismen hervorgebracht Jeder von ihnen hat sich im Laufe der Evolution an seine Umwelt angepasst Je besser sich ein Lebewesen seinem Lebensraum angepasst hat desto houmlher ist dessen Uumlberlebenswahrscheinlichkeit Wie gut ein Lebewesen angepasst ist bestimmt sein genetischer Bauplan Die schwachen und schlecht optimierten Lebewesen fallen den in der Nahrungskette uumlbergeordneten Lebewesen somit viel schneller zum Opfer als ihre starken und besser angepassten Artgenossen Dieses Prinzip nennt man bdquonatuumlrliche Ausleseldquo Es koumlnnen sich nur die uumlberlebenden starken Lebewesen fortpflanzen und ihre Gene von Generation zu Generation weitervererben

Die genetischen Informationen neuer Lebewesen entstehen durch Rekombination der elterlichen Gen-Informationen und durch bdquoMutationldquo Unter Mutation versteht man eine unvorhersehbare zufaumlllige Veraumlnderung des Genmaterials

In der technischen Umsetzung der genetischen Algorithmen wird eine gewuumlnschte Anzahl von Parametern den Genen in einem bdquoGenomldquo zusammengefasst Ein Genom enthaumllt somit die gesamten Erbinformationen bzw Parameter

In einer bdquoGenerationldquo wird eine beliebige Anzahl von unterschiedlichen Genomen aufgenommen Jedes Genom repraumlsentiert in diesem Fall ein Lebewesen bzw eine Parametrisierung

Zu Beginn der Evolution wird die zu verbessernde Technologie mit verschiedenen Genomen parametrisiert und fuumlhrt seine Aufgabe mit diesen Einstellungen durch Im Anschluss wird das Resultat mit einem bdquoFitnessldquo-Wert bewertet Eine gut bewaumlltigte Aufgabe bewirkt einen hohen und eine schlecht absolvierte Aufgabe einen niedrigeren Fitness-Wert

Haben alle Genome einer Generation bzw die durch sie parametrisierten Verfahren die Aufgabe durchlaufen wird aus dieser Generation eine neue gezuumlchtet Dazu wird ein Auswahlverfahren benoumltigt das die Elterngenome fuumlr die Fortpflanzung auswaumlhlt Dieses Verfahren soll so funktionieren dass die Genome mit dem houmlchsten Fitness-Wert die besten Chancen darauf haben ausgewaumlhlt zu werden aber nicht immer ausgewaumlhlt werden Hierfuumlr eignet sich die Auswahl durch ein Rouletterad

Die Fitness der gesamten Generation wird zusammenaddiert und wird durch das gesamte Rad repraumlsentiert Wie in Abbildung 327 dargestellt bekommt jedes Genom abhaumlngig von seiner eigenen Fitness einen Teil des Rades zugewiesen Je groumlszliger die eigene Fitness desto groumlszliger der Teil auf dem Rad

Abbildung 327 Roulette-Auswahl der Genome Quelle [AITFGP]

Um die Eltern zu bestimmen wird das Rad gedreht und das Genom verwendet auf dem der Pfeil stehen bleibt Die Wahrscheinlichkeit fuumlr ein Genom mit hohem Fitness-Wert ist sehr hoch ein Genom mit geringerer Fitness kann aber auch noch ausgewaumlhlt werden

Sind zwei Genome ausgewaumlhlt so werden ihre Erbinformationen miteinander kombiniert In Abbildung 328 wird dargestellt wie beide Genome an einer bestimmten Stelle aufgeschnitten und zu neuen Genomen zusammengefuumlgt werden Bei den

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 34: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kuumlnstliche Intelligenz

29

Kindern kann es durchaus vorkommen dass das Erbmaterial der Eltern zusaumltzlich durch Mutation verfremdet wird Es kann auch vorkommen dass einige Elterngenome ohne Rekombination des Erbmaterials in die naumlchste Generation uumlbernommen werden

Ist dieser Vorgang abgeschlossen werden erneut zwei Eltern uumlber das Rouletterad ausgewaumlhlt und erzeugen ihren Nachwuchs Das wird solange wiederholt bis die neue Generation die gewuumlnschte Groumlszlige besitzt

Abbildung 328 Rekombination und Mutation von Genomen

Durch das Auftreten der Mutation ist gewaumlhrleistet dass sich eine Kultur bzw eine Spezies immer weiterentwickelt und nicht nur auf Rekombination beschraumlnkt ist Denn ausschlieszliglich durch Rekombination entwickelnde Generationen wuumlrden irgendwann alle Moumlglichkeiten der Genomkombination durchlaufen haben und keine Aumlnderungen mehr vollziehen Die Mutation kann eine Verbesserung des Fitness-Wertes herbeifuumlhren was die Fortpflanzungswahrscheinlichkeit des Genoms erhoumlht Sie kann allerdings auch eine Verschlechterung herbeifuumlhren Dieses Genom wird dann eher der Auslese zum Opfer fallen

Fuumlr ein intensiveres Studium dieser Technik verweise ich auf die Quellen AI Techniques for Game Programming [AITFGP] und die Seminarausarbeitung Genetische Algorithmen [GEAL]

352 Umsetzung Es ist eine Klasse bdquoGenomldquo implementiert die eine beliebige Anzahl von bdquofloatldquo Parametern aufnehmen kann Zu Beginn hat jedes Genom eine Fitness von 10 Diese Klasse besitzt auch eine statische Methode zur Reproduktion von Genomen Dieser Methode werden die Elterngenome und die Kindergenome die zuvor erzeugt werden muumlssen uumlbergeben

Genome koumlnnen immer nur an den Parametergrenzen miteinander gekreuzt werden und die Mutation wirkt immer auf einen Parameter Hierzu wird ein zufaumllliger Wert in einem angegebenen Intervall auf den Parameter aufaddiert

Eine fruumlhere Implementierung sah vor die einzelnen Parameter in die genaue Bitfolge zu zerlegen und die Kreuzung konnte nach jedem Bit vollzogen werden Die zufaumlllig auftretende Mutation hat dementsprechend immer nur ein Bit invertiert

Eine weitere Klasse ist die bdquoGenerationldquo welche beliebig viele Genome aufnehmen kann Die wichtigste Methode dieser Klasse ist fuumlr die Reproduktion Durch diese Methode wird eine komplett neue Generation erzeugt Die Fitnesswerte der Elterngeneration werden ausgelesen und es wird ein Array erzeugt der die Laumlnge der gesamten aufaddierten Fitness hat Dieser Array stellt das Rouletterad dar und jedes Genom wird in so viele Felder in dem Array eingetragen wie es sein Fitness-Wert angibt Ein Zufallsgenerator waumlhlt eine Zahl zwischen null und der Laumlnge des Arrays minus eins und das Genom das in diesem Arrayfeld steht wird ausgewaumlhlt Es wird noch ein weiteres Genom ausgewaumlhlt und mit beiden werden zwei Nachwuchsgenome erzeugt die in die neue Generation aufgenommen werden Dieser Vorgang wiederholt sich bis die gewuumlnschte Groumlszlige der neuen Generation erreicht ist

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 35: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

31

4 Fahrzeugsteuerung ndash Integration der KI

In diesem Kapitel wird darauf eingegangen wie die konkrete Kuumlnstliche Intelligenz fuumlr die Fahrzeugsteuerung aufgebaut ist und wie die zuvor vorgestellten Techniken ihre Anwendung darin finden Zuvor wird das Prinzip des bdquoControllerldquo erklaumlrt der von der scApe-Engine zur Verfuumlgung gestellt wird um Objekte steuern bzw kontrollieren zu koumlnnen Anschlieszligend wird auf die Wahrnehmungsmoumlglichkeiten der KI eingegangen

Am Ende dieses Kapitels wird darauf eingegangen wie die Rennregeln und die Rundenzeiten uumlberwacht werden

In Kapitel 5 folgt die Analyse und Bewertung der hier vorgestellten KI-Techniken

Thema Seite

41 Controller - Objektkontrolle mit der scApe-Engine 32

42 Scanner - Wahrnehmung der Umwelt 32

43 Aufbau der Fahrzeugsteuerung 34

44 Traditionelle Umsetzung 36

45 Feedback Loops 37

46 Fuzzy-Logic 37

47 Neuronale Netze 39

48 Uumlberwachung der Rennregeln und Zeiten 39

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 36: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 4

32

41 Controller - Objektkontrolle mit der scApe-Engine Es kommt haumlufig vor dass sich Verhalten von Objekten waumlhrend der Programmlaufzeit veraumlndern sollen Das gewuumlnschte Verhalten soll aber nicht in den Klassen der entsprechenden Objekte implementiert werden da Instanzen der Klasse unterschiedliche Verhaltensweisen aufweisen muumlssen Wenn man zB eine Klasse fuumlr dreidimensionale grafische Objekte verwendet um unterschiedliche Objekte wie Baumlume Personen oder Fahrzeuge in seiner virtuellen Welt darzustellen und diese Objekte dann animieren moumlchte so koumlnnen nicht alle Verhaltensweisen in der Klasse fuumlr die grafischen Objekte enthalten sein Das waumlre viel zu umfangreich Der Baum schwingt nur ein wenig im Wind die Fahrzeuge fahren entlang der Straszligen und die Personen spazieren in der ganzen virtuellen Welt herum waumlhrend eine bestimmte Person vielleicht sogar von einem Benutzer gesteuert werden kann

Um unterschiedliche Verhaltensweisen zu realisieren wird eine Softwarekomponente verwendet die ein Objekt von auszligerhalb kontrollieren kann Der sogenannte bdquoControllerldquo der scApe-Engine bekommt das zu kontrollierende Objekt zugewiesen und kann dessen Eigenschaften manipulieren Der Controller ist eine abstrakte Klasse Ein Entwickler kann somit jede beliebige Form der Kontrolle auf die Objekte ausfuumlhren indem er eine eigene Klasse von Controller ableitet und implementiert Durch diese Vorgehensweise koumlnnen Objekte gleicher Klassen mit verschiedenen Verhaltensweisen versehen werden ohne den Programmcode direkt in deren Klasse implementieren zu muumlssen In haumlufigen Faumlllen wird der Controller zur Bewegung und Animation von grafischen Objekten verwendet

Der Controller besitzt eine virtuelle Methode bdquoevaluateldquo welche die aktuelle Zeit der Simulation erwartet Innerhalb dieser Methode wird der controllerspezifische Programmcode implementiert Sie wird in jedem Durchlauf der Hauptprogrammschleife dh in jedem sogenannten bdquoFrameldquo aufgerufen

Mit einem bdquoPathControllerldquo koumlnnte zB eine Kamerafahrt realisiert werden Der PathController bekaumlme einen Pfad zugewiesen und ein zu kontrollierendes Objekt Dieses Objekt wuumlrde in Abhaumlngigkeit von der Zeit und der gewuumlnschten Geschwindigkeit entlang des Pfades bewegt Zu kontrollierende Eigenschaften des Objektes waumlren in diesem Fall die Translation und die Rotation Die Geschwindigkeit waumlre eine Eigenschaft des PathControllers

Im Rahmen dieser Arbeit sind zwei neue Controller entstanden

Der bdquoODEControllerldquo ist dafuumlr zustaumlndig dass die ODE-Bodies -Joints und -Geoms erzeugt werden wenn die Simulation beginnt Zur gleichen Zeit muumlssen auch die Translation und Rotation der Objekte fuumlr die physikalische Simulation initialisiert werden denn jedes Objekt benoumltigt zu Beginn der Simulation eine konkrete Position und Ausrichtung Kurz gesagt jedes grafische Objekt das physikalisch simuliert werden soll benoumltigt einen ODEController In dem Fall der verwendeten Fahrzeuge bekommt das Chassis und jedes Rad jeweils einen eigenen ODEController zugewiesen

Die bdquoRacingAIldquo ist ebenfalls ein Controller der dafuumlr verantwortlich ist die Fahrzeuge zu steuern Sein Aufbau ist etwas umfangreicher und wird in Kapitel 0 genauer erklaumlrt An dieser Stelle sei nur darauf hingewiesen dass in der RacingAI die verschiedenen Techniken der Kuumlnstlichen Intelligenz ihre Anwendung finden

42 Scanner - Wahrnehmung der Umwelt In einem Rennen kann es durchaus vorkommen dass sich zwei Fahrzeuge nebeneinander befinden oder dass ein Fahrzeug hinter einem langsameren Fahrzeug faumlhrt Das hat zur Folge dass in ersterem Fall nicht in die Richtung gefahren werden sollte in der sich das andere Fahrzeug befindet da es sonst zu einer Kollision kommen kann In dem zweiten Fall sollte das schnellere Fahrzeug entweder abbremsen oder zum Uumlberholen in eine Richtung ausscheren um eine Kollision zu vermeiden In beiden

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 37: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Fahrzeugsteuerung ndash Integration der KI

33

Faumlllen ist die KI auf Informationen bezuumlglich der anderen Fahrzeuge und auf den Streckenverlauf angewiesen

Um diese Informationen bereit zu stellen werden bdquoScannerldquo verwendet Scanner koumlnnen auf festgelegte Intervalle eingestellt werden Dadurch sinkt die Belastung der CPU da der Scanvorgang nicht in jedem Frame aufgerufen wird sondern nur wenn das Scanintervall uumlberschritten wurde Je nach Verwendung der Scanner kann der Scanintervall unterschiedlich festgelegt werden

Um einen Scanvorgang durchzufuumlhren wird die Methode bdquoscanldquo aufgerufen Diese Methode erwartet die aktuelle Simulationszeit um zu pruumlfen ob der eingestellte Scanintervall uumlberschritten ist oder nicht Muss ein Scanvorgang durchgefuumlhrt werden so wird aus der Methode scan die virtuelle Methode bdquodoScanldquo aufgerufen die in jedem abgeleiteten Scanner implementiert werden muss So ist gewaumlhrleistet dass bei jedem abgeleiteten speziellen Scanner der eingestellte Scanintervall eingehalten wird und der Scanvorgang dennoch speziell implementiert werden kann Der Programmierer der einen Scanner ableitet kann also nicht vergessen den Scanintervall zu beruumlcksichtigen

421 Path-Scanner Der bdquoPath-Scannerldquo stellt der KI Informationen uumlber den Streckenverlauf (siehe Kapitel 211) bereit Er ist sozusagen eine Schnittstelle zwischen dem Streckenverlauf und der KI Abhaumlngig von der aktuell zuruumlckgelegten Streckendistanz und der Geschwindigkeit des betreffenden Fahrzeugs stellt er wie in Abbildung 41 dargestellt den Abstand zu dem verfolgten Pfad zwei im weiteren Streckenverlauf liegende Punkte und die zuruumlckgelegte Streckendistanz zusammen Die Punkte bdquoBeschleunigungsdistanzldquo und bdquoLenkdistanzldquo werden von der KI weiterverarbeitet und zur Bestimmung der Beschleunigung und des Lenkeinschlags verwendet

Der Abstand wird von der KI benoumltigt um ggf eine Korrektur des Lenkeinschlags durchfuumlhren zu koumlnnen falls sich das Fahrzeug zu weit vom Pfad entfernt haben sollte

Abbildung 41 Funktionsweise des Path-Scanners

Lenk- und Beschleunigungsdistanz koumlnnen unterschiedlich weit voraus entlang der Strecke liegen Neben der Geschwindigkeit des Fahrzeugs ist die Entfernung abhaumlngig von einem einstellbaren Faktor Durch den Faktor kann die Vorausschau besser auf eine Strecke angepasst werden Es hat sich als nuumltzlich erwiesen getrennte Groumlszligen fuumlr Lenkeinschlag und Beschleunigung vorzugeben Die Beschleunigungsdistanz kann so zB schon weiter vorausschauen und fruumlhzeitig eine Kurve erkennen sowie das Bremsen veranlassen waumlhrend bei der Lenkdistanz noch keine Aumlnderung zu verzeichnen ist da der Kurveneinlenkpunkt noch nicht erreicht ist

422 Opponent-Scanner Sollten sich zwei oder mehrere Konkurrenten nebeneinander oder hintereinander befinden so muss die KI in Erwaumlgung ziehen die Spur zu veraumlndern um seine

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 38: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 4

34

Konkurrenten uumlberholen oder Kollisionen vermeiden zu koumlnnen Daher sammelt der bdquoOpponent-Scannerldquo Daten uumlber die Mitkonkurrenten einer KI

Dieser Scanner pruumlft alle Entfernungen zu anderen Fahrzeugen entlang des Streckenverlaufs Die einzelnen Entfernungen werden wie in Abbildung 42 zu sehen ist in einem elf Felder groszligen Array abgelegt Jedes Feld repraumlsentiert eine Breite von einem Meter vor dem Fahrzeug Die einzige Ausnahme ist das mittlere Feld Nummer fuumlnf Dieses Feld stellt einen zwei Meter breiten Bereich direkt vor dem Fahrzeug dar Die repraumlsentierte Breite der Arrayfelder ist momentan fest auf die Breite der Fahrzeuge zugeschnitten und nicht flexibel einstellbar

Ein zweiter ebenfalls elf Felder breiter Array nimmt die Geschwindigkeiten auf welche die Fahrzeuge haben die bereits in den Array fuumlr die Entfernungen eingetragen wurden Es werden immer nur die naumlchsten Fahrzeuge in den Array fuumlr die Entfernungen aufgenommen Das bedeutet Fahrzeuge die dichter an dem Fahrzeug der KI liegen duumlrfen Eintraumlge weiter entfernter Fahrzeuge ersetzen

Abbildung 42 Opponent-Scanner Funktionsweise und Datenanordnung

Initialisiert werden beide Arrays mit sehr groszligen Zahlenwerten In Abbildung 42 wird dargestellt wie die Informationen der einzelnen Fahrzeuge in den Array fuumlr Geschwindigkeiten (links in Meter pro Sekunde) und den Array fuumlr Entfernungen (rechts in Meter) eingetragen werden Der rote KI Fahrer sieht somit in den Daten des Opponent-Scanners ob sich Fahrzeuge vor ihm befinden und wie schnell diese fahren Fahrzeuge die sich weniger als zwei Meter vor oder hinter dem Fahrzeug der KI befinden werden als neben ihm fahrend betrachtet Sie werden ebenfalls in die Arrays aufgenommen Fahrzeuge die sich weiter als zwei Meter hinter dem der KI befinden werden nicht ignoriert Sie werden so behandelt als ob sie eine Runde Vorsprung haumltten Wenn diese Fahrzeuge in die Arrays aufgenommen werden sollten ist die Entfernung so groszlig dass sie dennoch ignoriert werden Die Informationen stehen allerdings zur Verfuumlgung und koumlnnten fuumlr beliebige Zwecke verwendet werden

43 Aufbau der Fahrzeugsteuerung Das in Abbildung 43 dargestellte Blockdiagramm veranschaulicht die Funktionsweise der Fahrzeugsteuerung Jede KI steuert ein Fahrzeug Die KI-Techhnik kann fuumlr jedes Fahrzeug im Rennen unterschiedlich sein

Da die KI von der Klasse Controller abgeleitet ist wird ihre bdquoevaluateldquo Methode in jedem Durchlauf der Hauptprogrammschleife aufgerufen Genau wie ein Scanner verfuumlgt die KI uumlber ein einstellbares Zeitintervall Ist dieses Intervall uumlberschritten wird ein neuer Verarbeitungsschritt eingeleitet Dieses Vorgehen bewirkt eine geringere Belastung der CPU durch die KI Auszligerdem sind die Zeitunterschiede zwischen Frames meistens sehr gering Ein Fahrzeug hat in solch kurzer Zeit keine ausreichende Aumlnderung vollzogen um einen erneuten Verarbeitungsschritt der KI zu rechtfertigen

Jede Fahrer KI verfuumlgt uumlber eine Finite-State Machine Diese FSM besteht aus den vier Zustaumlnden bdquoWAITldquo bdquoRACEldquo bdquoRETURNldquo und bdquoFINISHEDldquo Beim Beginn eines Rennens ist der Zustand WAIT aktiv Der von ihm aufgerufene Programmcode versetzt das Fahrzeug in eine Grundstellung Die Bremse wird betaumltigt und evtl wird in den

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 39: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Fahrzeugsteuerung ndash Integration der KI

35

ersten Gang geschaltet sofern dies von der Implementierung vorgesehen ist Des Weiteren wartet die KI auf das Startsignal

Das Startsignal versetzt die FSM in den Zustand RACE Er ist fuumlr das eigentliche Rennen verantwortlich und besitzt den groumlszligten Umfang daher wird er detaillierter in Kapitel 431 besprochen

Sollte ein Fahrzeug waumlhrend des Rennens (der RACE-Zustand ist aktiv) von der Strecke abkommen so setzt die KI den Zustand ihrer FSM auf RETURN Der RETURN-Zustand wird vom Race-Supervisor (siehe Kapitel 48) erkannt und das Fahrzeug muss von ihm zuruumlck auf die Strecke gesetzt werden Anschlieszligend kehrt die FSM in den Zustand RACE zuruumlck

Hat es eine KI geschafft alle geforderten Runden zu absolvieren so geht die FSM in den Zustand FINISHED uumlber Sind alle KI-Teilnehmer in diesem Zustand ist das Rennen beendet Waumlhrend dieses Zustandes sollen die Fahrzeuge weiterhin dem Streckenverlauf folgen um die anderen Fahrzeuge die noch aktiv im Rennen fahren nicht unnoumltig zu blockieren

Abbildung 43 Blockdiagramm der Fahrzeugsteuerung insbesondere des RACE-Zustands

431 Der RACE-Zustand In dem RACE-Zustand ist sozusagen das Herz der KI Er beinhaltet die Steuerung um das eigentliche Rennen zu fahren Ist der RACE-Zustand aktiv so werden in jedem Verarbeitungsschritt die Scanner betaumltigt Ist das Scanintervall uumlberschritten so werden die benoumltigten Informationen neu gesammelt Andernfalls werden die Daten vom letzten Scannvorgang verwendet

Da die Daten der Scanner in der gelieferten Form nicht immer von der KI verarbeitet werden koumlnnen wird eine Aufbereitung der Daten durchgefuumlhrt Es wird beispielsweise die Abweichung der Fahrtrichtung zum Streckenverlauf und die anzunehmende Radialkraft beim Lenken waumlhrend der aktuellen Geschwindigkeit berechnet Diese aufbereiteten Daten werden dann an die eigentliche KI-Technik weitergegeben bzw von diesen abgefragt

Die grundlegenden Funktionen der Bloumlcke die im Folgenden beschrieben werden koumlnnen je nach verwendetem KI-Verfahren unterschiedlich implementiert sein Die Bloumlcke werden immer in der Reihenfolge 1-4 durchlaufen Der erste Block gibt Werte fuumlr den Lenkeinschlag und die Beschleunigung vor waumlhrend alle folgenden Bloumlcke diese Werte manipulieren koumlnnen

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 40: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 4

36

1 In dem bdquoPathfollowingldquo Block werden der grundlegende Lenkeinschlag und die Beschleunigung bestimmt die noumltig sind um dem Streckenverlauf zu folgen In diesem Block finden mathematische Berechnungsmodelle und die in Kapitel 3 vorgestellten Techniken Feedback Loops Fuzzy-Logic und Neuronale Netze ihre Anwendung

2 Der Block bdquoPathcorrectionldquo kuumlmmert sich darum dass Fahrzeuge die am aumluszligeren Rand des Streckenverlaufs fahren sich wieder der Mittellinie annaumlhern Es wird jedoch darauf geachtet dass sich kein anderes Fahrzeug daneben befindet

3 Der Uumlberholvorgang wird in dem Block bdquoOvertakingldquo realisiert Hierzu werden hauptsaumlchlich die Daten aus dem Opponent-Scanner ausgewertet Wenn kein Uumlberholvorgang moumlglich sein sollte weil andere Fahrzeuge ein Ausscheren verhindern so wird das Fahrzeug abgebremst Das soll verhindern dass es zu einem Auffahren kommt

4 Der unterste Block bdquoCrashavoidanceldquo lenkt entgegen sobald sich zwei Fahrzeuge zu nahe kommen Das soll unnoumltige Kollisionen verhindern

44 Traditionelle Umsetzung In diesem Ansatz wird keine der in Kapitel 3 vorgestellten Techniken verwendet und ist auf bdquotraditionelleldquo Art und Weise programmiert Die Steuerung der Fahrzeuge basiert auf mathematischen Formeln in die sowohl die variablen Informationen der Scanner als auch fest definierte Parameter einflieszligen

Pathfollowing

Die Beschleunigung ist abhaumlngig von der aktuellen Kurvenfahrt und der auftretenden Radialkraft Auszligerdem gibt es einen Parameter der angibt ab welcher Radialkraft mit dem Bremsvorgang begonnen werden soll Ein weiterer Parameter gibt an wie stark der Bremsvorgang durchgefuumlhrt werden soll

Die auftretende Radialkraft wird mit Hilfe des Path-Scanners berechnet Wie in Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Beschleunigungsdistanz aufgespannt Zwischen diesem Vektor und der Fahrtrichtung wird der Winkel bestimmt der in die Berechnung fuumlr die Radialkraft einflieszligt

Fuumlr den Lenkeinschlag werden ebenfalls die Daten des Path-Scanners benoumltigt In Abbildung 41 dargestellt wird ein Vektor zwischen der absolvierten Streckendistanz des Fahrzeugs und der Lenkdistanz aufgespannt Ein festgelegter Multiplikator bestimmt wie stark der Winkel zwischen diesem Vektor und der Fahrtrichtung des Fahrzeugs den Lenkeinschlag ausfallen laumlsst

Pathcorrection

Sollte der Abstand zwischen Pfad und Fahrzeug zu groszlig werden wird auf den aktuellen Lenkeinschlag ein einstellbarer Wert in Richtung Pfad addiert So soll sich das Fahrzeug wieder mehr in Richtung Pfad orientieren Sollte sich ein anderes Fahrzeug dazwischen befinden so wird auf die Korrektur verzichtet um eine Kollision zu vermeiden

Overtaking

Fuumlr den Uumlberholvorgang werden die Daten aus dem Opponent-Scanner benoumltigt Es wird gepruumlft ob im mittleren Feld des Arrays fuumlr die Entfernungen ein Wert eingetragen ist der sich unterhalb eines einstellbaren Entfernungs-Schwellenwertes befindet

Ist dieser Eintrag unterhalb der eingestellten Entfernung so wird davon ausgegangen dass sich ein anderes Fahrzeug unmittelbar vor dem Fahrzeug der KI befindet In diesem Fall wird noch der entsprechende Eintrag in dem Array fuumlr Geschwindigkeiten ausgelesen Ist der Wert geringer als die Geschwindigkeit der KI so muss ein

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 41: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Fahrzeugsteuerung ndash Integration der KI

37

Uumlberholvorgang eingeleitet werden Andernfalls faumlhrt das vorausfahrende Fahrzeug schneller und kann ignoriert werden

Wird ein Uumlberholvorgang eingeleitet muss zuvor gepruumlft werden ob sich keine Fahrzeuge neben der KI befinden Sollte eine Seite blockiert sein so bleibt nur noch eine Seite uumlbrig Sind beide Seiten blockiert so muss die KI bremsen um ein Auffahren zu verhindern Sind jedoch beide Seiten frei muss ausgewertet werden welche Seite die bessere ist Die Seite auf der sich zuerst kein anderes Fahrzeug in Uumlberholreichweite befindet wird gewaumlhlt

Crashavoidance

Sollte sich ein anderes Fahrzeug zu dicht an dem der KI befinden so soll die KI etwas in die entgegen gesetzte Richtung steuern um eine Kollision zu vermeiden Hierzu werden ebenfalls die Daten aus dem Opponent-Scanner ausgelesen Die beiden Felder neben der Mitte werden dazu uumlberpruumlft

45 Feedback Loops In der Umsetzung mit Feedback Loops (siehe Kapitel 32) steuert das Fahrzeug anhand des Vergleichs von Istwert und Sollwert Sie baut auf der traditionellen Umsetzung auf und erweitert sie durch P-Regelkreise

Die Sollwerte fuumlr Lenkeinschlag und Beschleunigung berechnen sich nach der gleichen Vorgehensweise wie in der traditionellen Umsetzung Es werden alle Bloumlcke nach dieser Umsetzung durchlaufen Die Endergebnisse fuumlr Lenkeinschlag und Beschleunigung flieszligen dann zum Schluss in jeweils einen Regelkreis ein Der Lenkeinschlag und die Beschleunigung werden also nicht direkt gesetzt sondern naumlhern sich dem Regelkreis entsprechend an den Sollwert an Je nach Einstellung des Proportional-Beiwertes Kp kann die Regelgeschwindigkeit angepasst werden

46 Fuzzy-Logic Als eine einfache aber funktionsfaumlhige Technik hat sich die in Kapitel 33 vorgestellte Fuzzy-Logic herausgestellt In diesem Abschnitt werden die Fuzzy-Sets und -Regeln fuumlr den Steuervorgang durch Fuzzy-Logic erklaumlrt

Um den Lenkeinschlag und die Beschleunigung zu bestimmen werden jeweils zwei Bedingungs-Sets zwei Aktions-Sets und zwei Regeln verwendet

Abbildung 44 bis Abbildung 49 stellen die verwendeten Bedingungs- und Aktions-Sets sowie den Verlauf der Ausgabe nach der Defuzzifizierung grafisch dar

Bei der Bedingung fuumlr den Lenkeinschlag (Abbildung 44) wird auf der x-Achse der Winkel angeben den das Fahrzeug von dem Streckenverlauf abweicht Die Eingabe kann lediglich im Intervall [ndashπ π ] auftreten Die y-Achse repraumlsentiert den situationsabhaumlngigen DOM (degree of membership) zu den beiden Fuzzy-Sets Abweichung des Fahrzeugs links vom idealen Streckenverlauf (LCurve) und Abweichung des Fahrzeugs rechts vom idealen Streckenverlauf (RCurve)

In dem Aktions-Set (Abbildung 46) wird auf der x-Achse der Lenkeinschlag im Intervall [-10 10] angegeben Der y-Wert repraumlsentiert den DOM zu den Fuzzy-Sets nach links lenken (Links) und nach rechts lenken (Rechts)

Die Ausgabegrafik (Abbildung 48) zeigt an wie der Lenkeinschlag (y-Achse) bei einem bestimmten Winkel zwischen Streckenverlauf und Fahrtrichtung (x-Achse) eingestellt wird

Eine Eingabe von ndash04 also eine Winkelabweichung der Fahrzeugausrichtung vom idealen Streckenverlauf um -04 Radian bewirkt bei den Regelen I und II (siehe unten) folgende Auswertung

I An der Stelle ndash04 hat das Fuzzy-Set bdquoLCurveldquo einen DOM von 075

II Das Fuzzy-Set bdquoRCurveldquo hat einen DOM von 025

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 42: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 4

38

Die Regeln bewirken nun das im Aktions-Set bdquoLinksldquo bei dem y-Wert 075 und bdquoRechtsldquo bei 025 abgeschnitten wird Als Defuzzifikations-Methode wird der Durchschnitt der Maxima verwendet bdquoLinksldquo und bdquoRechtsldquo sind ein Left-Soulder und ein Right-Shoulder Set Das Plateau wird jedoch auf einen Punkt zusammengeschoben und somit ignoriert Das Maxima der beiden Sets befindet sich somit an der Spitze Das Maximum von bdquoLinksldquo ist ndash1 und das von bdquoRechtsldquo ist 1

Diese Werte werden nun mit den entsprechenden DOM-Werten multipliziert und durch die Summe der DOM-Werte dividiert Sollten mehrere unterschiedliche DOM-Werte fuumlr ein Aktions-Set aus den Regeln hervorgehen muss eine Ergebnismatrix erstellt werden In diesem Fall gibt es jedoch nur jeweils einen DOM-Wert fuumlr die Aktions-Sets Die Formel lautet also

50250750

25017501

Der Lenkeinschlag bei einem Winkel von ndash04 zwischen Streckenverlauf und Fahrtrichtung betraumlgt also ndash05 Die Berechnung fuumlr die Beschleunigung funktioniert nach dem gleichen Prinzip Lediglich bei dem Eingabe-Set wird statt dem Winkel die anzunehmende Radialbeschleunigung verwendet Die Ausgabegrafik zeigt also wie die Beschleunigung bei einer bestimmten Radialbeschleunigung eingestellt wird

Lenkeinschlag Beschleunigung

Bedingung

Abbildung 44 Eingabe-Set fuumlr

Lenkeinschlag

Abbildung 45 Eingabe-Set fuumlr

Beschleunigung

Aktion

Abbildung 46 Ausgabe-Set fuumlr

Lenkeinschlag

Abbildung 47 Ausgabe-Set fuumlr

Beschleunigung

Ausgabe nach Defuzzifizierung

Abbildung 48 Grafische

Darstellung der Ausgabe fuumlr den Lenkeinschlag

Abbildung 49 Grafische Darstellung der

Ausgabe fuumlr die Beschleunigung

Wie man in Abbildung 45 sieht kann der Wert fuumlr die Radialbeschleunigung sehr hoch werden Die Eingabe basiert jedoch auf Annahmen der KI und wirken in dieser Groumlszlige nicht auf die Fahrzeuge Die waumlhrend der Simulation auf ein Fahrzeug wirkende Radialkraft liegt zwischen 0 (geradeaus) und 20-30 ms2

Die Regeln fuumlr den Lenkeinschlag und die Beschleunigung sind I IF LKurve THEN Links

II IF Rkurve THEN Rechts

III IF Kurve THEN Bremsen

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 43: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Fahrzeugsteuerung ndash Integration der KI

39

IV IF Gerade THEN Beschleunigen

Die Ergebnisse der Defuzzifizierung werden direkt fuumlr die Beschleunigung und den Lenkeinschlag verwendet

47 Neuronale Netze In meinem Experiment Fahrzeuge mittels Neuronaler Netze zu steuern untersuche ich ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist zu lernen ein Fahrzeug entlang einer Rennstrecke zu steuern

Abbildung 410 Steuerung durch ein Neuronales Netz

Das Netz hat vier Eingaumlnge zehn Neuronen in der darauf folgenden Schicht und zwei Neuronen in der Ausgabeschicht Der Ausgang eines Neurons wird als Eingangssignal fuumlr jedes Neuron der folgenden Schicht verwendet Der topologische Aufbau ist in Abbildung 410 dargestellt Als Eingangssignale dienen der Abstand des KI-Fahrzeugs zum Pfad die aktuelle Geschwindigkeit des Fahrzeugs der Winkel zwischen Fahrtrichtung und Lenkdistanz sowie der Winkel zwischen Fahrtrichtung und Beschleunigungsdistanz Die beiden Ausgaumlnge sollen den konkreten Lenkeinschlag und die notwendige Beschleunigung angeben Die Ausgabefunktion der Neuronen ist TANH siehe Abbildung 411

Abbildung 411 Ausgabefunktion TANH Quelle [NNC]

Ein aumlhnliches Netz wurde bereits von Mat Buckland in seinem Buch bdquoAI Techniques for Game Programmingldquo [AITFGP] verwendet um Fahrzeuge zum Minensuchen zu trainieren Da das Ergebnis zufriedenstellend war habe ich mich dazu entschlossen ebenfalls diesen erprobten Ansatz zu verwenden

Dieser Ansatz ist lediglich fuumlr die Pfadverfolgung zustaumlndig und beachtet weder Uumlberholvorgaumlnge noch Kollisionsvermeidung

48 Uumlberwachung der Rennregeln und Zeiten Um die momentan einzige Regel alle Checkpoints zu besuchen gewaumlhrleisten zu koumlnnen und um Strafen bei Regelverstoszlig verhaumlngen zu koumlnnen ist der sogenannte bdquoRace-Supervisorldquo zustaumlndig Er verwaltet alle am Rennen teilnehmenden Fahrer kennt alle auf der Rennstrecke verteilten Checkpoints und auch die Startpositionen

Zu Beginn des Rennens verteilt er alle Fahrzeuge auf die Startpositionen und gibt auch das Startsignal

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 44: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 4

40

Waumlhrend des Rennens empfaumlngt er von den Checkpoints Nachrichten uumlber die Fahrzeuge die diesen Punkt gerade passiert haben Diese Information legt der Race-Supervisor in einer Datenstruktur ab die Informationen uumlber den Rennverlauf der KI aufnehmen kann Diese Struktur heiszligt bdquoDriverLogldquo Hier werden Informationen wie beispielsweise zuletzt passierter Checkpoint letzter Sektor sowie die einzelnen Rundenzeiten gespeichert Sollte ein Fahrzeug ein Checkpoint auslassen wird diese Runde vom Race-Supervisor nicht gewertet

Der Race-Supervisor ist auch dafuumlr verantwortlich von der Strecke abgekommene und umgekippte Fahrzeuge korrekt in Fahrtrichtung auf die Strecke zuruumlckzusetzen Dazu uumlberpruumlft er in jedem Frame die aktuellen Zustaumlnde der KI Befindet sich eine KI im Zustand RETURN so muss dieses Fahrzeug wieder auf die Strecke gesetzt werden

Dieser Vorgang heiszligt bdquoRespawnldquo und deren Anzahl wird ebenfalls in der DriverLog festgehalten Die Anzahl der Respawns und die reinen Rundenzeiten zeigen wie gut die KI diese Strecke beherrscht Viele Respawns sind unerwuumlnscht da die KI offensichtlich nicht in der Lage ist das gesteuerte Fahrzeug auf der Rennstrecke zu halten Ein paar koumlnnen aber durchaus auftreten Gerade wenn mehrere Fahrzeuge am Rennen teilnehmen kann es zu Kollisionen fuumlhren welche die Fahrzeuge von der Strecke schleudern

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 45: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

41

5 Ergebnisse und Analyse

Innerhalb dieses Kapitels werden die verwendeten Technologien ausgewertet und die Erfahrungen mit ihnen geschildert Zu Beginn wird auf die Umsetzung der physikalischen Simulation mittels der ODE eingegangen Anschlieszligend werden die Techniken zur KI-Steuerung behandelt Vor- und Nachteile der jeweiligen Techniken bei der Umsetzung werden dargestellt

Die Simulationen wurden auf folgendem System durchgefuumlhrt

Athlon Thunderbird 2000+

Arbeitsspeicher 15 GB

Betriebsystem Windows XP

Grafikkarte GeForce 6600 GT

Thema Seite

51 Physikalische Simulation mit der ODE 42

52 CPU-Auslastungen der KI-Techniken 43

53 Traditionelle Umsetzung 44

54 Feedback Loops 44

55 Fuzzy-Logic 45

56 Neuronale Netze 46

57 Genetische Algorithmen 47

58 Race-Supervisor 48

59 Subjektiv echtes Rennverhalten 49

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 46: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 5

42

51 Physikalische Simulation mit der ODE Die Umsetzung der physikalischen Simulation durch die ODE ist im Allgemeinen als sehr positiv zu bewerten Sowohl die dynamische Simulation als auch die Kollisionserkennung funktionieren zufriedenstellend

511 CPU-Auslastung Fuumlr die physikalische Simulation ist es wichtig ein passendes Simulationsintervall zu waumlhlen Ist das Intervall zu groszlig gewaumlhlt wird die Simulation zu ungenau bzw zu grob Waumlhlt man das Intervall zu klein so wird sehr viel CPU Zeit allein fuumlr die physikalische Simulation aufgebracht Als eine zufriedenstellende Einstellung haben sich 100 Simulationsschritte pro Sekunde herausgestellt

Je nachdem wie viele Objekte simuliert werden wird die CPU unterschiedlich stark fuumlr die ODE benoumltigt In Abbildung 51 wird dargestellt wie viel Prozent Rechenzeit der CPU fuumlr eine entsprechende Anzahl von Fahrzeugen benoumltigt werden Man kann erkennen dass die benoumltigte CPU-Zeit linear abhaumlngig von der Anzahl der zu simulierenden Fahrzeuge ist Die Grafik zeigt deutlich dass die dynamische Simulation um ein Vielfaches mehr CPU-Zeit benoumltigt als die Kollisionserkennung

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8Fahrzeuganzahl

Ben

oumltig

te C

PU-Z

eit i

n

Dynamische Simulation Kollisionserkennung Gesamtzeit

Abbildung 51 CPU-Auslastung durch die physikalischen Simulation

Die untersuchte Szene besteht jeweils aus einem Terrain und den auf der x-Achse von Abbildung 51 angegebener Anzahl von Fahrzeugen Das Terrain besteht aus einem Body und einem Trimesh Geom (Netz aus Dreiecken) das sich wiederum aus 131072 einzelnen Dreiecken zusammensetzt Ein Fahrzeug besteht aus fuumlnf Bodies eine Box- und vier Cone-Geoms Auszligerdem verbinden vier Hinge2-Joints die Raumlder mit dem Chassis Mit acht Fahrzeugen ist die Simulation von der physikalischen Seite gut ausgelastet 14 benoumltigte CPU-Zeit ist schon nicht unerheblich und man sollte sich Gedanken daruumlber machen wie man die dynamische Simulation optimieren kann

512 Kollisionskoumlrper fuumlr die Raumlder Als unterschiedliche Kollisionskoumlrper fuumlr die Raumlder der Fahrzeuge standen Sphere Capped Cylinder (Ein Cylinder mit Halbkugeln an den Enden) und von externen Entwicklern [ODEC] implementierte Cone zur Verfuumlgung Das darunterliegende Terrain kollidiert uumlber das Geom Trimesh der ODE

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 47: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Ergebnisse und Analyse

43

Nach einigen Testlaumlufen stellte sich heraus dass die Sphere das ruhigste Laufverhalten auf den Trimeshes des Terrains bewirkt Der Capped Cylinder scheint eher dazu zu neigen kurzzeitig in das Terrain einzudringen Diese Kollision wird von der ODE aufgeloumlst und der kollidierende Koumlrper wieder zuruumlck geworfen Dadurch entsteht beim Fahren eine Art bdquoHoppelnldquo der Fahrzeuge als ob kleine Schlagloumlcher im Boden waumlren Die ODE bietet jedoch Parameter an mit denen dieses Verhalten etwas reduziert werden kann Das groumlszligere Problem dieser beiden Kollisionskoumlrper ist ihre Rundung Die Rundung fuumlhrt dazu dass die Fahrzeuge in Kurven leichter umkippen koumlnnen da sie sich uumlber die Raumlder sozusagen seitlich abrollen koumlnnen

Der Cone wirkt dem vorzeitigen Uumlberschlag entgegen Er wird so angebracht dass die Spitze zur Innenseite des Fahrzeugs zeigt Das holperige Fahrverhalten ist jedoch mit ihm noch ausgepraumlgter als unter dem Capped Cylinder Mit den entsprechenden ODE Parametern fuumlr Fehlerkorrektur wird das Verhalten versucht zu minimieren

Bis zu einem gewissen Grad gelang es das bdquoHoppelnldquo zu minimieren Es ist jedoch bisher nicht voumlllig zu beheben Eine Ursache dafuumlr koumlnnten die groszligen Kraumlfte sein mit denen ein Fahrzeug auf den Boden gedruumlckt wird um ein fruumlhzeitiges Uumlberschlagen zu vermeiden

513 Fahrverhalten Es gibt eine Vielzahl von physikalischen Parametern und Fahrzeug- und KI-Eigenschaften die lange und genaue Justierarbeit abverlangen In diese Arbeit koumlnnen mehrere Tage einflieszligen ohne ein zufriedenstellendes Ergebnis hervorzubringen Um ein subjektiv realistisches Fahrverhalten zu bekommen ist enorm viel Erfahrung und Geduld notwendig Im Rahmen dieser Arbeit musste aufgrund des engen Zeitrahmens an einem bestimmten Punkt abgebrochen werden weitere Justierarbeit zu leisten Es bedarf noch mehr Experimente in der Anwendung verschiedener Techniken und Parametrisierungen

Die KI bereitet keine groszligen Probleme auf das Fahrverhalten der Fahrzeuge angepasst zu werden Auf der einen Seite werden nur die Parametrisierungen verwendet die sich als gut geeignet erweisen Auf der anderen Seite hat die KI die Moumlglichkeit den Lenkeinschlag und die Beschleunigung uumlber Flieszligkommawerte zwischen ndash10 und 10 anzugeben Ein menschlicher Benutzer kann zur Zeit lediglich die Tastatur als Eingabemedium verwenden Es ist nur eine Eingabe von links (-10) rechts (10) und kein Lenkeinschlag (00) moumlglich Das hat zur Folge das der Lenkeinschlag den das Fahrzeug durchfuumlhrt immer sehr extrem ist Das gleiche Verhalten gilt fuumlr die Beschleunigung Fuumlr digitale Eingaben waumlre es wichtig den Lenkeinschlag abhaumlngig von der Geschwindigkeit zu machen

52 CPU-Auslastungen der KI-Techniken Abbildung 52 zeigt die prozentual benoumltigte CPU-Zeit der KI Techniken Sehr gut zu sehen ist dass die Fuzzy-Logic ca drei mal so viel Rechenzeit benoumltigt wie die traditionelle Umsetzung inklusive der Feedback Loops Das verwendete Neuronale Netz bewegt sich genau dazwischen Alle KI-Techniken weisen einen linearen Anstieg der benoumltigten CPU-Zeit auf

Bei acht Fahrzeugen befinden sich jedoch alle Techniken mit unter drei Prozent im akzeptablen Bereich In die benoumltigte Zeit wird nicht nur der reine Rechenaufwand fuumlr die Bestimmung des Lenkeinschlages und der Beschleunigung einbezogen sondern auch die Taumltigkeit der Scanner Bei acht Fahrzeugen benoumltigen die Scanner im Durchschnitt ca 04 Prozent der CPU-Zeit

Die Auslastung der CPU durch die Kuumlnstliche Intelligenz ist in allen Faumlllen sehr gering Es koumlnnten also problemlos noch mehr KI-Fahrer in eine Simulation mit aufgenommen werden Allerdings benoumltigen diese Fahrer auch Fahrzeuge die physikalisch simuliert werden muumlssen

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 48: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 5

44

0

05

1

15

2

25

3

Ben

oumltig

te C

PU-Z

eit i

n

1 2 3 4 5 6 7 8

Fahrzeuganzahl

Traditionell Fuzzy-Logic Feedback Loop Neuronales Netz

Abbildung 52 CPU-Auslastung verschiedener KI-Techniken im Vergleich

53 Traditionelle Umsetzung Diese Methode beruht auf konkret implementierten Formeln und direkter Implementierung der Sonderfaumllle wie sie beispielsweise beim Uumlberholen aufkommen Die Parametrisierungen koumlnnen aus externen Dateien eingelesen werden Das Fahrverhalten ist somit recht einfach und schnell veraumlnderbar Genetische Algorithmen sind ebenfalls sehr einfach anwendbar um eine gute Parametrisierung zu finden

Das Fahrverhalten dieser Methode ist durchaus zufriedenstellend Der Lenkeinschlag und die Beschleunigung wirken subjektiv betrachtet sehr direkt und recht natuumlrlich im Vergleich zu der Steuerung die ein Mensch in etwa durchfuumlhren wuumlrde

Pro Ein groszliger Vorteil dieser Methode ist die sehr geringe Belastung der CPU In Abbildung 52 wird veranschaulicht wie viel Zeit diese Methode bei einer entsprechenden Anzahl von Fahrzeugen benoumltigt Sie belastet die CPU mit Abstand am geringsten

Kontra Ein groszliger Nachteil dieser Technik ist die Implementierungsdauer Um ein akzeptables Fahrverhalten zu erlangen ist viel experimenteller Aufwand erforderlich Das fuumlhrt haumlufig zu neuen Kompiliervorgaumlngen und damit einem hohen Zeitaufwand Spaumltere kleine Aumlnderungen koumlnnen oftmals noch mit einer anderen Parametereinstellung erreicht werden Bei etwas umfangreicheren Aufgaben kommt man jedoch nicht um eine Aumlnderung der Implementierung herum Es kann schnell zu komplexeren Sonderfallbehandlungen kommen die den Quellcode kompliziert und schwer zu warten machen

Kontra Ein weiterer Nachteil sind abrupte Aumlnderungen zB bei einem Uumlberholvorgang Hier wird ein Lenkeinschlag zum Ausscheren direkt auf den Lenkeinschlag aufaddiert der notwendig ist um dem Pfad zu folgen Dadurch koumlnnen abrupte Lenkbewegungen entstehen Die Aumlnderung des Lenkeinschlages wird zwar von den ODE-Joints auf eine maximale Geschwindigkeit begrenzt das soll aber nur ein sofortiges Umlenken von links nach rechts verhindern

Bewertung Das Ergebnis dieser Methode ist durchaus zufriedenstellend Allerdings sind komplexere Aufgaben wie beispielsweise der Uumlberholvorgang durch sehr viele Sonderfallbehandlungen recht schwierig zu implementieren Auszligerdem ist es schwer abrupte Aumlnderungen zu vermeiden

54 Feedback Loops Diese Technik ist von unterstuumltzender Art und Weise Mit ihr koumlnnen Regelkreise realisiert werden Zur Umsetzung komplexerer Aufgaben ist eine weitere Technik noumltig In dieser Arbeit bauen die Feedback Loops auf die traditionelle Umsetzung auf Es

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 49: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Ergebnisse und Analyse

45

werden die gleichen Formeln verwendet Der eigentliche Befehl zum Lenken und Beschleunigen wird aber am Ende aller Berechnungen durch eine Feedback Loop geschickt Das hat zur Folge dass der entsprechende Wert nicht direkt gesetzt wird sondern sich langsamer dem Sollwert annaumlhert

Dadurch kann es allerdings dazu kommen dass das Fahrzeug beginnt Schlangenlinien zu fahren (siehe Abbildung 34) Sollte dieses Verhalten auftreten muss man den Regelvorgang beschleunigen dh der Sollwert muss fruumlher erreicht werden (siehe Abbildung 35) Wird der Sollwert wiederum zu schnell erreicht unterscheidet sich das Fahrverhalten nicht merklich von der reinen traditionellen Umsetzung

Pro Eine Feedback Loop ist schnell implementiert da sie meistens nur aus ein oder zwei Zeilen Quellcode besteht

Pro Eine Staumlrke der Feedback Loopszeigt sich wenn ein Uumlberholvorgang ins Spiel kommt Dem aufaddierten Lenkeinschlag zum Ausscheren naumlhert sich die Feedback Loop langsam an So entsteht eine weichere Bewegung als in der traditionellen Umsetzung und sie macht somit deren Nachteil wett

Pro Ein ebenfalls groszliger Vorteil ist die geringe Belastung der CPU die wie in Abbildung 52 zu sehen ist auf dem gleichen Niveau der sehr effizienten traditionellen Umsetzung liegt

Kontra Es handelt sich um ein reines Hilfsmittel und man kann keine komplexen Sonderfaumllle damit behandeln

Bewertung Wie der Vorgaumlnger erzielt diese Methode zufriedenstellende Ergebnisse Besonders bei abrupten Aumlnderungen wie sie die traditionelle Umsetzung liefert koumlnnen die Feedback Loops durch eine einstellbare Sollwert-Annaumlherung uumlberzeugen Komplexere Aufgaben wie Uumlberholvorgaumlnge koumlnnen jedoch nicht alleine mit Feedback Loops realisiert werden und benoumltigen nach wie vor die traditionelle Umsetzung zur Unterstuumltzung Feedback Loops sind also eher als eine Art Hilfsmittel zu bewerten

55 Fuzzy-Logic Mit der Fuzzy-Logic koumlnnen komplexe Aufgaben relativ einfach realisiert werden Man erstellt die benoumltigten FLVs (Fuzzy linguistic variable) und die gewuumlnschten Regeln Dadurch kann auf eine Implementierung in der Traditionellen Weise weitestgehend verzichtet werden Bei einer Aumlnderung der Vorgehensweise brauchen lediglich die FLVs und die Regeln angepasst zu werden In den meisten Faumlllen bringt das zwar wahrscheinlich auch Kompilierzeiten mit sich ein muumlhsames Zurechtfinden in dem bdquoherkoumlmmlichenldquo Quellcode ist jedoch nicht noumltig Auszligerdem koumlnnen die Sets innerhalb der FLVs einfach uumlber externe Dateien konfiguriert werden

Pro Diese Technik ist sehr flexibel und auch fuumlr komplexe Aufgaben einsetzbar

Pro Der zu schreibende Quelltext dient lediglich dem Erstellen der FLVs der Sets und der Regeln Die eigentliche Logik muss nicht mit traditionellem Quellcode implementiert werden sondern wird mit der Fuzzy-Logic realisiert

Kontra Ein Nachteil dieser Technik ist die etwas houmlhere Belastung der CPU Es ist aber anzunehmen dass der bisher verwendete Beispielquellcode von Mat Buckland durch sorgfaumlltige Optimierungsarbeit noch beschleunigt werden kann

Kontra Ein weiterer kleiner Nachteil ist die hohe Implementierungsarbeit die geleistet werden muss bevor Fuzzy-Logic uumlberhaupt nutzbar wird Fuzzy-Logic benoumltigt viele Klassen die implementiert werden muumlssen Bei der Verwendung fremder Bibliotheken kennt man nicht exakt die interne Funktionsweise der Technik

Bewertung Fuzzy-Logic ist etwas langsamer als die bisher vorgestellten Techniken Das Ergebnis ist dennoch zufriedenstellend Das Fahrverhalten der mit Fuzzy-Logic gesteuerten Fahrzeuge macht einen guten Eindruck Und obwohl in dieser Arbeit lediglich Lenken und Beschleunigen mit einer sehr einfachen Fuzzy-Logic realisiert wurden halte ich diese Technik fuumlr die beste Moumlglichkeit eine komplexere Fahrzeugsteuerung umzusetzen

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 50: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 5

46

56 Neuronale Netze Mein Experiment sollte zeigen ob ein einfaches vorwaumlrtsgerichtetes Neuronales Netz in der Lage ist das Steuern eines Fahrzeugs uumlber eine Rennstrecke zu erlernen Dazu habe ich die Gewichte des Netzes in einem Genetischen Algorithmus auf diese Aufgabe hin trainiert Die verwendete Rennstrecke hatte 23 Checkpoints die abgefahren werden sollten Eine KI der anderen Techniken benoumltigt zum Vergleich fuumlr die gesamte Strecke ca 60 Sekunden Die Bewertung fuumlr die Fitness hab ich so gewaumlhlt dass ein Genom besser bewertet wurde je mehr Checkpoints sie in 60 Sekunden erreicht hat

In Abbildung 53 ist zu sehen dass die maximale Fitness trotz zwischenzeitlicher Ruumlckschlaumlge uumlber alle 20 Generationen ansteigt Die durchschnittliche Fitness bleibt nach einem anfaumlnglichem Anstieg eher Konstant obwohl es kurz vor Ende noch einen kurzen Sprung nach oben gibt Das Minimum der Fitness zeigt dass es immer mindestens ein Neuronales Netz bzw eine Gewichtsverteilung in der Generation gibt die gar nicht mit der Strecke zurechtkommt

0

200

400

600

800

1000

1200

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 53 Optimierung eines Neuronalen Netz

Es kann also ein stetiger Lernanstieg verzeichnet werden Was genau der Fitnesswert in dem Fall des Neuronalen Netz aussagt kann man in Abbildung 54 erkennen Das beste Netz ist in der Lage waumlhrend der 60 Sekunden 16 Checkpoints zu absolvieren Zum Vergleich die anderen Techniken absolvieren in 60 Sekunden die gesamte Strecke das sind 23 Checkpoints Das beste Netz hat also bislang noch einen Ruumlckstand von sieben Checkpoints

Auszligerdem musste das beste Netz waumlhrend der Simulation fuumlnf Mal vom Race-Supervisor auf die Strecke zuruumlckgesetzt werden Eine andere Technik muss im Regelfall nicht zuruumlckgesetzt werden An dieser Stelle besteht also noch Verbesserungsbedarf

Ich bin jedoch der Meinung dass man durch laumlngere Evolution der Gewichte durch Genetischen Algorithmen eine weitere Verbesserung der Neuronalen Netze erzielen kann Die Bewertung der Fitness muss dahingehen angepasst werden dass Netze die nur einen Checkpoint mehr erreicht haben als andere eine deutlich houmlhere Wahrscheinlichkeit auf die Fortpflanzung haben Des Weiteren sollte die Anzahl der Respawns in die Bewertung der Fitness einflieszligen um die Neuronalen Netz in folgenden Generationen weiter zu verbessern

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 51: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Ergebnisse und Analyse

47

02468

1012141618

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Generationen

Che

ckpo

ints

Checkpoints Maximum Ceckpoints Durchschnitt

Abbildung 54 Evolution uumlber besuchte Checkpoints eines Neuronalen Netz

Im Bereich der CPU-Auslastung liegt diese Technik im Mittelfeld Sie ist etwas langsamer als die traditionelle Umsetzung aber wiederum etwas schneller als die Fuzzy-Logic Mit dieser Technik ist es mir bislang jedoch nicht gelungen eine KI zu erstellen die eine gesamte Rennstrecke mit moumlglichst wenigen Respawns absolvieren kann

Pro Diese Technik ist lernfaumlhig und muss nicht konkret auf das Problem hin implementiert werden Prinzipiell sollte ein Neuronales Netz durch Parametrisierung der Gewichte in der Lage sein eine Loumlsung einer Aufgabe zu erlernen

Kontra Es ist im Voraus nicht ersichtlich welcher Aufbau des Netzes sich als sinnvoll fuumlr das Problem erweist Der experimentelle Aufwand ist hoch

Kontra Ein Neuronales Netz ist nicht so leicht gezielt veraumlnderbar Moumlchte man zB bei der Fuzzy-Logic einstellen dass sie nicht so schnell fahren soll dann weiszlig man gewoumlhnlich welchen Parameter man aumlndern muss um das zu erreichen Moumlchte man diesen Effekt bei einem Neuronalen Netz erzielen kann man nicht sagen welche Gewichte an welchen Neuronen fuumlr diese Funktion zustaumlndig sind

Bewertung Das Resultat der Neuronalen Netze ist nicht uumlberzeugend gewesen Die Idee klingt verlockend eine Technik zu verwenden die im Stande ist die Bewaumlltigung einer Aufgabe selbststaumlndig zu erlernen Allerdings ist viel Erfahrung notwendig um zu wissen welche Neuronalen Netze bzw NN-Topologien sinnvoll fuumlr welche Aufgabe geeignet sind

57 Genetische Algorithmen Genetische Algorithmen eignen sich hervorragend zur Verbesserung aller zuvor genannten Techniken Es koumlnnen Parametrisierungen der traditionellen Umsetzung Formen der Fuzzy-Sets sowie Gewichte der Neuronalen Netze problemlos verbessert werden Es wird als ein offline Lernverfahren eingesetzt dh die KI wird nicht waumlhrend der Simulation besser sondern entwickelt sich zwischen den einzelnen Simulationen Ein online Lernverfahren hingegen wuumlrde waumlhrend einer Simulation lernen

Es hat sich gezeigt dass eine zu kleine Generationengroumlszlige schlechte Optimierungsergebnisse erzielt Gut geeignete Genome mit hoher Fitness koumlnnen leichter aussterben da die Wahrscheinlichkeit groumlszliger ist nicht fuumlr die Fortpflanzung ausgewaumlhlt zu werden In Abbildung 55 ist dargestellt wie sich ein Genetischer Algorithmus uumlber 25 Generationen entwickeln kann Eine Generation dieser Simulation bestand aus zehn Genomen mit jeweils fuumlnf Genen In dieser Simulation wurden Genome fuumlr das traditionelle Fahrzeugmodell optimiert Die fuumlnf Gene kodieren die Parametrisierung fuumlr die KI Sie bestimmen die Brems- und Lenkintensitaumlt die Radialbeschleunigung fuumlr den Bremsbeginn und die Entfernungen der Scannervorausschau

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 52: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 5

48

Der Grafik ist zu entnehmen dass waumlhrend der ersten zehn Generationen ein stetiges Ansteigen der maximalen Fitness zu verzeichnen ist Im weiteren Verlauf ist keine Verbesserung zu erkennen Die durchschnittliche Fitness steigt zu Beginn ebenfalls stark an und bleibt dann bis Ende der Simulation trotz kleinerer Schwankungen relativ konstant Die minimale Fitness sinkt oumlfters auf ein sehr niedriges Niveau herab Das kann daran liegen dass neue Genome entstanden sind die nicht in der Lage sind die Rennstrecke erfolgreich zu absolvieren Diese Genome werden mit einer schlechten Fitness bewertet

0

500

1000

1500

2000

2500

3000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25Generationen

Fitn

ess

Minimum Maximum Durchschnitt

Abbildung 55 Optimierung einer KI traditioneller Umsetzung

Leider ist dieser Algorithmus fuumlr die Verbesserung der in dieser Arbeit entstandenen KI sehr zeitaufwaumlndig da jedes Genom bzw der dadurch parametrisierte KI-Fahrer einmal die Rennstrecke absolvieren muss um seine Fitness zu ermitteln Faumlhrt jede KI nur eine Simulation von ca 100 Sekunden so benoumltigt eine komplette Simulation von 25 Genomen uumlber 25 Generationen bereits uumlber siebzehn Stunden

Ein Implementierungsproblem hat sich waumlhrend einiger Anwendungen des Algorithmus gezeigt Das Problem der Bitkodierung bestand darin dass illegale Parameterwerte wie zB NaN (not a number) entstehen konnten wenn die Bitfolge spaumlter wieder in einen bdquofloatldquo-Wert umgewandelt wurde Das so etwas auftritt ist zwar recht unwahrscheinlich aber dennoch moumlglich Des Weiteren ist aufgefallen dass manche Mutationen keinen erkennbaren Einfluss auf die Parameter hatten Die Gene sind nach wie vor bdquofloatldquo Werte Kodierung in eine Bitfolge wurde jedoch weggelassen Die Mutation addiert nun einfach einen Zufallswert innerhalb eines anzugebenden Intervalls auf ein Gen

Bewertung Genetische Algorithmen sind trotz groszligem Zeitbedarf eine geeignete Methode um die Kuumlnstliche Intelligenz zu optimieren Es ist zwar nicht gewaumlhrleistet die beste Loumlsung zu finden jedoch kann die KI mit diesen Algorithmen deutlich verbessert werden

58 Race-Supervisor Der Race-Supervisor stellte sich als gutes Instrument heraus um die Rennregeln waumlhrend des Rennens zu verfolgen Auszligerdem koumlnnen durch ihn die Rundenzeiten waumlhrend umfangreicher Simulationen zuruumlckverfolgt werden da der Supervisor alle Zeiten und Respawns protokolliert

Dadurch dass der Supervisor alle Statistiken der Fahrer kennt stellte er sich auch als sehr wichtig fuumlr die Bewertung einer KI heraus Die Bewertung kann fuumlr die Bestimmung der Fitnesswerte bei den Genetischen Algorithmen verwendet werden

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 53: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Ergebnisse und Analyse

49

59 Subjektiv echtes Rennverhalten Nachdem ich das Fahrverhalten der einzelnen Techniken uumlber laumlngere Zeit beobachtet habe kann ich sagen dass auszliger den Neuronalen Netzen alle Techniken auf mich einen guten Eindruck machen Das Neuronale Netz verlaumlsst zu oft die Renntrecke aufgrund einiger Fahrfehler Fuzzy-Logic und die traditionelle Umsetzung sind jedoch in der Lage dem Streckenverlauf in etwa so zu folgen wie man es als Benutzer auch tun wuumlrde Bei Pfadkorrekturen und Uumlberholvorgaumlngen kommt es allerdings noch zu abrupten Richtungsaumlnderungen Mit den Feedback Loops kann diesem Effekt jedoch entgegengewirkt werden

In umfangreichen Simulationen mit vielen Teilnehmern kommt es zwischen den Fahrzeugen des Oumlfteren zu Kollisionen Die KI versucht zwar diese Kollisionen zu vermeiden kann aber nicht immer erfolgreich aus brenzligen Situationen entkommen

Die auftretenden Kollisionen werden meiner Erfahrung nach von den Zuschauern eher als harte Konkurrenz unter den Teilnehmern verstanden anstatt einer Schwaumlche der KI

Von den KI-Techniken die in der Lage sind einer Rennstrecke ordnungsgemaumlszlig zu folgen kann keine als subjektiv besser bewerten da es auch stark von der Parametrisierung der entsprechenden Technik abhaumlngt

Ein Nachteil aller Techniken besteht darin dass sie waumlhrend einem Rennen nicht in der Lage sind ihre Taktik oder ihr Fahrverhalten zu veraumlndern In einem realen Rennen gibt es immer Momente in denen bestimmte Fahrer gute Rundenzeiten Zu einer spaumlteren Zeit fahren evtl andere Fahrer gute Zeiten Die Techniken fuumlr die KI absolvieren jede Runde nach der gleichen Taktik Es gibt also keine Houmlhen und Tiefen der virtuellen Fahrer Dadurch kann der subjektive Eindruck eines bdquoechtenldquo Rennens ein wenig verloren gehen

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 54: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

51

6 Fazit

Abschlieszligend werden die verschiedenen Bestandteile und Techniken einer Rennsimulation bzw eines Rennspiels noch einmal betrachtet Die erzielten Ergebnisse und Erfahrungen werden kurz zusammengefasst

Thema Seite

61 Zusammenfassung 52

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 55: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 6

52

61 Zusammenfassung Zu Beginn dieser Arbeit wurden die elementaren Bestandteile fuumlr ein virtuelles Streckenmodell vorgestellt Den Streckenverlauf durch Hermitekurven umzusetzen stellte sich als gute Wahl heraus Abgerundete Streckenverlaumlufe heben eine Rennstrecke sowohl optisch hervor und erlauben weiche Lenkbewegungen der KI Die Berechnungsgeschwindigkeit zur Bestimmung der Fahrzeugposition auf einer Hermitekurve stellte sich als recht langsam heraus und daher dienen die Sektoren zur Unterteilung der Hermitekurve Uumlber die Sektoren wird die Position der Fahrzeuge grob bestimmt und anschlieszligend mit der Hermitekurve exakt berechnet

Startpositionen dienen zur Platzierung der Fahrzeuge auf der Strecke und Checkpoints helfen den korrekten Rennablauf zu uumlberwachen Beide Bestandteile erledigten ihre Aufgabe zufriedenstellend

Die Fahrzeuge werden mithilfe der ODE simuliert Die ODE stellt dazu Bodies und Joints fuumlr die dynamische Simulation und Geoms fuumlr die Kollisionserkennung zur Verfuumlgung Die physikalische Simulation wirkt durchaus realistisch Das Fahrverhalten der Fahrzeuge ist jedoch sehr schwer zu optimieren

Untersuchungen zeigen dass die CPU-Auslastung durch die dynamisch Simulation schnell zunimmt sobald mehrere Objekte an der Simulation teilnehmen Die Kollisionserkennung ist da deutlich zuruumlckhaltender

Fuumlr die Fahrzeugsteuerung wird eine Kuumlnstliche Intelligenz eingesetzt die durch unterschiedliche Techniken umgesetzt wird

Eine Finite-State Machine dient dazu unterschiedliche Renn-Zustaumlnde der KI zu realisieren In dem Hauptzustand der fuumlr das Rennen verantwortlich ist muss die KI mehreren Aufgaben nachkommen Sie muss auf die Umwelt reagieren der Rennstrecke folgen Uumlberholmanoumlver durchfuumlhren und ggf Kollisionen versuchen zu vermeiden Sogenannte Scanner liefern der KI die notwendigen Informationen uumlber die virtuelle Welt

Eine Umsetzung der KI erfolgte uumlber traditionelle Programmiertechnik Mathematische Formeln bestimmen darin die Lenkung und die Beschleunigung um dem Streckenverlauf zu folgen Diese Methode ist aumluszligerst schnell und verursacht wenig CPU-Belastung Haumlufige Sonderfallbehandlungen zB bei Uumlberholvorgaumlngen lassen den Quelltext allerdings schnell unuumlbersichtlich werden und stellen langfristig ein Wartungsproblem dar

Die Feedback Loops bauen auf der Implementierung der traditionellen Umsetzung auf Sie lassen aber die Ergebnisse fuumlr Lenkeinschlag und Beschleunigung noch durch einen Regelkreis laufen bevor sie am Fahrzeug gesetzt werden Dadurch entsteht eine weichere Steuerung was gut bei Uumlberholvorgaumlngen zu beobachten ist

Neuronale Netze sollen selbst lernen wie eine Aufgabe zu loumlsen ist Im Fall der Fahrzeugsteuerung konnte zwar eine ansteigende Lernkurve verzeichnet werden das Neuronale Netz war jedoch zum Schluss noch nicht konkurrenzfaumlhig im Vergleich zu den anderen Techniken Ich vermute aber dass das Neuronale Netz durch weitere Simulationen und Experimente weiter zu verbessern geht

Eine sehr flexible Technik ist die Fuzzy-Logic Sie ist in der Lage komplexe Aufgaben zu loumlsen ohne viel unuumlbersichtlichen Quellcode zu produzieren Sie verwendet dazu Fuzzy linguistic variables und eigen Fuzzy Regeln Fuzzy-Logic ist allerdings langsamer als eine traditionelle Implementierung Ich halte die Fuzzy-Logic dennoch fuumlr die beste Technik um eine KI fuumlr Fahrzeugsteuerung umzusetzen Sie ist flexibel und einfach zu konfigurieren

Die verschiedenen verwendeten Techniken werden anhand von Genetischen Algorithmen fuumlr ihre Aufgaben optimiert Durch Evolution der jeweiligen Parameter werden die Techniken Generation fuumlr Generation verbessert

Bis auf die Neuronalen Netze steuern die KI-Techniken die Fahrzeuge zufriedenstellend uumlber die Rennstrecke Leider fehlen bislang Houmlhen und Tiefen der KI-Fahrer

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 56: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

53

7 Ausblick

In diesem letzten Kapitel wird ein kurzer Ausblick gegeben welche Aumlnderungen und Verbesserungen in naher Zukunft an den bisherigen Verfahren durchgefuumlhrt werden koumlnnen bzw sollen

Neben neuen Moumlglichkeiten fuumlr die Kuumlnstlichen Intelligenz soll auch das physikalische Verhalten der Fahrzeuge uumlberarbeitet werden damit einem Benutzer das Gefuumlhl fuumlr ein realistisches Fahrverhalten vermittelt werden kann und er mehr Spaszlig daran hat ein Fahrzeug zu steuern

Thema Seite

71 Pfadfindung mit dem A 54

72 Realistischeres Sprungverhalten 54

73 Konzentration und Reaktion 54

74 Optimierung des Fahrgefuumlhls 54

75 Gesamte Steuerung durch Fuzzy-Logic 55

76 Fuzzy-Skripting 55

77 Backpropagation-Training fuumlr Neuronale Netze 55

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 57: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Kapitel 7

54

71 Pfadfindung mit dem A-Algorithmus Zur Zeit verfolgen die Fahrzeuge lediglich vorgegebene Pfade die vom Leveldesigner festgelegt werden muumlssen Fuumlr OffRoad Rennspiele dh Rennspiele die nicht auf Straszligen oder allgemein auf vorgegebene Pfade festgelegt sind ist es nicht sinnvoll den Leveldesigner alle moumlglichen Pfade vorgeben zu lassen Die Anzahl der moumlglichen Pfade waumlre zu groszlig Daher werden Algorithmen benoumltigt damit sich die KI einen eigenen Weg durch die Landschaft suchen kann

Der beispielweise in dem Buch bdquoSpieleprogrammierung Gems 1ldquo [SpG1] erklaumlrte A-Algorithmus bietet der KI eine Moumlglichkeit um einen eigenen Weg suchen und festzulegen zu koumlnnen Die Landschaft koumlnnte in ein Gitterfoumlrmiges Wegpunkt-Netz eingeteilt werden an dem sich die KI orientiert

Die KI muss um eine Softwarekomponente erweitert werden die sich entsprechende Pfade aufgrund dieses Wegpunkt-Netzes erstellen kann Um diesen Pfaden zu folgen koumlnnen sehr wahrscheinlich die bestehenden Algorithmen weiter verwendet werden

72 Realistischeres Sprungverhalten Um ein annaumlhernd realistisches Fahrverhalten umzusetzen wirken zZt zusaumltzliche Kraumlfte auf die Raumlder der Fahrzeuge Sie wirken dem fruumlhzeitigen Umkippen des Fahrzeugs und dem starken Rutschen entgegen Diese Kraumlfte sind aber zudem dafuumlr verantwortlich dass die Fahrzeuge keine realistisch wirkenden Spruumlnge absolvieren koumlnnen da sie von den zusaumltzlich wirkenden Kraumlften sofort zuruumlck auf den Boden gedruumlckt werden Um das Sprungverhalten zu verbessern waumlre es hilfreich einen Weg zu finden ohne diese zusaumltzlichen Kraumlfte auszukommen oder sie waumlhrend der Sprungphasen abzuschalten

73 Konzentration und Reaktion In der momentanen Implementierung besitzt die Kuumlnstliche Intelligenz immer feste Parameter Egal mit welcher Technik sie die Rennstrecke entlang faumlhrt jede Runde ist der vorherigen Runde aumlhnlich und in bestimmten Situationen zeigt die KI immer das gleiche Verhalten Spannend waumlre es fuumlr menschliche Gegenspieler wenn die KI in gleichen Situationen unterschiedlich reagieren wuumlrde

Dazu koumlnnten sich die Parameter der angewandten Technologie waumlhrend der Laufzeit veraumlndern Ein zusaumltzlicher Parameter fuumlr die momentane Konzentration der virtuellen Fahrer koumlnnte bestimmen wie intensiv sich die Parameter veraumlndern duumlrfen Eine Konzentration von 100 wuumlrde beispielsweise keine Aumlnderung der Parameter zulassen waumlhrend eine geringere Konzentration eine immer groumlszliger werdenden Aumlnderung der Parameter ermoumlglicht

Eine zusaumltzlicher Reaktions-Parameter koumlnnte beim Start fuumlr zusaumltzliche Spannung sorgen indem nicht mehr alle Fahrer im selben Moment sondern um einen kleinen Augenblick versetzt losfahren Dieser Parameter koumlnnte beispielsweise auch die Eingaben der Scanner verzoumlgern um die Reaktionszeit des Fahrers zu simulieren

74 Optimierung des Fahrgefuumlhls Die physikalischen Eigenschaften der Fahrzeuge und der Umwelt benoumltigen eine Uumlberarbeitung um einem Benutzer das Gefuumlhl eines realistischen Fahrverhaltens zu vermitteln

Eventuell sind nicht nur Anpassungen der Parametern sondern auch andere Techniken zur Fahrzeugsimulation bzw zur physikalischen Modellierung des Fahrzeugs erforderlich

Ein groszliges Problem scheint in der digitalen Eingabe uumlber die Tastatur zu liegen Der Benutzer kann lediglich links (-10) rechts (10) oder keinen Lenkeinschlag (00) eingeben Das gleiche gilt fuumlr die Beschleunigung Es koumlnnte hilfreich sein den Lenkeinschlag abhaumlngig von der Geschwindigkeit des Fahrzeugs zu machen Einige

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 58: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Ausblick

55

Tests uumlber eine analoge Eingabemoumlglichkeit wie Joystick oder ein Lenkrad waumlren ebenfalls interessant

75 Gesamte Steuerung durch Fuzzy-Logic Wird Fuzzy-Logic eingesetzt uumlbernimmt sie zur Zeit lediglich den Teil der Pfadverfolgung Der Uumlberholvorgang die Pfadkorrektur und die Kollisionsvermeidung sollen noch umgesetzt werden Dafuumlr muumlssen entsprechende FLVs und Regeln entworfen und implementiert werden

76 Fuzzy-Skripting Mit einer sorgfaumlltig durchdachten Architektur koumlnnte man meiner Meinung nach die gesamte Fuzzy-Logic durch externe XML Dateien oder uumlber eine Skriptsprache wie beispielsweise LUA konfigurieren So braumluchte ein Entwickler keinen Quellcode mehr direkt in sein Projekt implementieren und normale Benutzer waumlren in der Lage ihre eigene KI zu erstellen wenn sie sich mit dem Aufbau der Konfigurationsdateien oderund der Skriptsprache vertraut machen

Um von den externen Dateien auf Eigenschaften der Objekte bdquozugreifenldquo bzw bdquoverweisenldquo zu koumlnnen sollte die Engine ein Konzept bereitstellen um dies zu ermoumlglichen

77 Backpropagation-Training fuumlr Neuronale Netze Ich habe damit begonnen das Netz mit der Backpropagation-Methode zu trainieren Dazu habe ich entsprechende Eingabedaten fuumlr Beschleunigung und Lenkeinschlag protokolliert waumlhrend ich selbst mit einem Fahrzeug die Rennstrecke nachgefahren bin Es ist mir bislang jedoch nicht gelungen die Fehlergroumlszlige des Neuronalen Netzes mit der Backpropagation-Methode zu minimieren Eventuell liegt ein Fehler in der Implementierung dieser Methode vor

Hier koumlnnen ebenfalls weitere Experimente durchgefuumlhrt werden um das Neuronale Netz zu verbessern

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 59: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

57

A Literatur- und Quellenverzeichnis

[AITFGP] AI Techniques for Game Programming Mat Buckland The Premier Press Game Development Series ISBN1-931841-08-X

[BLNNmB] Artikel uumlber Beschleunigtes Lernen Neuronaler Netze mit Backpropagation zuletzt besucht am 03082005

httpwwwlinux-relateddeindexhtmlcodingknnknn_paramshtm

[DCMM] Discovery Channel Online Wissensmagazin zuletzt besucht am 02082005

httpwwwdiscoverydemikrokosmos_menschsuperhirnbauplanshtml

[ETEI] Elektrotechnik Tabellen Energie-Industtrieelektronik Breachmann Dzieai Houmlrnemann Huumlbscher Jagla Klaue Westermann ISBN 3-14-225035-2

[F1TC] Themen rund um die Formel 1 zuletzt besucht am 29072005

httpwwwf1totalcomwissenswt06shtml

[FBLP] Feedback ndash Implementing Real-World Control Terence J Bordelon JuniJuli 2004 GameDeveloper Seiten 18-23

[GEAL] Seminarausarbeitung Genetische Algorithmen Sebastian Schulz Bastian Koell 19012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[GPW] AI GameProgramming Wisdom Steve Rabin

[GPW2] AI Game Programming Wisdom 2 Steve Rabin

[HCI] Dokumentation uumlber Hermitekurven zuletzt besucht am 12082005

httpcubicorgdocshermitehtm

[KIiR] Seminarausarbeitung KI in Rennspielen Johannes Spohr und Christian Niemand 26012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[NNC] Neuronale Netze Edgar Berdahl Kurs CC++ Programmierpraktikum Technische Universitaumlt Berlin SS 2002

[NNiS] Seminarausarbeitung Neuronale Netze in Spielen Heiko Waldschmidt Oliver Trosien 05012005

httpwwwplmeecsuni-kasseldeplmindexphpid=573

[ODE] Webseite der Open Dynamics Engine zuletzt besucht am 03082005

httpodeorg

[ODEC] Benoit CHAPEROT 2003-2004 Support for terrain and cones collision and drawing zuletzt besucht am 08082005

http wwwjstarlabcom

[ODEUG] Open Dynamics Engine v05 User Guide Russel Smith 2952004

[PGAI] Programming Game AI by Example Mat Buckland Wordware Publishing copy 2005 Kapitel 10 ISBN1556220782

[PSIM] Physiksimulation Markus Kettern David Schneider Freie Universitaumlt Berlin Institute of Computer Science Artificial Intelligence Group zuletzt besucht am 29072005

httpwwwschneiderleincomrobotikPhysiksimulationpdf

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze
Page 60: Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen · 2012. 4. 25. · Architektur und Künstliche Intelligenz für Rennspiele und Rennsimulationen Abschlussarbeit

Literatur- und Quellenverzeichnis

58

[SpG1] Spieleprogrammierung Gems 1 Marc DeLoura (Hrsg) mitp 2002 ISBN 3-8266-0923-9

[TdnN] Theorie der neuronalen Netze Eine sympatische Einfuumlhrung Rauacutel Rojas Springer-Lehrbuch 1996 ISBN 3-540-56353-9

[VNN] Vorlesung Neuronale Netze Prof Heinrich Werner Universitaumlt Kassel Forschungsgruppe Neuronale Netze 09052000

[WIKI] Die freie online Enzyklopaumldie Wikipedia zuletzt besucht am 12082005

httpwwwwikipediade

  • 1 Einfuumlhrung
  • 2 Infrastruktur
    • 21 Streckenmodell
      • 211 Der Streckenverlauf
      • 212 Sektoren
      • 213 Startpositionen
      • 214 Checkpoints
        • 22 Fahrzeugmodell
          • 221 Open Dynamics Engine
            • 2211 Radaufhaumlngung mit einem Hinge2 Joint
            • 2212 Oberflaumlcheneigenschaften mit dem Contact Joint
            • 2213 Zusammenfassung
              • 222 Fahrzeugeigenschaften
              • 223 Aufbau und Funktionsweise der Fahrzeuge
                • 2231 Zusammenspiel zwischen Chassis und Raumldern
                • 2232 Lenken und Beschleunigen
                  • 224 Justierung des Fahrverhaltens
                    • 23 Konfigurationsdateien
                      • 231 Zusammensetzung der Fahrzeuge
                      • 232 Konfiguration der Kuumlnstlichen Intelligenz
                      • 233 Festlegung der Rennaufstellung
                          • 3 Kuumlnstliche Intelligenz
                            • 31 Finite-State Machine
                              • 311 Konzept
                              • 312 Umsetzung
                                • 32 Feedback Loop
                                  • 321 Konzept
                                  • 322 Umsetzung
                                    • 33 Fuzzy-Logic
                                      • 331 Konzept
                                      • 332 Umsetzung
                                        • 34 Neuronale Netze
                                          • 341 Konzept
                                          • 342 Umsetzung
                                            • 35 Genetische Algorithmen
                                              • 351 Konzept
                                              • 352 Umsetzung
                                                  • 4 Fahrzeugsteuerung ndash Integration der KI
                                                    • 41 Controller - Objektkontrolle mit der scApe-Engine
                                                    • 42 Scanner - Wahrnehmung der Umwelt
                                                      • 421 Path-Scanner
                                                      • 422 Opponent-Scanner
                                                        • 43 Aufbau der Fahrzeugsteuerung
                                                          • 431 Der RACE-Zustand
                                                            • 44 Traditionelle Umsetzung
                                                            • 45 Feedback Loops
                                                            • 46 Fuzzy-Logic
                                                            • 47 Neuronale Netze
                                                            • 48 Uumlberwachung der Rennregeln und Zeiten
                                                              • 5 Ergebnisse und Analyse
                                                                • 51 Physikalische Simulation mit der ODE
                                                                  • 511 CPU-Auslastung
                                                                  • 512 Kollisionskoumlrper fuumlr die Raumlder
                                                                  • 513 Fahrverhalten
                                                                    • 52 CPU-Auslastungen der KI-Techniken
                                                                    • 53 Traditionelle Umsetzung
                                                                    • 54 Feedback Loops
                                                                    • 55 Fuzzy-Logic
                                                                    • 56 Neuronale Netze
                                                                    • 57 Genetische Algorithmen
                                                                    • 58 Race-Supervisor
                                                                    • 59 Subjektiv echtes Rennverhalten
                                                                      • 6 Fazit
                                                                        • 61 Zusammenfassung
                                                                          • 7 Ausblick
                                                                            • 71 Pfadfindung mit dem A-Algorithmus
                                                                            • 72 Realistischeres Sprungverhalten
                                                                            • 73 Konzentration und Reaktion
                                                                            • 74 Optimierung des Fahrgefuumlhls
                                                                            • 75 Gesamte Steuerung durch Fuzzy-Logic
                                                                            • 76 Fuzzy-Skripting
                                                                            • 77 Backpropagation-Training fuumlr Neuronale Netze