Simulation: Unterschied zwischen den Versionen

Aus Kicker
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Da unser Kicker ja nicht nur sinnlos nach vorne schießen soll und vorallem eine reelle Chance gegen ihn zu haben, wird eine KI (Künstliche Intelligenz) eingebaut. Um dies nun zu tun, brauchen wir ersteinmal eine Simulationumgebung, da noch keine Hardware zur Verfügung steht, an der das getestet werden kann.
Da unser Kicker ja nicht nur sinnlos nach vorne schießen soll und vorallem eine reelle Chance gegen ihn zu haben, wird eine KI (Künstliche Intelligenz) eingebaut. Um dies nun zu tun, brauchen wir ersteinmal eine Simulationumgebung, da noch keine Hardware zur Verfügung steht, an der das getestet werden kann.


Die Simulation wird vorraussichtlich in Mathlab/C++ programmiert und steht bis jetzt noch ganz am Anfang.


Ziel ist es vorallem, das ganze in Echtzeit zu simulieren, da das ganze natürlich auf jedem Rechner gleich schnell ablaufen soll.
---------------------------------------------------------------------------------------------------




----


Die Simulation wird vorraussichtlich in C++ Programmiert und steht bis jetzt noch ganz am Anfang.




[[Bild:Simulationsdiagramm.jpg]]
1. Schritt wird sein, einen Ball im Rechteck springen zu lassen.
Danach wird der Ball dann mit seinen physikalischen Eigenschaften erweitert. Reibung, Trägheit, etc. (Die Trägheit kann evtl. vernachlässigt werden, muss allerdings noch getestet werden, wie/ob die Motoren sich vom Ball beeinflussen lassen)




'''Funktionen:'''
Ziel ist es vorallem, das ganze in Echtzeit zu simulieren, da das ganze natürlich auf jedem Rechner gleich schnell ablaufen soll.

{| border="1"
| '''Fkt. Nr.'''
| '''Fkt. Name'''
| '''Beschreibung'''
|-
| 1
| Einwurf
|
* Zufallswert für den Einwurf des Balles ermitteln. (+/- 5°)
* Startgeschwindigkeit eingeben oder auf Defaultwert setzen (v<sub>x</sub>,v<sub>y</sub>)
* Position x und y auf Defaultwerte setzen. (Mittig auf einer Seite)
|-
| 2
| akt. Ball Pos
|
* Aus v<sub>x</sub>, v<sub>y</sub>, x<sub>alt</sub> und y<sub>alt</sub> wird x<sub>neu</sub> und y<sub>neu</sub> berechnet.
|-
| 3
| Ball Gerade
|
* Aus x<sub>neu</sub>, y<sub>neu</sub>, x<sub>alt</sub> und y<sub>alt</sub> wird die Schnittgerade g<sub>Schnitt</sub> berechnet. (Eigentlich handelt es sich und die Fläche mit der oben beschriebenen Länge und der Breite des Balles. In einem verfeinerten Model könnte man noch die Rundung des Balles berücksichtigen.)
|-
| 4
| Kollision
|
* Diese Funktion besteht selbst aus mehreren Teilfunktionen.
* Selbst prüft es ob und wenn womit eine Kollision stattgefunden hat und ruft das entsprechende Auswertungsprogramm auf.
|-
| 5
| Schuss_Ausw.
|
* Es wird überprüft, ob die Spielerstange, an der der Spieler, der den Ball berührt hat, befestigt ist, sich gerade in Bewegung befindet.
* Wenn ja handelt es sich um einen aktiven Schuss.
* Wenn nein liegt ein passiver „Schuss“ vor.
* Zurückliefern muss die Funktion, eine neu akt. Pos (x,y) und zwei akt. Geschwindigkeitsvektoren v<sub>x</sub> und v<sub>y</sub>. (Die Positionen x<sub>alt</sub> und y<sub>alt</sub> müssen so gesetzt werden, dass die neue Schnittgerade richtig berechnet wird, aber es wegen des Punktes nicht erneut zur Kollision zwischen dem Ball und dem selben Spieler kommt.)
|-
| 6
| Tor o. Bande
| Es wird überprüft, ob der Ball außerhalb es Spielfeldes ist und ob sich die Schnittgerade mit einem der beiden Tore schneidet oder der Bande.
|-
| 7
| Spielstand
| Handelt es sich um ein Tor, so wird der Spielstand modifiziert und zum Zustand idle gesprungen
|-
| 8
| Bande_Ausw.
| Über Einfallswinkel gleich Ausfallswinkel werden alle Positionen und Vektoren neu berechnet.
|-
| 9
| I/O
| Es handelt sich um die Funktion, die die Ein – und Ausgabe regeln soll. (Außer der Abfrage der Ballgeschwindigkeit beim Einwurf. Event. macht es allerdings Sinn die gleiche Funktion zu verwenden…)
Die Ausgabe erfolgt auf einen Bildschirm (optisch) und alle Parameter werden an die KI-Programme weitergegeben. (Mensch und Comp., sofern beide elektronisch gesteuert werden.) Um die Bildrate der Ballerfassung zu Simulieren, werden die Parameter für die Comp. KI lediglich alle 10 ms weitergegeben.
Um auch ohne Kickerhardware in der Praxis testen zu können, sollen die Eingaben sowohl von den KI-Programmen, als auch von der Tastatur möglich sein.
|}

