Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ebene robot_ebene1 team_ebenerobot_ebene team_ebene0robot_ebene0robot_ebene2 feldspieler_ebene1feldspieler_ebene0feldspieler_ebene2torwart_ebene1torwart_ebene0.

Ähnliche Präsentationen


Präsentation zum Thema: "Ebene robot_ebene1 team_ebenerobot_ebene team_ebene0robot_ebene0robot_ebene2 feldspieler_ebene1feldspieler_ebene0feldspieler_ebene2torwart_ebene1torwart_ebene0."—  Präsentation transkript:

1 ebene robot_ebene1 team_ebenerobot_ebene team_ebene0robot_ebene0robot_ebene2 feldspieler_ebene1feldspieler_ebene0feldspieler_ebene2torwart_ebene1torwart_ebene0 agent torwart teamrobot #define t3_101_I 0 #define t1_000_I 1 #define t3_102_I 2 #define t2_010_I 3 #define t2_101_I 4 #define t4_202_I 5 #define t1_010_I 6 #define t2_200_I 7 #define t5_202_I 8 #define t4_201_I 9 feldspieler

2 class agent { public: agent(); virtual ~agent(){;} virtual void addverhalten(class verhalten *v, int level) = NULL; //( class verhalten *v, int level ); virtual void action() = NULL; class ebene *ebenen[MAX_EBENEN]; char *name; int anz_ebenen; }; class torwart:public robot { public: void init(char *r_name, class team *my_team ); }; class team:public agent { public: team(); team( int teamnr, float seite); virtual ~team(); virtual void init(char *t_name); void addverhalten( class verhalten *v, int level ) {;} void action(); agent *getAgent(const char *name); //Eigene Ebenen: class ebene *ebenen[MAX_EBENEN]; //Oberste Ebene der Robbis class ebene *robbi_ebenen[MAX_AGENTS]; //Robbis: class robot *robbis[ MAX_AGENTS ]; //Anzahl der Spieler: int anz_mitglieder; int spielmodus; //Teamdaten: class robovektor unser_tor; class robovektor gegner_tor; // Gegner: class enemy *enemies[ MAX_AGENTS ]; int anz_enemies; int teamnummer; // 0 oder 1 int torwart_id; int hau_weg_counter; unsigned int timer; // Methoden zum Setzen der Daten void writeRobbiData(int internalID,int externalID, float posX, float posY, float dx, float dy); void SwitchSeite() // links-1, rechts 1 void writeEnemyData(int internalID, float posX, float posY, float dx=1.f, float dy=0.f); void setEnemyAnz(int anz){anz_enemies = anz;} void writeRobbiHindernis(int internalID, float hx, float hy); void writeFieldData( float ux, float uy, float gx, float gy }; class robot:public agent { public: robot(); virtual void init(char *r_name, class team *my_team ); void addverhalten( class verhalten *v, int level ); void action(); *ebenen[MAX_EBENEN]; class robovektor position; class robovektor direction; class robovektor old_orientierung; class robovektor orientierung; class robovektor hindernis; class robovektor homeposition; class robovektor unser_anstoss_hp; class robovektor gegner_anstoss_hp; class robovektor gegner_elfer_hp; float maxspeed, maxdiff; class team *my_team; // für Kommunikation comm_data robot_command; }; class team_ebene0:public team_ebene { public: team_ebene0(class team *myself):team_ebene(myself) { resolution = 1;} team_ebene0(class team *myself,/* int id,*/ class ebene *he):team_ebene(myself,/* id,*/ he) {resolution = 1;} int counter; void aktualisiereDaten(); void eval(); void init(); }; class feldspieler:public robot { public: void init(char *r_name, class team *my_team ); };

3 class ebene { //Methoden: public:ebene(); ebene( class ebene *he ); void addverhalten( class verhalten *neuesverhalten, int index, const char* name); void add_sensor(int index, const char* name, float norm=1.0f); void add_aktor(int index, const char* name); virtual void aggregiereDaten() { ;} // before eval of higher_E virtual void aktualisiereDaten() { ;} // after eval of higher_E void addausgabe( int n, float *p, int t, const char *s ); void delausgabe( float *p); void ausgabe(); virtual void eval(); virtual void init(); //Daten: int roboid; class ebene *higher_E; class verhalten *alleverhalten[MAX_VERHALTEN]; int anz_verhalten; float sensoren[ MAX_SENSOREN ]; int anz_sensoren; char *sensor_names[ MAX_SENSOREN ]; float sensor_norm[ MAX_SENSOREN ]; float aktoren[ MAX_AKTOREN ][ 3 ]; // 2te Dimension für die deltas, 3te für Normierung int anz_aktoren; char *aktor_names[ MAX_AKTOREN ]; int timer; int subsampling_fak; //Subsampling der hoeheren Ebene int resolution; float *pufferpointer[5]; // Pointer auf den Ringpuffer des BehaviorViews, in den Daten geshrieben werden sollen int typ[5]; // Gibt an, ob Aktor Sensor oder Vaerhaltensaktivierungsfaktor in den Ringpuffer geschrieben werden sollen int index[5]; // Gibt den Index des Wertes an, der in den Ringpuffer geschrieben werden soll int number[5]; //Gibt die Nummer des Ringpuffers an, in den geschrieben werden soll int anz_ausgaben; // Gibt an, wieviele Werte aus der Ebene ausgegeben werden; }; feldspieler_ebene0, feldspieler _ebene1, feldspieler _ebene2 implementieren eval(), init(), aggregiereDaten(), aktualisiereDaten(); class team_ebene:public ebene { public: class team *me; team_ebene(class team *myself):ebene() { me = myself; } team_ebene(class team *myself, class ebene *he):ebene( he) { me = myself; } void init(){;} }; class robot_ebene:public ebene { public: class robot *me; robot_ebene (class robot *myself, class ebene *he):ebene(he) {me = myself;} }; class team_ebene0:public team_ebene { public: team_ebene0(class team *myself):team_ebene(myself) { resolution = 1;} team_ebene0(class team *myself,/* int id,*/ class ebene *he):team_ebene(myself,/* id,*/ he) {resolution = 1;} int counter; void aktualisiereDaten(); void eval(); void init(); }; robot_ebene0, robot_ebene1, robot_ebene2 implementieren eval(), init(), aggregiereDaten(), aktualisiereDaten();

4 class verhalten { //Methoden: public: verhalten() { e = 0; aktivierungsfaktor = 0.; name = NULL;} verhalten( class ebene *b ) { e = b; aktivierungsfaktor = 0.; name = NULL; } virtual void aktivierungsfunktion() = 0; virtual void zielfunktion() { ;} void eval(); //Daten: class ebene *e; //Pointer auf die eigene Ebene float aktivierungsfaktor; CString *name; }; Von verhalten erben und implementieren aktivierungsfunktion und zielfunktion: ///////////////// Feldspieler ///////////////////////// #define e0_v_fahren 0 #define e0_v_lenken 1 #define e0_v_fahrenvorwaerts 2 #define e0_v_lenkenvorwaerts 3 #define e0_v_fahrenausweichen 4 #define e0_v_lenkenausweichen 5 #define e0_v_fahrenvollstrecken 6 #define e0_v_lenken_ausweichen_ball 7 #define e0_v_fahren_haurein 8 #define e0_v_lenkengohome 9 #define e0_v_fahrengohome 10 #define e0_v_fahrenanlauf 11 #define e0_v_lenkenanlauf 12 ///////////////// Torwart ///////////////////////////// #define tw_e0_v_halten 0 #define tw_e0_v_fahrentorwartstellen 1 #define tw_e0_v_fahrentorwarthalten 2 #define tw_e0_v_stellen 3 /////////////////////////Torwart/////////////////////////// #define tw_e1_v_schiessen 0 ////////////////////// Feldspieler //////////////////////////// #define e1_v_ausweichen 0 #define e1_v_zumOrtmitStop 1 #define e1_v_Anlauf 2 #define e1_v_vollstrecken 3 #define e1_v_ausweichen_ball 4 #define e1_v_blocken 5 #define e1_v_laufenmitBall 6 #define e1_v_hau_rein 7 #define e1_v_hau_weg 8 #define e1_v_gohome 9 #define e1_v_hau_aus_der_Ecke 10 #define e1_v_stay 11 #define e1_v_ausrichten 12 /////////////////// Feldspieler ////////////////// #define e2_v_Torschuss 0 #define e2_v_dribbeln 1 #define e2_v_Abwehren 2 #define e2_v_Stehen 3 #define e2_v_Homing 4 #define e2_v_Spezial_Torschuss 5 #define e2_v_IchMachAnstoss 6 /////////////////// Team ////////////////// #define t_e0_v_angriff 0 #define t_e0_v_abwehr 1

5 class Spielfeld { public: Spielfeld(); void ballprediction(); void glaetten(); class robovektor CenterPoint; class robovektor oldballposition, newballposition; class robovektor glatte_ballposition; class robovektor balldirection; class robovektor glatte_balldirection; class robovektor very_glatte_balldirection; class robovektor ballbewegung; std::vector standardSituationen; int spielstatus; int fuer_team; // gibt an für welches Team Standardsituation bool daten_sind_neu; DWORD bild_time; float streckfaktor; robovektor predicted_positions[MAX_PREDICTION_POSITIONS]; }; class steuerung { public: steuerung(); int timer; DWORD last_action_ticks; float *pufferpointer; // für hartbeat bool neues_team(std::string name, int teamNr); void add_pufferpointer(float *ringpuffer); class team *team[2]; int anz_teams; teamTemplates team_templates; };

6 //===================================================================================== //======================================== E B E N E 0 =============================== //===================================================================================== /////////////////////////////////////////// Sensoren ////////////////// Robot ///////////////////////// #define r_e0_s_ballwinkel 0 ////////////////// Feldspieler ///////////////////////// #define e0_s_zielwinkel 1 //[ -pi; pi ] gesehen in Orientierungsrichtung #define e0_s_zielentfernung 2 // #define e0_s_richtung 3 // 1 = vorwaerts, -1 = rueckwaerts #define e0_s_speed 4 // #define e0_s_drehwinkel 5 //Winkel, um den sich der Robbi im letzten Schritt gedreht hat #define e0_s_ausweichen_winkel 6 #define e0_s_ausrichtenwinkel 7 ///////////////// Torwart /////////////////////////////// #define tw_e0_s_ballposition_X 1 #define tw_e0_s_ballposition_Y 2 #define tw_e0_s_balldirection_X 3 #define tw_e0_s_balldirection_Y 4 #define tw_e0_s_robbiposition_X 5 #define tw_e0_s_robbiposition_Y 6 #define tw_e0_s_torwart_ziel_entfernung 7 // nur die y-Komponente #define tw_e0_s_last_ballposition_X 8 #define tw_e0_s_last_ballposition_Y 9 #define tw_e0_s_torwart_zielwinkel 10 #define tw_e0_s_parallel_winkel 11//Winkel zwischen Orientierung und y-Achse //////////////////////////////////////////// Verhalten ////////////////// Feldspieler ///////////////////////// #define e0_v_fahren 0 #define e0_v_lenken 1 #define e0_v_fahrenvorwaerts 2 #define e0_v_lenkenvorwaerts 3 #define e0_v_fahrenausweichen 4 #define e0_v_lenkenausweichen 5 #define e0_v_fahrenvollstrecken 6 #define e0_v_lenken_ausweichen_ball 7 #define e0_v_fahren_haurein 8 #define e0_v_lenkengohome 9 #define e0_v_fahrengohome 10 #define e0_v_fahrenanlauf 11 #define e0_v_lenkenanlauf 12 ///////////////// Torwart ///////////////////////////// #define tw_e0_v_halten 0 #define tw_e0_v_fahrentorwartstellen 1 #define tw_e0_v_fahrentorwarthalten 2 #define tw_e0_v_stellen 3 /////////////////////////////////////////////// Aktoren ////////////////////// Robot ////////////////////////// #define r_e0_a_lenken 0 #define r_e0_a_fahren 1 //////////////////////// Feldspieler ////////////////////// #define e0_a_ausweichentscheidung 2 #define e0_a_ballausweichentscheidung 3 //////////////////// Torwart /////////////////////////// #define tw_e0_a_zielposition_X 2 #define tw_e0_a_zielposition_Y 3

7 //===================================================================================== //======================================== E B E N E 1 =============================== //===================================================================================== ///////////////////////////////////////////////// Sensoren ////////////////////// Robot ////////////////////////// #define r_e1_s_unser_tor_X 0 #define r_e1_s_unser_tor_Y 1 ////////////////// Feldspieler ///////////////////////// #define e1_s_ballposition_X 2 // wird von der unteren Ebene upgedated (smoothed average) #define e1_s_ballposition_Y 3 #define e1_s_robbiposition_X 4 #define e1_s_robbiposition_Y 5 #define e1_s_hindernis_X 6 #define e1_s_hindernis_Y 7 #define e1_s_hindernis_entfernung 8 #define e1_s_hindernis_winkel 9 #define e1_s_richtung 10 //Robbi vorwaerts oder rueckwaerts ( 1 oder -1 ) #define e1_s_ballentfernung 11 //Entfernug vom Robbi zum Ball #define e1_s_schusszielwinkel 12 //Von der Orientierung des Robbis unabhängiger Winkel // zwischen (Schussziel-Ball) und (Schussziel-Robbi) #define e1_s_schusszielentfernung 13 // Entfernung zwischen Robbi und Schussziel #define e1_s_entfernung_ball_ziel 14 //Entfernung zwischen Ball und Schussziel #define e1_s_auftreffpunkt_X 15 // Wo der Robbi aauf die gegnerische Torauslinie trifft, wenn er immer gerdaeaus fährt #define e1_s_auftreffpunkt_Y 16 #define e1_s_hindernis_ziel_winkel 17 //Von der Orientierung des Robbis unabhängiger Winkel // zwischen (Robbi-Hindernis) und (Robbi-Ball) #define e1_s_in_vollstreckenposition 18 //Sensor, der aktiv wird, wenn robby in Vollstrechenposition // langsame deaktivierung #define e1_s_balldirection_X 19 // wird von der unteren Ebene upgedated (smoothed average) #define e1_s_balldirection_Y 20 #define e1_s_zielwinkel 21 #define e1_s_in_haureinposition 22 #define e1_s_last_ballposition_X 23 // wird von der eigenen Ebene gerettet #define e1_s_last_ballposition_Y 24 #define e1_s_predicted_ballposition_X 25 // wird von der eigenen Ebene berechnet #define e1_s_predicted_ballposition_Y 26 #define e1_s_ballwinkel 27 #define e1_s_ball_ziel_winkel 28 //Von der Orientierung des Robbis unabhängiger Winkel // zwischen (Robbi-Ball) und (Robbi-Ziel) #define e1_s_robbispeed 29 //geschwindigkeit des roboters #define e1_s_dangerous_gegner_X 30 #define e1_s_dangerous_gegner_Y 31 #define e1_s_schuss_ok 32 #define e1_s_pred_ball_Anlauf_X 33 #define e1_s_pred_ball_Anlauf_Y 34 #define e1_s_robbidirection_X 35 #define e1_s_robbidirection_Y 36 #define e1_s_robbiorientierung_X 37 #define e1_s_robbiorientierung_Y 38 #define e1_s_pred_ball_haurein_X 39 #define e1_s_pred_ball_haurein_Y 40 #define e1_s_pred_ball_ausweichen_X 41 #define e1_s_pred_ball_ausweichen_Y 42 #define e1_s_drehwinkel 43 #define e1_s_bernhard 44 #define e1_s_fahren 45 #define e1_s_lenken 46 #define e1_s_zielentfernung 47 #define e1_s_pred_ball_Blocken_X 48 #define e1_s_pred_ball_Blocken_Y 49 #define e1_s_geradeaus 50 /////////////////Torwart///////////////////////////// #define tw_e1_s_balldirection_X 2 #define tw_e1_s_balldirection_Y 3 #define tw_e1_s_schuss_an 4 /////////////////////////Torwart/////////////////////////// #define tw_e1_v_schiessen 0 ////////////////////// Feldspieler //////////////////////////// #define e1_v_ausweichen 0 #define e1_v_zumOrtmitStop 1 #define e1_v_Anlauf 2 #define e1_v_vollstrecken 3 #define e1_v_ausweichen_ball 4 #define e1_v_blocken 5 #define e1_v_laufenmitBall 6 #define e1_v_hau_rein 7 #define e1_v_hau_weg 8 #define e1_v_gohome 9 #define e1_v_hau_aus_der_Ecke 10 #define e1_v_stay 11 #define e1_v_ausrichten 12 ////////////////////////////////////////////////// Aktoren ///////////////// Robot //////////////////////// #define r_e1_a_schuss 0 /////////////////// Feldspieler ////////////////// #define e1_a_zielposition_X 1 #define e1_a_zielposition_Y 2 #define e1_a_ausweichen_ziel_X 3 #define e1_a_ausweichen_ziel_Y 4 #define e1_a_blockposition_X 5 #define e1_a_blockposition_Y 6

8 //===================================================================================== //======================================== E B E N E 2 =============================== //===================================================================================== ///////////////////////////////////////////////// Sensoren ///////////////// Robot //////////////////////// /////////////////// Feldspieler ////////////////// #define e2_s_ballposition_X 0 #define e2_s_ballposition_Y 1 #define e2_s_robbiposition_X 2 #define e2_s_robbiposition_Y 3 #define e2_s_gegner_tor_X 4 #define e2_s_gegner_tor_Y 5 #define e2_s_unser_tor_X 6 #define e2_s_unser_tor_Y 7 #define e2_s_sollich 8 #define e2_s_glatter_bernhard 9 #define e2_s_dynamik_home_X 10 #define e2_s_dynamik_home_Y 11 ////////////////////////////////////////////////// Verhalten ///////////////// Robot //////////////////////// /////////////////// Feldspieler ////////////////// #define e2_v_Torschuss 0 #define e2_v_dribbeln 1 #define e2_v_Abwehren 2 #define e2_v_Stehen 3 #define e2_v_Homing 4 #define e2_v_Spezial_Torschuss 5 #define e2_v_IchMachAnstoss 6 ////////////////////////////////////////////////// Aktoren ///////////////// Robot //////////////////////// /////////////////// Feldspieler ////////////////// #define e2_a_schussziel_X 0 #define e2_a_schussziel_Y 1 #define e2_a_homeziel_X 2 #define e2_a_homeziel_Y 3 //===================================================================================== //======================================== T E A M E B E N E 0 =============================== //===================================================================================== ///////////////////////////////////////////////// Sensoren //////////////////////Team////////////////////// #define t_e0_s_ballposition_X 0 #define t_e0_s_ballposition_Y 1 #define t_e0_s_predicted_ballposition_X 2 #define t_e0_s_predicted_ballposition_Y 3 #define t_e0_s_angriff 4 #define t_e0_s_gegner_torwart_X 5 #define t_e0_s_gegner_torwart_Y 6 ///////////////////////////////////////////////// Verhalten #define t_e0_v_angriff 0 #define t_e0_v_abwehr 1

9 fahrenfahrenvorwaerts lenkenfahrenausweichen lenkenausweichen fahrenvollstrecken lenken_ausweichen_ball fahrengohome lenkenvorwaerts lenkengohomefahrenanlauf lenkenanlauf hau_aus_der_Eckegohomehau_weghau_reinblockenausweichen_ballvollstreckenAnlaufausweichen HomingIchMachAnstossSpezial_TorschussAbwehrenTorschuss AngriffAbwehr

10 hau_aus_der_Ecke gohome hau_weg hau_rein blocken ausweichen_ball vollstrecken Anlauf ausweichen Homing IchMachAnstoss Spezial_Torschuss Abwehren Torschuss Cross-over hemmingsimple hemming


Herunterladen ppt "Ebene robot_ebene1 team_ebenerobot_ebene team_ebene0robot_ebene0robot_ebene2 feldspieler_ebene1feldspieler_ebene0feldspieler_ebene2torwart_ebene1torwart_ebene0."

Ähnliche Präsentationen


Google-Anzeigen