class WorldModel

Kapselung des Wissens eines Agenten ueber seine Umwelt und sich selbst

Public Classes

class IncorrectOldSituationException: public Exception
Interne Fehlerklasse

Public Methods

int decode( String string )
Entschlüsselt den gegebenen String zu einer Zahl
String encode( int number )
Verschlüsselt die gegebene Zahl zu einem String
String toString()
Beschreibung als String fuer die Ausgabe

Public

Abfragen zur Vorzugsrichtung
Vector preferredKickDirection( const Vector& pos )
Liefert die bevorzugte Kickrichtung
int region( const Vector& pos )
Liefert die Region, in der sich eine Position befindet
Anfragen zum Agenten
int playerNumber()
Liefert die Spielernummer des Agenten
const String& teamName()
Liefert den Namen des Teams, zu dem der Agent gehoert
int side()
Liefert die Seite des Agenten
int id()
Liefert die Id des Agenten
Vector basePosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
Liefert die Basisposition des Agenten
Vector initialPosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
Liefert die Anfangsposition des Agenten
Anfragen zur aktuellen Situation
const ModelledPlayer& player( int playerId = SELF_ID )
Liefert aktuelle Daten ueber den gewuenschten Spieler
const ModelledBall& ball()
Liefert aktuelle Daten ueber den Ball
int simStep()
Liefert den Simulationstakt der aktuellen Situation
const Situation& situation( int timeStepOffset = 0 )
Liefert aktuelle, vergangene und zukuenftige Situationen
int gameState()
Liefert den Spielzustand zurueck
int decisionReason()
Liefert den Entscheidungsgrund zurück
int initiative()
Liefert die Initiative
bool hasInitiative( int aTeamId )
Gibt an, ob ein bestimmtes Team die Initiative hat
bool amIOneOfTheNearestPlayerToBall()
Sagt aus, ob der eigene Spieler einer derjenigen ist, der den Ball als schnellstes erreichen kann
int score(int aTeamId)
Liefert die Zahl der Tore, die ein Team bisher erzielt hat
const Field& field()
Liefert das Feld, auf dem der Agent spielt
RasteredPlayground& rasteredPlayground()
Ermoeglicht den Zugriff auf den RasteredPlayground, der aktuelle Werte ueber Aufenthaltshaeufigkeiten von Spielern und Ball enthaelt
int simStepOfLastCatch()
Der simStep, an dem das letzte Catch-Kommando an den Server geschickt wurde
int simStepOfLastSay()
Der simStep, an dem das letzte Say-Kommando an den Server geschickt wurde
int simStepOfLastRefereeDecision()
Der simStep, an dem die letzte Schiedsrichterentscheidung eingetroffen ist
const Vector& enemyGoal()
Liefert die Position des Mittelpunktes des gegenerischen Tores
const Vector& ourGoal()
Liefert die Position des Mittelpunktes des eignen Tores
const Vector& ourGoalTop()
Liefert die Position des oberen Pfosten des eignen Tores
const Vector& ourGoalBottom()
Liefert die Position des unteren Pfosten des eignen Tores
int role()
Liefert die Rolle des Agenten
Mögliche Entscheidungsgründe.
const int DECISION_REASON_MIN
const int DECISION_REASON_SEE_INFO
const int DECISION_REASON_REFEREE_DECISION
const int DECISION_REASON_PLAN_ENDED
const int DECISION_REASON_MAX
Mögliche Spielzustände
const int GAME_STATE_MIN
const int BEFORE_KICK_OFF
const int TIME_OVER
const int PLAY_ON
const int KICK_OFF
const int KICK_IN
const int FREE_KICK
const int CORNER_KICK
const int GOAL_KICK
const int GOAL
const int FOUL
const int HALF_TIME
const int TIME_UP
const int TIME_UP_WITHOUT_A_TEAM
const int TIME_EXTENDED
const int OFFSIDE
const int DROP_BALL
const int GAME_STATE_MAX
Verbindung zu Sensors und Effektors
void integrateSensorInfo()
Integriert die Sensorinformationen in das Weltmodell
void integrateHearInfo()
Integriert Schiedsrichtermeldungen in das Weltmodell
void registerExecution( const Action& anAction )
Registriert, daß eine Aktion abgesendet wurde
void updateWithAction( const Action& anAction )
Integriert die Folgen der Ausführung einer Aktion
void mergeSituations( Situation& trustedSituation, Situation& anotherSituation )
Fügt Informationen aus der anderen Situation in die vertrauenswürdigere Situation ein
Werte der aktuellen Situation setzen
void setSimStep( int newValue )
Setzt den Simulationstakt der aktuellen Situation
void setGameState( int newGameState )
Setzt den Spielzustand
void setDecisionReason( int newDecisionReason )
Setzt den Entscheidungsgrund
void setInitiative(int newValue)
Setzt die Initiative
void setScore( int newScore, int aTeamId )
Setzt die Zahl der Tore fuer ein Team
void setRole( int newRole )
Setzt die Rolle eines Spielers
Werte des Agenten setzen
void setPlayerNumber( int newPlayerNumber )
Setzt die Spielernummer des Agenten
void setTeamName( const String& newTeamName )
Setzt den Namen des Teams, zu dem der Agent gehoert
void setSide( int newSide )
Setzt die Seite, auf der der Agent spielt
void setBasePosition( int aGameState, int anInitiative, const Vector& pos )
Setzt die Basisposition des Agenten
void setInitialPosition( int aGameState, int anInitiative, const Vector& pos )
Setzt die Anfangsposition des Agenten
WorldModel anlegen
WorldModel( Sensors *sensors )
Erzeugt ein neues Weltmodell, das seine Informationen aus der Sensorik-Komponente Sensors bezieht