'''Zusände:'''

{| border="1"
|'''Z.Nr.'''
|'''Zustandsname'''
|'''Beschreibung'''
|-
|1
|Idle
|
* Alle Spieler mittig und mit Füßen nach unten auf dem Spielfeld
* Ball außerhalb des Spielfeldes
|}

Version vom 13. November 2008, 22:52 Uhr

Da unser Kicker ja nicht nur sinnlos nach vorne schießen soll und vorallem eine reelle Chance gegen ihn zu haben, wird eine KI (Künstliche Intelligenz) eingebaut. Um dies nun zu tun, brauchen wir ersteinmal eine Simulationumgebung, da noch keine Hardware zur Verfügung steht, an der das getestet werden kann.

Die Simulation wird vorraussichtlich in Mathlab/C++ programmiert und steht bis jetzt noch ganz am Anfang.

Ziel ist es vorallem, das ganze in Echtzeit zu simulieren, da das ganze natürlich auf jedem Rechner gleich schnell ablaufen soll.




Simulationsdiagramm.jpg


Funktionen:

Fkt. Nr. Fkt. Name Beschreibung
1 Einwurf
  • Zufallswert für den Einwurf des Balles ermitteln. (+/- 5°)
  • Startgeschwindigkeit eingeben oder auf Defaultwert setzen (vx,vy)
  • Position x und y auf Defaultwerte setzen. (Mittig auf einer Seite)
2 akt. Ball Pos
  • Aus vx, vy, xalt und yalt wird xneu und yneu berechnet.
3 Ball Gerade
  • Aus xneu, yneu, xalt und yalt wird die Schnittgerade gSchnitt berechnet. (Eigentlich handelt es sich und die Fläche mit der oben beschriebenen Länge und der Breite des Balles. In einem verfeinerten Model könnte man noch die Rundung des Balles berücksichtigen.)
4 Kollision
  • Diese Funktion besteht selbst aus mehreren Teilfunktionen.
  • Selbst prüft es ob und wenn womit eine Kollision stattgefunden hat und ruft das entsprechende Auswertungsprogramm auf.
5 Schuss_Ausw.
  • Es wird überprüft, ob die Spielerstange, an der der Spieler, der den Ball berührt hat, befestigt ist, sich gerade in Bewegung befindet.
  • Wenn ja handelt es sich um einen aktiven Schuss.
  • Wenn nein liegt ein passiver „Schuss“ vor.
  • Zurückliefern muss die Funktion, eine neu akt. Pos (x,y) und zwei akt. Geschwindigkeitsvektoren vx und vy. (Die Positionen xalt und yalt müssen so gesetzt werden, dass die neue Schnittgerade richtig berechnet wird, aber es wegen des Punktes nicht erneut zur Kollision zwischen dem Ball und dem selben Spieler kommt.)
6 Tor o. Bande Es wird überprüft, ob der Ball außerhalb es Spielfeldes ist und ob sich die Schnittgerade mit einem der beiden Tore schneidet oder der Bande.
7 Spielstand Handelt es sich um ein Tor, so wird der Spielstand modifiziert und zum Zustand idle gesprungen
8 Bande_Ausw. Über Einfallswinkel gleich Ausfallswinkel werden alle Positionen und Vektoren neu berechnet.
9 I/O Es handelt sich um die Funktion, die die Ein – und Ausgabe regeln soll. (Außer der Abfrage der Ballgeschwindigkeit beim Einwurf. Event. macht es allerdings Sinn die gleiche Funktion zu verwenden…)

Die Ausgabe erfolgt auf einen Bildschirm (optisch) und alle Parameter werden an die KI-Programme weitergegeben. (Mensch und Comp., sofern beide elektronisch gesteuert werden.) Um die Bildrate der Ballerfassung zu Simulieren, werden die Parameter für die Comp. KI lediglich alle 10 ms weitergegeben. Um auch ohne Kickerhardware in der Praxis testen zu können, sollen die Eingaben sowohl von den KI-Programmen, als auch von der Tastatur möglich sein.


Zusände:

Z.Nr. Zustandsname Beschreibung
1 Idle
  • Alle Spieler mittig und mit Füßen nach unten auf dem Spielfeld
  • Ball außerhalb des Spielfeldes