1 / 10

ebene

agent. robot. team. feldspieler. torwart. #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. ebene. robot_ebene. team_ebene. robot_ebene0.

brooklyn
Download Presentation

ebene

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. agent robot team feldspieler torwart #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 ebene robot_ebene team_ebene robot_ebene0 robot_ebene1 robot_ebene2 team_ebene0 feldspieler_ebene0 torwart_ebene0 feldspieler_ebene1 torwart_ebene1 feldspieler_ebene2

  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 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: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 feldspieler:public robot { public: void init(char *r_name, class team *my_team ); }; class torwart:public robot { public: void init(char *r_name, class team *my_team ); }; 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(); };

  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; }; class robot_ebene:public ebene { public: class robot *me; robot_ebene (class robot *myself, class ebene *he):ebene(he) {me = myself;} }; 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(){;} }; robot_ebene0, robot_ebene1, robot_ebene2 implementieren eval(), init(), aggregiereDaten(), aktualisiereDaten(); 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(); }; feldspieler_ebene0, feldspieler _ebene1, feldspieler _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<std::string> 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. Abwehr Angriff IchMachAnstoss Homing Torschuss Abwehren Spezial_Torschuss gohome Anlauf blocken hau_aus_der_Ecke hau_rein hau_weg vollstrecken ausweichen_ball ausweichen fahrengohome lenkenanlauf lenken fahrenvollstrecken fahrenausweichen lenkengohome fahrenanlauf fahren fahrenvorwaerts lenkenvorwaerts lenken_ausweichen_ball lenkenausweichen

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

More Related