Private Fields

int currentSituationIndex
Index der aktuellen Situation im Array
int historyCount
Zahl der vergangenen Situtationen, die aufgehoben werden sollen und gleichzeitig auch Zahl der in die Zukunft simulierbaren Aktionen
static const double INNER_LIMIT
Inneres Limit
static const double OUTER_LIMIT
Äusseres Limit
int situationFieldSize
Interne Feldgroesse fuer das Array der Situationen
Array <Vector> theBasePositions
Die Basispositionen des Agenten
int theDecisionReason
Der aktuelle Entscheidungsgrunf
Array <Action> theExecutedActions
Puffert die abgesendeten Aktionen
Field theField
Das Feld, auf dem der Spieler spielt
int theGameState
Der aktuelle Spielzustand
Array <Vector> theInitialPositions
Die Anfangspositionen des Agenten
int theInitiative
Das Team, das die Initiative besitzt
int thePlayerNumber
Die Spielernummer
RasteredPlayground theRasteredPlayground
RasteredPlayground verwaltet online erfasste Daten der gegnerischen Spielerpositionen und des Balles
int theRole
Die Rolle des Agenten
int theScore[2]
Die Zahl der bisher gefallenen Tore
Sensors* theSensors
Zeiger auf das Sensorik-Objekt
int theSide
Die Seite des Spielfelds, auf der das Tor des Teams des Agenten steht
int theSimStepOfLastCatch
simStep des letzten catch-Kommandos
int theSimStepOfLastRefereeDecision
simStep der letzten Schiedsrichterentscheidung
int theSimStepOfLastSay
simStep des letzten say-Kommandos
mutable Array <Situation> theSituations
Array, das vergangene (und zukuenftige) Situationen enthaelt
String theTeamName
Der Teamname

Private Methods

void addCurrentSituation( const Situation& aSituation )
Speichert eine Situation als die (neue) gegenwaertige ab
void addSeenObjects( Situation& newSituation )
Fügt alle gesehenen Objekte in die Situation ein
void improveConsistency()
Führt Konsistenzchecks durch und paßt die aktuelle Situation und das restlichen Weltmodell an
int indexOfCorrespondingPlayer( ModelledPlayer player, Situation situation )
Sucht zum angegebenen Spieler einen korrespondierenden in der angegebenen Situation
ModelledBall mergeBalls( const ModelledBall& trustedBall, const ModelledBall& anotherBall, const ModelledPlayer& mySelf )
Fügt Informationen des anderen Balles in den vertrauenswürdigeren Ball ein
ModelledPlayer mergePlayers( const ModelledPlayer& trustedPlayer, const ModelledPlayer& anotherPlayer )
Fügt Informationen des anderen Spielers in den vertrauenswürdigeren Spieler ein
const ModelledPlayer modelOfSelf()
Liefert einen ModelledPlayer, der die Daten über den Spieler selbst enthält
int positionIndexFromState( int aGameState, int anInitiative )
Liefert einen internen Index, an dem die Position des Agenten fuer den angegebenen Spielzustand/Initiative steht
void processAudioInfo( Situation& newSituation, const Array<Message>& messages )
Verarbeitet Zurufe
void processOurTeamMessage( Situation& newSituation, const Message& message )
Verarbeitet Zurufe eines Mitspielers
void processRefereeMessage( const Message& message )
Verarbeitet Schiedsrichterentscheidungen
Vector relativePos( const Vector& seenPos, double faceDir )
Berechnet die relative Position des Objekts
Vector relativeSpeed( const Vector& relativePos, const Vector& seenChangeOfPos )
Berechnet die relative Geschwindigkeit eines Objekts
void removeCurrentSituation()
Entfernt die aktuelle Situation aus dem Weltmodell
void setSimStepOfLastCatch( int newSimStep )
Setzt den simStep, an dem das letzte Catch-Kommando an den Server geschickt wurde
void setSimStepOfLastRefereeDecision( int newSimStep )
Setzt den simStep, an dem die letzte Schiedsrichterentscheidung eingetroffen ist
void setSimStepOfLastSay( int newSimStep )
Setzt den simStep, an dem das letzte Say-Kommando an den Server geschickt wurde
void synchronizeSituations( int simStep )
Die alten Situationen werden für die Integration von neuen Sensorinformationen aufbereitet

