robocup-humanoid-tc / gamecontroller Goto Github PK
View Code? Open in Web Editor NEWThis project forked from robocup-spl/gamecontroller
This is the official GameController used for several RoboCup competitions
Home Page: www.b-human.de
This project forked from robocup-spl/gamecontroller
This is the official GameController used for several RoboCup competitions
Home Page: www.b-human.de
We should show up to six players for each team as in the regular games. It should be possible to mark either one or two of them as (sub), meaning they are not active in the game. Currently all five are always active, even if only five players participate.
Extended time and penalty shoot-outs are only possible in knock-out matches. Normal matches should not lead to time extension or penalty shoot-out.
If a goal is scored by team A, only robots from team A who are not suffering from a penalty and are not in service should receive a point. Currently all of them receive a point.
The goal is to introduce Penalty Kicks into the Game Controller.
In order to to that - the Game controller needs two new buttons for each team:
The following should happen when the button is clicked:
We are running the GameController in Windows. When you close the GameController, you can't open it again because it says there is another instance already running. You have to manually end the javaw process in the Task Manager before you can start it again. It looks like when you close it by clicking on the "x" on the top right it doesn't shut down the process correctly. Would be excellent if that could be fixed.
It should be possible during setup of a match to switch the sides of the teams to the corresponding sides of the field
As in the Direct and Indirect Free Kicks also the penalty kick needs a 3-phase protocol with the secondary game state byte being set.
The GameStateVisualizer currently only listens to the SPL communication protocol. Would be really awesome if it would listen to MiteCom as well. Only an awesome feature, not necessary for functionality.
It would be nice if teams could choose their own team name for Drop-In games. Just an idea, no need to take care of it immediately.
Nothing is happening if you click the button for referee timeout during a drop-in game
If a second yellow card is added for a robot, a red card should automatically be assigned as well. Right now, this has to be done manually.
During a drop-in game there is no button for a dropped ball (rules pp. 661-685)
When starting with --league
or -l
option, the league is correctly selected in the combobox but the icons and team lists is incorrect
Currently in the re factored version it is not entirely clear which team is which in the GameController during the game. There should be some beauty added again.
Drop-In games cannot be knock-out games. So the checkbox should be removed. Since there is only one half time, automated color switching doesn't apply either. Checkbox can be removed as well.
After a dropped ball, no one should have kick off, but currently the game controller sets kick off for both sides
The current free kick need to be split into direct and indirect free kicks with separate buttons to be clicked and different messages to be send to the teams. This is rather critical.
When cloning we get a compilation error in eclipse in class Helper.java on line
import org.junit.Rule;
The import is not needed and can be removed.
If a robot was send from the field for a red card (so any time after a red card has been given to a robot), the robot should only get negative points but never positive points (same as if it would suffer from a removal penalty).
It appear that the mercy rule (game stopped when score difference is more than 10) is not present anymore in the official 2017 rules for kid size, however it is still implemented in the official game controller
During half time, the teams switch to the other half of the field. In the GameController, only the red and blue labels on the robot buttons switch, but not the team names and colors on the top.
It should be possible to assign red and yellow cards for each robot individually. If a card is assigned, this should be send to the robots and shown in the UI.
NOT FOR 2017
A clock should count down 10 seconds after free-kick or penalty-kick executed
It is easier to differentiate the teams if the logos would be shown next to the team names as in the old GameController.
The physical contact penalty used the code from the SPL and therefore had the problem of giving 45 instead of 30 seconds penalty.
Currently the free-kicks have two states - "Prepare free kick" and "Execute free kick". We need a third state before the current first one which is just called "Free kick". This has to be added in the UI and send to the robots. This issue is rather critical.
Set the number of players in teen size to 3.
May be I did something wrong, but for me it did not work to clone the game controller, import it in eclipse and run it. It is not able to find the resources like config/spl/teams.cfg
The typical cure for this is to add the resources folder as source folder in eclipse. This has two problems here:
The dropins folder will then show compilation errors. Not sure if dropins is really properly located in the resources folder since it contains source files.
The files are still not found. To be able to have both, finding resources in source and jar, one should use getResourceAsStream() method. This would have to be changed at least at:
TeamsLoader.java (71)
InputStream stream = getClass().getClassLoader().getResourceAsStream(PATH+dir+"/"+CONFIG); Scanner s = new Scanner(stream);
Teams.java (83)
InputStream inStream = getClass().getClassLoader().getResourceAsStream(PATH+dir+"/"+CONFIG); // InputStream inStream = new FileInputStream(PATH+dir+"/"+CONFIG);
Teams.java (142)
Helper dummy = new Helper(); InputStream inStream = dummy.getClass().getClassLoader().getResourceAsStream(PATH+Rules.league.leagueDirectory+"/"+CONFIG);
With 2 changed the files are still not found when running as jar. The build process in build.xml would have to be changed to include the config folder in the classpath. I stopped here.
Exception in thread "main" java.lang.StackOverflowError at controller.ui.ui.HL_DropIn.dispose(Unknown Source)
Unfortunately not easy to reproduce, but thrown at some point and then very often in a row. Doesn't seem to affect the functionality, only printed in the console.
If teams or the referee take a timeout, the game time should stop (which works), but the timeout time should count down. However, the counter of the timeout does not go down.
The goal keeper has special protection in the game and teams need to announce which of their players is the goal keeper. It would be good to be able to add a label for the robot currently being the goal keeper.
In penalty-shoot out mode, it is not possible to get free-kicks. In order to not make mistakes when operating the GameController, this option should be disabled.
Hello,
From the official rules:
the ball is in play when it is kicked directly out of the penalty area (new): or 10 seconds after the referee gave the signal
If we want this rule to be applied, I think we need the 10 seconds counter to be visible in the Game Controller, and maybe also broadcasted
Currently the kick-off switches if the team has taken a timeout. Instead, it should remain the same as it was before. This was a bug in the previous version already.
Currently the images for the teams and background is hard coded taken from the SPL folder. This should be done dynamically or you should be able to configure it when opening the Gamestate Visualizer
The robot should get the information how many yellow and red cards it has.
Since a game can never start with both teams having the same color, it would be convenient if they are by default one blue and one read. Right now they are both blue by default.
Currently, the GameController goes to "prepare free kick" first and counts down the 15 seconds and then goes to "freeze free kick". This is the wrong order! The following changes should therefore be made without changing the protocol (for direct, indirect free-kick and penalty kick):
In the start interface, allow to select drop-in as a game type.
The interface then looks the same as for regular games, except that it has up to five regular players for Kid and up to four regular players for TeenSize, no supplement players.
Only one ten minute half exist, no penalty shoot-outs
Behind each player’s number on the button is shown the total point count for this game. This is automatically calculated like this:
-- If a goal is scored, all robots from the team scoring a goal who are active (not suffering from a removal penalty, are in pick-up or service) automatically receive one point
-- All robots from the opposite team receive -1 point
-- For each robot, there is a plus and minus sign allowing to manually add or remove points in case they were awarded points by mistake (for example, they just got a removal penalty when the goal was scored, so the removal penalty was not pressed in the game controller yet)
-- The robot scoring the goal gets one point awarded manually by the assistant referee (with the plus button at the respective robot)
The goal is to introduce Free Kicks into the Game Controller.
In order to to that - the Game controller needs two new buttons for each team:
The following should happen when the button is clicked:
In previous GameController versions, the last action was always displayed on the right most end of the screen. Now it's the left most end of it. Would be good to have that as in previous years again.
As a referee the games in the Adult League will be 'normal' games in a similar fashion as in the
Kid and Teen Size League.
Original Email Text:
No dribbel and kick competiciton anymore, they should get the same interface as Kid and Teen, but with only one active player at a time
The SPL features a referee timeout that can be activated for humanoid league as well.
It was reported that the secondary clock when you first click on "free kick" (which was the old "freeze state") keeps changing randomly and takes crazy values. This is not good, because even though it is not important in this game state, there might be teams listening to it and getting confused still. So if there is a fix for this (even a hot fix that just sets it to 0 hard coded) would be very helpful.
Check if it is a good design decision to add a field coachMessageLength that expresses how long the
following coachMessage is.
In every team I cannot substitute with the first Player.
I'm not sure about this one, but today it seemed like the robots got the information that their penalty was removed already when the 30 seconds were finished counting down without the necessity for the GameController assistant to manually "free" the robot by clicking on it again. That shouldn't be the case - the robot should only get the signal after the button was pressed and is not blinking yellow anymore. This might not actually be the case and only observed by mistake, but please just confirm that this is not the case.
Hello,
In the game controller return data, the robot can "manually penalize" itself
I don't really understand what does it means regarding the rules, is it a way that the robot can signal its own malfunctioning for instance?
Check if it is a good design decision to add a field numRobots in the TeamInfo that specifies how many robots the team has. Additionally one can add a field isFirstRobotCoach that is true or false whether the
first robot in the array is the coach.
What Benefit: Smaller package size
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.