From: Klaus D. <kla...@hs...> - 2012-12-03 21:14:26
|
Hello all, below you find the current state of the intended changes for 2013 competition for your information. Please feel free to comment on it especially on the open points mentioned. Also as you know, our league has always been a community effort. We have complete control over the simulator and can use it for free which is a great thing. It is possible, because many people have contributed to it as volunteers. Saying this I encourage you to also contribute to the further development of the 3D simulation server and infrastructure. Hedayat will coordinate the development in the maintenance committee. Please support him with your work! Greetings for the TC Klaus Specification of Changes 3D Simulation League for 2013 Robust Network Model Instead of each player connecting to the server directly, they connect to a proxy programm running on the client machine. The proxy does the following: * receive connections from agents (as if it was the server) * connect to the server running in sync mode for each agent (as if it was the agent) * collect the perceptions sent by the server until all are received. Then send them to the locally running agents in a random order * collect the actions of each connected agent and assign a timestamp to it relative to the time the agent got its last perception. If it is less than 20 ms it goes to the bucket of messages to send for the next cycle. If it is longer than 20 ms it goes to the bucket of messages to send for the second next cycle. The behavior should be the same as it is currently handled by the server. * The actions are sent by proxy in the order received This should have the effect that agents still only have 20 ms think time for a cycle, but delays of the network or the server do not impact game play. Games are running possibly slower than real time in case the server hardware or the network do no allow faster game play. Some remarks: * it should be avoided or alarmed if an agent directly connects to the server. (Is that possible in the first place?) * The load of the client machines is (slightly?) increased. On a quad core CPU this means that we have 12 processes running, 11 players and the proxy. So 3 processes share one core giving effectively only 6.7ms for each agent to think (assuming equal load). Provide Current Score The idea is that teams should be informed of the competition structure and tie breakers, and also of previous resuits. This enables the team to know the importance of winning against drawing or if the number of scored goals is important or not for the group result. An example of its use is provided in the appendix. The tournament structure is fixed and may be coded by hand, we just need a parser in order to verify its correctness. The results information should be automatically generated by the server. This may also be used in other RoboCup soccer leagues. Heterogeneous Players To encourage teams to develop adaptable skills for robots, we want to provide the availability of heterogeneous players which can be optionally used by teams instead of the standard Nao robot model. The number of heterogeneous players a team can use should be restricted. Considering the current architecture of the simulator, the players are selected when the "scene" command is sent to the simulator. Instead of the default scene (rsg/agent/nao/nao.rsg), teams can use a new model (e.g. rsg/agent/nao/hetero_nao.rsg) with a type number. For example: (scene rsg/agent/nao/hetero_nao.rsg 2) which selects nao type number 2. After receiving the init command, the simulator can check if the team is allowed to use this player. The specification of heterogeneous players should be determined randomly a few days before the competitions (Or... maybe it should be generated in the first day of the competitions or even generated at the start of each game like 2D?!). It is still not determined that which parameters should be changed for heterogeneous players and how the random numbers should be generated (the range of values and their distribution). The implementation of heterogeneous Nao rsg files is almost ready but not committed yet. It is implemented by using indexed variables for the selected parameters. The scene effector currently receives only one parameter, but adding support for extra parameters is easy. It is also relatively easy to check if a team is allowed to use the selected player or not. What should be determined: 1. Which parameters of Nao should be modified and how? 2. When should we generate the specification of heterogeneous players? And how this should be communicated to the teams (specially if it is generated just before each game)? 3. What are the restrictions on the use of heterogeneous players? How many of them can be used by each team? Can a team use more than one player of a single heterogeneous player type? New Foul Model The specification is somewhat difficult, so here we have some cases and how we would judge them. In these examples, the speed vector of a player means the 2D(x,y) speed vector of the torso, speed means the length of the speed vector, position is the 2D torso position. Situations * si: speed player i * ai: angle of speed vector player i with respect to ball position * di: distance of player i to ball * m: mutual angle of speed vector with 0 facing same direction, 180 opposite direction * Generally no foul of a player if ball is in a rectangle [0, -y, x, y] (relative to torso, x pointing in to forward direction) with x somewhere around 0.2 and y 0.1. This is a fight for the ball situation. So if both players in a collision fullfil this, no foul, if one player does, check other for foul conditions. * Generally no foul for a player if si is zero (within some delta, say 0.2 m/s). Not moving players are not fouling. * Collision, m is 0 (within some delta, say +-70): foul of player that is behind (with respect to the speed vectors). Running into another player from behind. Who is behind can be determined by adding the two speed vectors to both player's positions and take the position in between the two results. The distance to that point decides. The farer player fouls. * Collision, m is 180 (wihin some delta, say +-110): foul of player that has smaller ai. Illegal Interception. /Zeichnung 1: Illustration of item 3/ What happens after a foul * fouling player is moved outside the field as currently is done * fouled team gets a free kick? May be not, but if so the rules should only call 'hard' fouls to avoid that a game consits of a sequence of free kicks. I would prefer no free kick to keep the game running. * if we want to have fouls also called far from the ball, I really suggest to just beam away fouling player and let the game continue to run. General * Call fouls for players getting up? I would say yes * do we have to specify 3 player collisions or are they treated as series of 2 player collisions? * Would we have the force of collision available to avoid calling fouls if only slightly touched? * Do we check fouls farer from ball than x meters? Appendix Provide Score Format The language should be able to express the competition format and the competition results as the competition progresses. Competition Format: Round1 Groups of 4 teams First and second of each group go to Semi-Finals Round2 Elimination (Tournament RoboCup (Round 1 (NTeams 8) (EveryGroup (ClassificationRules (Factor 1 (SumOfPoints))(Factor 2 (GoalDiff)) (Factor 3 (GoalsScored)) ) (EveryGame (Consequence (Win Points 3) (Lose Points 0) (Tie Points 1)) ) ) ) (Group A (NTeams 4) (Teams 1 2 3 4) (Game 1 (Teams 1 2) (field 2)(referee 1 3 4)(schedule 25/08 13:15)) (Game 2 (Teams 1 3) (field 3)(referee 1 3 4)(schedule 25/08 14:15)) (Game 3 (Teams 1 4))(Game 4 (Teams 2 3)) (Game 5 (Teams 2 4))(Game 6 (Teams 3 4)) (Consequence (Place 1 (Round 2 (Game SemiFinalA))) (Place 2 (Round 2 (Game SemiFinalB))) ) ) (Group B (NTeams 4) (Teams 1 2 3 4) (Game 1 (Teams 1 2))(Game 2 (Teams 1 3)) (Game 3 (Teams 1 4))(Game 4 (Teams 2 3)) (Game 5 (Teams 2 4))(Game 6 (Teams 3 4)) (Consequence (Place 1 (Round 2 (Game SemiFinalB))) (Place 2 (Round 2 (Game SemiFinalA))) ) ) ) (Round 2 (NTeams 4) (EveryGame (Tiebrakers (TB 1 (Extension 3000)) (TB 2 (GoldenGoal 3000)) (TB 3 (ThirdTB CoinToss)) ) ) (Game SemiFinalA (Consequence (Win Game Final) (Lose Game ThirdFourth) ) (Game SemiFinalB (Consequence (Win Game Final) (Lose Game ThirdFourth) ) ) (Game Final (Consequence (Win Place 1)(Lose Place 2)) (field 3)(referee 1 3 4)(schedule 25/08 14:15) ) (Game ThirdFourth (Consequence (Win Place 3)(Lose Place 4)) ) ) (ClassificationRules (Place 1 (Round 2 (Place 1))) (Place 2 (Round 2 (Place 2))) (Place 3 (Round 2 (Place 3))) (Place 4 (Round 2 (Place 4))) ) ) Competition Results: (Tournament RoboCup (Round 1 (Group A (TeamName 1 ABC)(TeamName 2 DEF) (TeamName 3 GHI)(TeamName 4 JLK) (Game 1 (Result 0 2))(Game 2 (Result 1 3) ) (Game 3 (Result 1 4))(Game 4 (Result 2 0) ) (Game 5 (Result 2 2))(Game 6 (Result 0 4) ) ) (Group B (TeamName 1 ASD)(TeamName 2 FGH) (TeamName 3 QWE)(TeamName 4 XCV) (Game 1 (Result 1 2))(Game 2 (Result 1 3) ) (Game 3 (Result 1 4))(Game 4 (Result 2 3) ) (Game 5 (Result 2 4))(Game 6 (Result 3 4) ) ) ) (Round 2 (Game SemiFinalA (Teams ABC DEF) (Result 2 5)) (Game SemiFinalB (Teams GHI JLK) (Result 1 1) (CoinTossFor GHI)) (Game Final (Teams DEF GHI) (Result 1 0)) (Game ThirdFourth (Teams ABC JLK) (Result 1 2)) ) (Classification (Place 1 (Team DEF)) (Place 2 (Team GHI)) (Place 3 (Team JLK)) (Place 4 (Team ABC)) ) ) Obviously the Tournament Format and Tournament Results messages may be merged |