Documentation

Kapselung des Wissens eines Agenten ueber seine Umwelt und sich selbst.

Bemerkungen zu einzelnen Wissenselementen:

Situation: Ein Objekt, in Modelle der dem Spieler bekannten, sich auf dem Spielfeld bewegenden Objekte enthalten sind. Diese Modelle (die von ModelledObject abstammen), enthalten u.A. die absoluten Koordinaten auf dem Spielfeld und die Geschwindigkeit.

Initiative: Wer als naechster den Ball spielen darf. Die Mannschaft, die nicht die Initiative hat, muss warten, bis die Mannschaft mit Initiative den Ball beruehrt hat. Anfangs bekommt die auf der linken Seite spielende Mannschaft die Initiative.

Die Klasse ist nicht zur Vererbung geeignet.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: WorldModel.h,v $
  *   $Revision: 1.63 $
  *   $Date: 1998/08/14 13:21:34 $
  *   $Author: myritz $ 
  *
  **************************************************
  
class IncorrectOldSituationException: public Exception
Interne Fehlerklasse

Mögliche Spielzustände
Ein Wechsel des Spielzustands wird normalerweise vom Schiedsrichter bekanntgegeben.

const int GAME_STATE_MIN

const int BEFORE_KICK_OFF

const int TIME_OVER

const int PLAY_ON

const int KICK_OFF

const int KICK_IN

const int FREE_KICK

const int CORNER_KICK

const int GOAL_KICK

const int GOAL

const int FOUL

const int HALF_TIME

const int TIME_UP

const int TIME_UP_WITHOUT_A_TEAM

const int TIME_EXTENDED

const int OFFSIDE

const int DROP_BALL

const int GAME_STATE_MAX

Mögliche Entscheidungsgründe.

const int DECISION_REASON_MIN

const int DECISION_REASON_SEE_INFO

const int DECISION_REASON_REFEREE_DECISION

const int DECISION_REASON_PLAN_ENDED

const int DECISION_REASON_MAX

WorldModel anlegen

WorldModel( Sensors *sensors )
Erzeugt ein neues Weltmodell, das seine Informationen aus der Sensorik-Komponente Sensors bezieht. Das Weltmodell legt ein internes Feld (Field) an, welches die Positionen der moeglichen Flaggen enthaehlt und eine Berechnung des eigenen Blickpunktes aus gesehenen Objekten erlaubt.
Parameters:
Pointer - auf das aktive Sensorik-Objekt

Anfragen zum Agenten

int playerNumber()
Liefert die Spielernummer des Agenten

const String& teamName()
Liefert den Namen des Teams, zu dem der Agent gehoert

int side()
Liefert die Seite des Agenten

int id()
Liefert die Id des Agenten

Vector basePosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
Liefert die Basisposition des Agenten. Die BasisPosition wird anfangs aus der Konfigurationsdatei eingelesen, kann sich aber waehrend des Spiels ändern. Je nach Spielzustand und Initiative wird eine andere Basisposition geliefert. Werden dafür keine Werte angegeben, werden die aktuellen Werte aus dem Weltmodell verwendet.
Returns:
absoluter Vektor zur Basisposition.
Parameters:
aGameState - Einer der möglichen Spielzustände.
anInitiative - Einer der Werte von in Teams.

Vector initialPosition( int aGameState = UNDEF_INT, int anInitiative = UNDEF_INT )
Liefert die Anfangsposition des Agenten. Je nach Spielzustand und Initiative wird eine andere Anfangsposition geliefert. Werden dafür keine Werte angegeben, werden die aktuellen Werte aus dem Weltmodell verwendet. Die Anfangsposition wird aus der Konfigurationsdatei ausgelesen und ändert sich nur bei einem Rollentausch. Als Laufziel sollte immer ein Wert von basePosition() verwendet werden.
Returns:
absoluter Vektor zur Anfangsposition.
Parameters:
aGameState - Einer der möglichen Spielzustände.
anInitiative - Einer der Werte von in Teams.

