FAQ
From RoboCup
←Older revision | Newer revision→
Contents |
Virtual Robot competition
- Where are the frequent asked questions of the Virtual Robot competition?
- The FAQ of the Virtual Robot competition are located on a separate page.
Agent Development
Installing Simulation Package
- Where can I download Rescue Simulation Package?
- Rescue Simulation Project at SourceForge.net
- I try to compile the package but it fails.
- Make sure that your GCC and JDK version meets the minimum requirement specified above.
- Please remember that most distributions of linux use GCJ as Java compiler. So you need to install Sun JDK manually in order to compile simulation package. On Ubuntu this can be done with the sun-java packages, using update-alternatives to point the default java programs at the sun-java installation if necessary
- I have installed the prerequisite software but the compilation still fails, with an error message similar to the below.
make[1]: Entering directory=20 `/.../rescue-0.50.0/programs/ticker' g++ -g -Wall -pipe -g -Wall -pipe -c -o main.o main.cc g++ -o ticker main.o -lX11 /usr/lib/gcc/i586-suse-linux/4.1.0/../../../../i586-suse-linux/bin/ld: cannot find -lX11 collect2: ld returned 1 exit status make[1]: *** [ticker] Error 1 make[1]: Leaving directory `/.../rescue-0.50.0/programs/ticker' make: *** [all] Error 2
- This might be caused by the code/compilation not being told adequately where to find the X11 library. This error has been avoided in one case by editing programs/ticker/Makefile to change LDFLAGS += -lX11 to LDFLAGS += -L/usr/X11R6/lib -lX11.
Developing Agents
Initalising
- Does my agent know the map at the start
- When the game begins there is an initialisation phase during which the agent is supplied with the layout of the map: roads/nodes/rivers (although none of the maps yet have rivers on), and buildings. The properties of the roads (such as blockage information), buildings (fieriness etc) and so on are *not* supplied.
- What can I do during initialisation?
- You can use this supplied information to perform any preprocessing you like on the map. If your agents do not start connecting after several minutes they will be assumed to have failed; beyond this there are no computational restrictions. You cannot interact with the kernel until all agents are connected and the game has started, so there is no communication and no acting.
- Can I write a file during initialisation which can be read by the other agents?
- There is no practical problem with this, but check the rules for the competition this year [1]. In 2006 this was fine.
- Random seeds
- are the same random seeds used for all teams on the same map
- Yes
Running
- What happens if my agents run out of computational power during a timestep?
The kernel will carry on without them; they will have a no-op during that timestep. If they eventually supply a request for that step after it has passed, the request will be rejected.
- What's the key to the 2-D viewer?
- Blue, White, Red circles are the Police, Ambulance, Fire RR agents, and Green circles are the civilians.
The fieriness level of a building is shown by its colour, from grey through yellow and shades of orange to increasingly dark red until it is burnt and black. Blue shows watered-down buildings. The different shades of grey represent the brokenness of the building as set by the collapse simulator. This value is set in the Viewer.java.
Agent health points is shown by the darkening of the agent's blob: from bright green (hp=10000) through dark green (hp < 3000) to black (hp=0); when it becomes black the agent is dead. This applies to rescue agents as well as civilians. Rescue agents will be damaged if they are buried at the beginning of the game, or if they get themselves burned. No ambulance agent can dig itself out.
Roadblocks are shown by black crosses. Grey crosses show roadblocks which only prevent one-way passage of the road.
- I can't see the centers on the map
- The centers don't have a location. They exist only to receive and send messages.
Silly problems
- Exception in thread "main" java.lang.UnsupportedClassVersionError
- rescuecore/Launch (Unsupported major.minor version 49.0)
- This is the kind of error you get when you're trying to run java compiled with a 1.5JVM on a 1.5JVM. You can try comparing javac -version and java -version for your java compilers and virtual machines. You can use the commands "sudo update-alternatives --config java" and "sudo update-alternatives --config javac" to update to the most recent java version on your machine.
- My agents aren't moving, but there are no error messages!
- Perhaps they are blocked in by blockages, or buried under rubble and awaiting rescue
- My ambulances aren't saving anyone, they're just running around in circles!
Possible reasons could be:
- Most likely: They are not aware of any buried victim and need to search each building to find them.
- Ambulances cannot plan a path to the victim
- There is a flaw in your ambulance allocation algorithm
Rules
Communication
- Message count
- There is a limit on number of messages that each agent can send and hear at each cycle. By default this limit is 4 messages for a platoon agent and 2n messages for a center agent (n represents number of platoon agents of the same type with that center agent)
Note: Agents hear their own messages without any restriction. Hearing this message won't fill their message capacity
- Channels
- Agents should register for channels they wish to listen to. After that, kernel will send a limited number of messages on each of those channels to that agent. (Clarification: consider this situation, agent X has limit of 8 messages, X registers for receving messages from channel 2, 3 and 4, from next cycle kernel will send (at most) 3 messages on channel 2, 3 messages on channel 3 and 2 messages on channel 4 to that agent. Please remember that since kernel handles communication asynchronously, agent X can not use remaining capacity of channel Y for receving messages from channel Z.)
- Channel types
- By default channel 0 will simulate say behavaiour that previously was handled by AK_SAY, So in addition to listening to channel 0 you should be around sender (ie 30m distance) to successfully hear his/her message.
