Die Fähigkeiten des Agenten
Die Fähigkeiten des Agenten. Options verwendet Skills, um Plaene zu erzeugen. Ein Plan ist dabei eine Folge von konkreten Aktionen, die an den SoccerServer geschickt werden koennen.Im Skills-Objekt gibt es eine Ausgangssituation, die anfänglich auf die aktuelle Situation des Weltmodells gesetzt ist. Jeder Aufruf einer Fähigkeit führt zu Änderungen an dieser Situation, so daß der beim Aufruf der nächsten Fähigkeit die neue, modifizierte Situation als Ausgangssituation genomment werden kann. Vor der Berechnung jedes Plans muß die Ausgangssituation mit resetSituation() auf die Gegenwart zurückgesetzt werden. Eine Referenz auf die Situation ist intern über die private Methode situation() verfügbar.
Quelltext
[Header | [Implementierung]
CVS Informationen zum Interface
************************************************** * * Aktueller Stand * * $RCSfile: Skills.h,v $ * $Revision: 1.30 $ * $Date: 1998/08/14 13:21:17 $ * $Author: myritz $ * **************************************************
Diese Routine muß unbedingt jedesmal aufgerufen werden, bevor ein
Plan erstellt wird, der von der Gegenwart ausgeht. Jeder Aufruf
einer Fähigkeit ändert dann die Ausgangssituation.
const int STANDARD_BEHAVIOR
const int AVOID_OBSTACLES
const int RUN_BACKWARDS
Skills()
Plan beamToPosition( const Vector& position )
Plan gotoRegion( const Vector& centerOfTarget, double targetRadius = TRIANGULATION_ACCURACY, const double staminaLimit = 0, const int specialBehavior = AVOID_OBSTACLES, int desiredMaxLengthOfPlan = UNDEF_INT )
targetRadius - Der Radius der Zielregion.
staminaLimit - die untere Staminagrenze (default 0)
specialBehavior. - Hier kann eine Summe von Verhaltenskonstanten
angegeben werden. Möglich sind bisher: AVOID_OBSTACLES; wenn dieser Wert
angegeben ist, werden Hindernisse (also andere Spieler) umgangen (default).
RUN_BACKWARDS; ist dieser Wert angegeben, rennt der Spieler rückwärts
(was wesentlich langsamer ist). STANDARD_BEHAVIOR: Halt nix besondres.
desiredMaxLengthOfPlan - gewünschte Länge des Planes.
(default UNDEF_INT was dann maxLengthOfPlan ergibt). Plan kickBall( const double power, const double direction )
Plan gainBallControl()
Plan dribble( const double staminaLimit, const double direction, const int side )
direction - Die Richtung, in die gedribbelt werden soll.
side - Die Seite des Spielers (in Blickrichtung), auf der der Ball
gehalten werden soll. Mögliche Werte sind LEFT_SIDE_ID, RIGHT_SIDE_ID,
UNDEF_SIDE_ID. Plan turnTo( double finalDirection )
Plan turnBy( double turnAngle )
Plan setViewWidth( const desiredViewWidth )
void initEmptySectorSearch( const Vector& aFinalTarget, const double aSectorAngle, const double aSectorLength, const double aMaxDeviation, const double aStepAngle )
aSectorAngle - die gewünschte Breite des freien Sektors im
Bogenmaß.
aSectorLength - die gewünschte Laenge des Sektors in Metern.
aMaxDeviation - die maximal akzeptable Abweichung der Sektorrichtung
von der Richtung zum Ziel.
aStepAngle - die gewünschte Genauigkeit, mit der gesucht werden soll,
im Bogenmaß. Ist der Wert klein, wird evtl. ein Sektor gefunden, der mehr
zum Ziel hinzeigt als bei größeren Werten. Eine höhere Genauigkeit
(also kleinere stepAngle-Werte) führt allerdings auch zu einer längeren
Rechenzeit. Vector findEmptySector( const Situation& aSituation )
Plan sayWorldModel()
Plan doNothing(int steps = UNDEF_INT )
Action simpleChangeView( const int width, const int quality )
Action simpleMoveTo( const Vector& position )
Action simpleTurn( const double angle )
Action simpleDash( const double power )
Action simpleKick( const double power, const double angle )
Action simpleSay( const String& message )
Action simpleCatch( const double angle )
Action simpleSenseBody( )
Action simpleEmptyAction( )
void resetSituation( Situation scenario = globalWorldModel->situation() )
Situation& situation()
const ModelledPlayer& player()
const ModelledBall& ball()
Vector getKickVector(const Vector& desiredKick, const ModelledBall& ball, const ModelledPlayer& player)
Vector getPassVector(const Vector& desiredKick, const ModelledBall& ball, const ModelledPlayer& player)
bool checkBodyContact(const Vector& desiredKick, const ModelledBall& cBall, const ModelledPlayer& cPlayer)
Vector bestKickVector(const Vector& desiredKick, const Vector& calculatedKick, const ModelledBall& cBall, const ModelledPlayer& cPlayer)
Vector calcKickToRelPos( const Vector& aRelativeVector, const ModelledBall& aBall, const ModelledPlayer& aPlayer, int steps = 1)
bool checkBallInDribbleKickRange( const Vector& desiredKick, const ModelledBall& cBall, const ModelledPlayer& cPlayer, int side)
bool checkBallInKickRange( const Vector& desiredKick, const ModelledBall& cBall, const ModelledPlayer& cPlayer )
Vector desiredBallPos( int apos, const int aside )
Vector Skills::getKickToRadius( const Vector& desiredKick, const ModelledBall& aBall, const ModelledPlayer& aPlayer )
Vector makeRelativeKick( const Vector& desiredKick, const ModelledBall& ball, const ModelledPlayer& player )
double minKickRadius
double maxKickRadius
double optimalKickRadius
double maxSpeedOfPlayer
double maxSpeedOfBall
int maxLengthOfPlan
double kickPowerRate
double outerKickCircleTolerance
double innerKickCircleTolerance
double intermediateKickTolerance
Vector theFinalTarget
double theSectorAngle
double theSectorLength
double theStepAngle
double theMaxDeviation
const Vector& finalTarget()
double sectorAngle()
double sectorLength()
double stepAngle()
double maxDeviation()
Situation theSituation
Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B
generated by doc++