Werte des Agenten setzen

void setPlayerNumber( int newPlayerNumber )
Setzt die Spielernummer des Agenten. Ein ModelledPlayer mit seiner Id wird in die aktuelle Situation aufgenommen, falls er dort noch nicht vorhanden ist. Die Anfangs- und die Basispositionen werden aus globalConf gelesen und gesetzt.

void setTeamName( const String& newTeamName )
Setzt den Namen des Teams, zu dem der Agent gehoert

void setSide( int newSide )
Setzt die Seite, auf der der Agent spielt

void setBasePosition( int aGameState, int anInitiative, const Vector& pos )
Setzt die Basisposition des Agenten. Hier müssen der Spielzustand und die Initiative angegeben werden. Gilt dieselbe Position für verschiedene Zustände, so modifiziert das Setzen in einem dieser Zustände die Position für alle diese Zustände.
Parameters:
aGameState - Einer der möglichen Spielzustände.
anInitiative - Einer der Werte von in Teams.

void setInitialPosition( int aGameState, int anInitiative, const Vector& pos )
Setzt die Anfangsposition des Agenten. Hier müssen der Spielzustand und die Initiative angegeben werden. Gilt dieselbe Position für verschiedene Zustände, so modifiziert das Setzen in einem dieser Zustände die Position für alle diese Zustände.

Nur die Initialisierungs- und der Rollentauschroutine setzen die Anfangspositionen um.

Parameters:
aGameState - Einer der möglichen Spielzustände.
anInitiative - Einer der Werte von in Teams.

Anfragen zur aktuellen Situation

const ModelledPlayer& player( int playerId = SELF_ID )
Liefert aktuelle Daten ueber den gewuenschten Spieler. Wird kein Spieler angegeben, werden die Daten ueber den Agenten selbst geliefert.

Throws:
Situation ::NoPlayerWithThisIdException, wenn der angegebene Spieler in der aktuellen Situation nicht existiert.
InvalidIdException , wenn die playerId ungueltig ist.
Returns:
ModelledPlayer mit den gewuenschten Daten.
Parameters:
playerId - die Id des gewuenschten Spielers. (default ist id() )

const ModelledBall& ball()
Liefert aktuelle Daten ueber den Ball. Wenn es keine Daten ueber den Ball gibt, wird ein BallObjekt mit undefinierten Werten zurueckgegeben.

int simStep()
Liefert den Simulationstakt der aktuellen Situation. Die zu diesem Zeittakt gehoerende Situation wird von situation() geliefert.

const Situation& situation( int timeStepOffset = 0 )
Liefert aktuelle, vergangene und zukuenftige Situationen. Es wird eine gewisse, vom historyCount-Parameter in agent.conf abhaengige Zahl von alten Situationen gespeichert. Aufgrund von Synchronisationsproblemen oder eines Spielzustands, in dem das Spiel nicht laeuft, lassen sich nicht immer alle Situationen bis zum Takt simStep-historyCount abfragen.

Die haeufigste Verwendung ist sicher die Frage nach der aktuellen Situation. Der Parameter timeStepOffset ist per Default auf 0 gesetzt, so dass mit situation() auf die aktuelle Situation zugegriffen werden kann.

Throws:
Array <Situation>::IndexOutOfBoundsException, wenn der timeStepOffset einen ungueltigen Wert hatte.
Returns:
Eine Referenz, die die angefragte Situation enthält. Diese veraendert sich moeglicherweise mit Aenderung des simSteps().
Parameters:
timeStepOffset - Mit timeStepOffset < 0 koennen vergangene (d.h. gespeicherte) Situationen abgerufen werden. Mit timeStepOffset > 0 koennen zukuenftige Situationen vorausberechnet werden. Zulaessige Werte liegen zwischen -historyCount und +historyCount (wird in agent.conf gesetzt).

int gameState()
Liefert den Spielzustand zurueck. Dieser ist als int kodiert.

int decisionReason()
Liefert den Entscheidungsgrund zurück. Dieser kann die Werte DECISION_REASON_SEE_INFO, DECISION_REASON_REFEREE_DECISION oder DECISION_REASON_MIN_PLAN_ENDED annehmen.

int initiative()
Liefert die Initiative
Returns:
Einer der Werte OUR_TEAM_ID, THEIR_TEAM_ID, BOTH_TEAMS_ID, NO_TEAM_ID

bool hasInitiative( int aTeamId )
Gibt an, ob ein bestimmtes Team die Initiative hat. Diese Funktion erleichtert das Umgehen mit der Initiative, da mehrfache Abfragen unnötig werden. Wir haben die Initiative, wenn, die Initiative auf OUR_TEAM_ID oder auf BOTH_TEAMS_ID steht. Entsprechendes gilt fuer THEIR_TEAM_ID.
Throws:
InvalidIdException , wenn die aTeamId einen ungueltigen Wert hat.
Returns:
YES oder NO.
Parameters:
aTeamId - Das Team, von erfragt werden soll, ob es die Initiative hat. Mögliche Werte sind OUR_TEAM_ID, THEIR_TEAM_ID.

bool amIOneOfTheNearestPlayerToBall()
Sagt aus, ob der eigene Spieler einer derjenigen ist, der den Ball als schnellstes erreichen kann. YES wird zurückgeben, wenn er der Spieler des eigenen Teams mit den wenigsten Schritten zum Ball ist oder er nur globalConf->interceptionTolerance Schritte langsamer, als der schnellste Teamkamerad ist.
Returns:
YES oder NO.

int score(int aTeamId)
Liefert die Zahl der Tore, die ein Team bisher erzielt hat
Throws:
InvalidIdException , wenn die aTeamId einen ungueltigen Wert hat.
Returns:
Die Zahl der Tore dieses Teams.
Parameters:
aTeamId - Id des Teams. Gueltig sind OUR_TEAM_ID und THEIR_TEAM_ID

const Field& field()
Liefert das Feld, auf dem der Agent spielt

RasteredPlayground& rasteredPlayground()
Ermoeglicht den Zugriff auf den RasteredPlayground, der aktuelle Werte ueber Aufenthaltshaeufigkeiten von Spielern und Ball enthaelt

int simStepOfLastCatch()
Der simStep, an dem das letzte Catch-Kommando an den Server geschickt wurde

int simStepOfLastSay()
Der simStep, an dem das letzte Say-Kommando an den Server geschickt wurde

int simStepOfLastRefereeDecision()
Der simStep, an dem die letzte Schiedsrichterentscheidung eingetroffen ist

const Vector& enemyGoal()
Liefert die Position des Mittelpunktes des gegenerischen Tores

const Vector& ourGoal()
Liefert die Position des Mittelpunktes des eignen Tores

const Vector& ourGoalTop()
Liefert die Position des oberen Pfosten des eignen Tores

const Vector& ourGoalBottom()
Liefert die Position des unteren Pfosten des eignen Tores

int role()
Liefert die Rolle des Agenten. Die Rolle bestimmt das Verhalten des Spielers. Anfangs wird die Rolle aus der Konfigurationsdatei eingelesen. Steht dort ein ungültiger Wert, wird auch von dieser Funktion ein ungültiger Wert geliefert.
Returns:
Der Wert einer der Rollenkonstanten.
See Also:
\Ref{Rollen}

Werte der aktuellen Situation setzen

void setSimStep( int newValue )
Setzt den Simulationstakt der aktuellen Situation. Diese Funktion sollte mit Vorsicht verwendet werden, damit nicht die interne Synchronisation des Weltmodells durcheinander geraet.

void setGameState( int newGameState )
Setzt den Spielzustand

void setDecisionReason( int newDecisionReason )
Setzt den Entscheidungsgrund. Erlaubte Werte sind DECISION_REASON_SEE_INFO, DECISION_REASON_REFEREE_DECISION und DECISION_REASON_MIN_PLAN_ENDED.

void setInitiative(int newValue)
Setzt die Initiative. Dabei kann auch eine Seite angegeben werden. Spielen wir gerade auf dieser Seite, wird die Initiative auf OUR_TEAM_ID gesetzt, andernfalls auf THEIR_TEAM_ID.

Parameters:
newValue - Entweder die Id eines Teams ( OUR_TEAM_ID, THEIR_TEAM_ID, BOTH_TEAMS_ID ) oder die Id einer Seite (LEFT_SIDE_ID, RIGHT_SIDE_ID )

void setScore( int newScore, int aTeamId )
Setzt die Zahl der Tore fuer ein Team
Throws:
InvalidIdException , wenn die aTeamId einen ungueltigen Wert hat
Parameters:
newScore - Die neue Zahl der Tore
aTeamId - Id des Teams. Gueltig sind OUR_TEAM_ID und THEIR_TEAM_ID

void setRole( int newRole )
Setzt die Rolle eines Spielers. Die Rolle bestimmt das Verhalten des Spielers. Anfangs wird die Rolle aus der Konfigurationsdatei eingelesen. Die Gültigkeit der Rolle wird nicht überprüft.
Parameters:
newRole - neue Rolle des Spielers.
See Also:
\Ref{Rollen}

Verbindung zu Sensors und Effektors

void integrateSensorInfo()
Integriert die Sensorinformationen in das Weltmodell. Dabei wird eine neue Situation erzeugt und evtl. der Spielzustand geaendert. Sowohl Sicht- als auch Hoerinformationen werden ausgewertet.
See Also:
synchronizeSituations
modelOfSelf
addSeenObjects
mergeOldSituationsIntoSituation
processAudioInfo

void integrateHearInfo()
Integriert Schiedsrichtermeldungen in das Weltmodell. Dabei wird der Spielzustand der aktuellen Situation geaendert. Es werden nur Hoerinformationen ausgewertet.
See Also:
processAudioInfo

void registerExecution( const Action& anAction )
Registriert, daß eine Aktion abgesendet wurde. Führt gegebenenfalls ein updateWithAction durch.
Parameters:
anAction - Die abgeschickte Aktion

void updateWithAction( const Action& anAction )
Integriert die Folgen der Ausführung einer Aktion. Ist die Aktion eine Hauptaktion, wird eine neue Situation unter der Annahme erzeugt, dass der Agent in der aktuellen Situation die angegebene Aktion ausfuehrt. Die neue Situation wird zur aktuellen Situation. Ist die Aktion eine Nebenaktion, wird keine neue Situation angelegt!
Parameters:
Die - Aktion, die integriert werden soll.

void mergeSituations( Situation& trustedSituation, Situation& anotherSituation )
Fügt Informationen aus der anderen Situation in die vertrauenswürdigere Situation ein. Die Reliablity Objekte bilden die Grundlage für das Fusionieren der einzelnen Objekte. Verglichen werden nur Objekte die gleich sind. Es werden jeweils die aktuelleren Daten dieser Objekte übernommen, bei Gleichheit siegt das Datum, daß der vertrauenswürdigeren Situation entspricht. Daten der anderen Situation, die keine Entsprechung in der vertauenswürdigen Situation haben werden nicht übernommen.
Parameters:
trustedSituation - vertrauenswürdige Situation dessen Daten als Grundlage angesehen werden.
anotherSituation - andere Situation, dessen Daten einverleibt werden sollen.
See Also:
mergeBalls

Abfragen zur Vorzugsrichtung

Vector preferredKickDirection( const Vector& pos )
Liefert die bevorzugte Kickrichtung. Diese "Vorzugsrichtung" ist abhängig von der Position des Spielers. Durch sie werden wichtige Eigenschaften des Mannschaftsspiels umgesetzt, z.b. Flanken und Angriffe über die Flügel.
Returns:
Ein Richtungsvektor. Die Richtungskomponente ( length()) direkt der kickBall-Skill übergeben werden. Die Laenge gibt die optimale Ballgeschwindigkeit in m/simStep an. Die Division der Laenge durch globalConf->kickPowerRate ergibt eine Kraft, die kickBall übergeben werden kann.
Parameters:
pos - Position, für die die Vorzugsrichtung berechnet werden soll.

int region( const Vector& pos )
Liefert die Region, in der sich eine Position befindet. Ja nach Region kann sich ein Spieler anders verhalten. Auch die Definition der Vorzugsrichtungsfunktion basiert auf der Region, in der sich eine Position befindet.
Returns:
Die Nummer der Region, eine Zahl zwischen 1 und 10.
Parameters:
pos - Position, für die die Region ermittelt werden soll.

String encode( int number )
Verschlüsselt die gegebene Zahl zu einem String
Parameters:
number - Die zu codierende Zahl.

int decode( String string )
Entschlüsselt den gegebenen String zu einer Zahl
Parameters:
string - Der zu decodierende String.

String toString()
Beschreibung als String fuer die Ausgabe

Sensors* theSensors
Zeiger auf das Sensorik-Objekt

Field theField
Das Feld, auf dem der Spieler spielt

mutable Array <Situation> theSituations
Array, das vergangene (und zukuenftige) Situationen enthaelt

int currentSituationIndex
Index der aktuellen Situation im Array

int historyCount
Zahl der vergangenen Situtationen, die aufgehoben werden sollen und gleichzeitig auch Zahl der in die Zukunft simulierbaren Aktionen

int situationFieldSize
Interne Feldgroesse fuer das Array der Situationen

String theTeamName
Der Teamname

int thePlayerNumber
Die Spielernummer

int theSide
Die Seite des Spielfelds, auf der das Tor des Teams des Agenten steht

int theScore[2]
Die Zahl der bisher gefallenen Tore

int theInitiative
Das Team, das die Initiative besitzt

int theGameState
Der aktuelle Spielzustand

int theDecisionReason
Der aktuelle Entscheidungsgrunf

int theSimStepOfLastCatch
simStep des letzten catch-Kommandos

int theSimStepOfLastSay
simStep des letzten say-Kommandos

int theSimStepOfLastRefereeDecision
simStep der letzten Schiedsrichterentscheidung

Array <Vector> theBasePositions
Die Basispositionen des Agenten. Sie sind anfangs identisch mit den Anfangspositionen, können sich aber während des Spiels durch Lernen verändern. Index 0: Position bei eigenem Anstoß

Index 1: Position bei Anstoß des Gegners

Index 2: Position während des normalen Spiels.

Array <Vector> theInitialPositions
Die Anfangspositionen des Agenten. Sie werden aus der Konfigurationsdatei ausgelesen.

Index 0: Position bei eigenem Anstoß

Index 1: Position bei Anstoß des Gegners

Index 2: Position während des normalen Spiels.

Array <Action> theExecutedActions
Puffert die abgesendeten Aktionen

static const double OUTER_LIMIT
Äusseres Limit. y-Koordinate einer waagrechten Linie 6m vom Feldrand.

static const double INNER_LIMIT
Inneres Limit. y-Koordinate einer waagrechten Linie 14m vom Feldrand.

int theRole
Die Rolle des Agenten

RasteredPlayground theRasteredPlayground
RasteredPlayground verwaltet online erfasste Daten der gegnerischen Spielerpositionen und des Balles. Es bietet die Möglichkeit eine passive Position zu ermitteln, die der Agent während des Spiels einnehmen kann.

void setSimStepOfLastCatch( int newSimStep )
Setzt den simStep, an dem das letzte Catch-Kommando an den Server geschickt wurde

void setSimStepOfLastSay( int newSimStep )
Setzt den simStep, an dem das letzte Say-Kommando an den Server geschickt wurde

void setSimStepOfLastRefereeDecision( int newSimStep )
Setzt den simStep, an dem die letzte Schiedsrichterentscheidung eingetroffen ist

void addCurrentSituation( const Situation& aSituation )
Speichert eine Situation als die (neue) gegenwaertige ab. Die bisherige gegenwaertige Situation ist nach dem Aufruf mit situation( -1 ) erreichbar.
Parameters:
aSituation - Die zu speichernde Situation

void removeCurrentSituation()
Entfernt die aktuelle Situation aus dem Weltmodell. Dies kann sinnvoll sein, wenn man aus Versehen zu weit in die Zukunft simuliert hat und den aktuellen Stand wieder herstellen möchte.

void synchronizeSituations( int simStep )
Die alten Situationen werden für die Integration von neuen Sensorinformationen aufbereitet. Wenn die aktuelle Situation des Weltmodells zeitlich vor dem angegebenen Simulationsschritt liegt, dann werden Situationen bis zu dem Simulationsschritt dazugefügt und simuliert. Wenn die aktuelle Situation dagegen einen höheren Simulationsschritt als den angegebenen hat und die Zeit im SoccerServer laut Spielzustand weiter gelaufen ist, dann werden die Situationen des Weltmodells auf diesen Simulationsschritt zurückgesetzt; wenn die Zeit im SoccerServer nicht weitergelaufen ist, dann werden die Zeitindizes der entsprechenden Situation zurückgesetzt.
Throws:
IncorrectOldSituationException wenn die Differenz des Zeitstempels der aktuellen Situation mit simStep vom Betrag her gröser als historyCount ist, also keine entsprechenden alten Situationen vorliegen.
Parameters:
simStep - Simulationsschritt für die die Situationen aufbereitet werden sollen.

const ModelledPlayer modelOfSelf()
Liefert einen ModelledPlayer, der die Daten über den Spieler selbst enthält. Diese Daten stammen entweder aus den gesehenen Informationen oder, wenn diese Informationen nicht ausreichen, aus den alten Situation.
Returns:
ModelledPlayer Spieler mit Daten über den Spieler selbst

void addSeenObjects( Situation& newSituation )
Fügt alle gesehenen Objekte in die Situation ein. Diese Daten entstammen nur den gesehenen Informationen.
Parameters:
newSituation - Situation in die Daten eingefügt werden sollen.

int indexOfCorrespondingPlayer( ModelledPlayer player, Situation situation )
Sucht zum angegebenen Spieler einen korrespondierenden in der angegebenen Situation. Bei der Suche nach dem korrespondierenden Spieler, werden nur Spieler mit bekannter Nummer betrachtet. Zurückgegeben wird die Position an der sich der korrespondierenden Spieler in der Situation befindet. Gibt es keinen korrespondierenden Spieler wird eine NoCorrespondingPlayerException erzeugt.
Throws:
NoCorrespondingPlayerException falls kein korrespondierender Spieler in der Situation auffindbar ist
Returns:
index des korrespondierenden Spielers in der Situation situation
Parameters:
player - Spieler zu dem ein korrespondierender erfragt wird
situation - Situation in der der korrespondierende Spieler gesucht wird

ModelledBall mergeBalls( const ModelledBall& trustedBall, const ModelledBall& anotherBall, const ModelledPlayer& mySelf )
Fügt Informationen des anderen Balles in den vertrauenswürdigeren Ball ein
Parameters:
trustedBall - vertrauenswürdiger Ball dessen Daten als Grundlage angesehen werden.
anotherBall - anderer Ball, dessen Daten einverleibt werden sollen.
mySelf - der Spieler, der den Ball sehen müßte, wenn er vor ihm liegt.

ModelledPlayer mergePlayers( const ModelledPlayer& trustedPlayer, const ModelledPlayer& anotherPlayer )
Fügt Informationen des anderen Spielers in den vertrauenswürdigeren Spieler ein
Parameters:
trustedPlayer - vertrauenswürdiger Spieler dessen Daten als Grundlage angesehen werden.
anotherPlayer - anderer Spieler, dessen Daten einverleibt werden sollen.
mySelf - der Spieler, der den Spieler sehen müßte, wenn er in seinem Blickfeld ist.

Vector relativePos( const Vector& seenPos, double faceDir )
Berechnet die relative Position des Objekts. Benoetigt werden die gesehene Position des Objektes und der eigene Blickwinkel.
Returns:
die relative Position des Objektes
Parameters:
seenPos - Vektor, der von der eigenen Position zum Objekt zeigt. Er ist also zu interpretieren in einem Koordinatensystem, dessen y-Achse in die Blickrichtung zeigt und in dessen Ursprung die eigene Position liegt.
Der - eigene Blickwinkel

Vector relativeSpeed( const Vector& relativePos, const Vector& seenChangeOfPos )
Berechnet die relative Geschwindigkeit eines Objekts. Benoetigt werden die relative Position des Objektes und desen gesehene Bewegungsaenderung.
Returns:
die relative Geschwindigkeit des Objektes im globalen Koordinatensystem.
Parameters:
relativePos - Vektor, der von der eigenen Position zum Objekt zeigt, aber im globalen Koordinatensystem ist.
seenChangeOfPos - Vektor, der die relative Winkel- und Entfernungsaenderung des Objekts enthaelt

void processAudioInfo( Situation& newSituation, const Array<Message>& messages )
Verarbeitet Zurufe. Zurufe kommen entweder von einem selbst, von einem anderen Spieler des eigenen Teams, vom anderen Team oder vom Schiedsrichter.
Parameters:
newSituation - Fuehren Nachrichten von einem Teammitglied zu neuen Informationen ueber die aktuelle Situation, so werden sie in newSituation eingefuegt.
Array - mit den gehoerten Nachrichten

void processRefereeMessage( const Message& message )
Verarbeitet Schiedsrichterentscheidungen. Dabei werden Spielzustand und Initiative neu gesetzt.
Parameters:
message - Die Nachricht des Schiedsrichters

void processOurTeamMessage( Situation& newSituation, const Message& message )
Verarbeitet Zurufe eines Mitspielers.
Parameters:
message - Die Nachricht des Mitspielers

int positionIndexFromState( int aGameState, int anInitiative )
Liefert einen internen Index, an dem die Position des Agenten fuer den angegebenen Spielzustand/Initiative steht. Mit diesem Index kann auf Elemente von theBasePositions und theInitialPositions zgegriffen werden.
Returns:
Zahl zwischen 0 und 10

void improveConsistency()
Führt Konsistenzchecks durch und paßt die aktuelle Situation und das restlichen Weltmodell an. Es werden Aktionen nachsimuliert, die schon abgesendet wurden, aber noch nicht im SoccerServer simuliert wurden. Die Stamina-Werte werden nochmal aus den BodyInfos ausgelesen, weil das Nachsimulieren diese fehlerhaft verändert. Im Tournamentmode wird der GameState ggf. auf PLAY_ON gestellt.

class NoCorrespondingPlayerException: public Exception
Interne Exception, die aufgerufen wird, wenn keine korrespondierenden Objekte gefunden werden können


This class has no child classes.

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++