Here we answer various questions regarding the 3D simulator and
the UT Austin Villa code base.
Is there something missing? Something you want to add? Email us, and we'll add it.
- Are there any example agents I can test my agent against? Yes, you can
play against some binaries from the 2012 competiton. You will
find them in the /projects/cs344M.pstone/3d/opponents/
directory. These binaries include the top 4 teams in the
tournament and all have been configured to run on UTCS. The
full set of RoboCup 2012 released binaries are
located at
http://simspark.sourceforge.net/binaries/RoboCup2012/,
however many will of them will not run on UTCS (they all should
work out of the box on a vanilla install of Fedora 16 64-bit and
I got most of them to work on Ubuntu 11.10). To see how the
different teams did during the tournament you can check the
RoboCup 2012 3D simulation league results page.
General instructions for running a binary:
- Is there a good place to find out what the UT Austin Villa
team does for different things? There is a farily comprehensive
description of the UT Austin Villa team in the UT Austin Villa 2011 3D Simulation Team Report.
- How can I run the server remotely on UTCS but watch games
locally on my machine at home?
- 1. Follow the RoboViz installation instructions (https://sites.google.com/site/umroboviz/usage/setup - ie. download JDK, checkout from repo, compile with sh build-<OS>.sh)
- 2. Modify the 'Server Host' line in your Resources/config.txt file to point to the UT Unix machine that you're running the server on
- 3. Run server on remote machine as usual (run_server3d)
- 4. Run roboviz monitor on local machine (./roboviz.sh)
- 5. Run agents remotely on another UTCS machine as usual
- How do I use the UT Austin Villa positioning system?
In order to use dynamic role assignment with the positioning system specified in the paper
Positioning to Win: A Dynamic Role Assignment and Formation
Positioning System
you will need to set
the
useDynamicRoleAssignment
variable to
true in naobehavior.cc. Note that this only enables the
role assignment part of the algorithm and does not include the
voting coordination system from the paper (which is not in the code base).
You can specify position locations for the different roles in the
getSpaceForRole()
function in positioning.cc. The positioning
system has two special roles: ON_BALL and GOALIE. The ON_BALL role
is always assigned to the player closest to the ball while the
GOALIE role is assigned to the goalie (the agent with uniform number
1) unless the goalie is the closest to the ball and has been
assigned the ON_BALL role.
A good way to get the current position assigned to an agent by the
positioning system is to get the value returned
by getSpaceForRole(worldModel->getProposedRoles()[worldModel->getUNum()-1])
.
- Are there some additional possibly beneficial features I can turn on in the UT
Austin Villa code base and experiment with? Yes.
- Holonomic walk. You can use the holonomic walk described
in the
paper Using
Dynamic Rewards to Learn a Fully Holonomic Bipedal Walk by
setting the
useHolonomicWalk
variable to true
in naobehavior.cc.
- Faster walks. We have learned several walks that have
top speeds a little over .8 m/s (the default walk has a top speed
of .71 m/s). You can turn these on by uncommenting parameters for
them in paramfiles/defaultParams.txt. This is done by
removing the block comments (started by /* and ended by */) around
one of the groups of walk parameters that begin with "target_fullparams",
"balance_target2", or "balance_target3". Note that for each walk
there are three sets of walk parameters (one each for going to a
target, sprinting, and positioning).
- Faster getup. We learned faster getup routines which can
be turned on by uncommenting parameters for
them in paramfiles/defaultParams.txt. This is done by
removing the block comments (started by /* and ended by */) around
"Faster getup off front params" for getting up when having fallen
forward, and "Faster getup off back params" for getting up when having fallen
backwards. If you don't see these parameter sets
in paramfiles/defaultParams.txt you may need to update this file. Note that we didn't use the faster getup off front
parameters in the competition as we felt they were a little
unstable.
- Penalty Kick Shootouts: A penalty kick shootout occurs
when two teams are tied after both regulation and overtime periods
when a tie must be broken. Each time gets 5 attempts to score with
a lone shooter against the other team's goalie. At the start of an
attempt the ball is placed at the center of the field and the shooter has 60
seconds to score. The goalie for the defending team trying to stop
the shooter is not allowed to leave the penalty box (the shooter is
allowed to enter the penalty box). After the 5 scoring attempts by
each team the team with the most goals wins. If the teams have the
same number of goals after 5 attempts each then they continue
alternating scoring attempts until one team scores and the other doesn't.
- How do I create a penalty kick shooter? You can edit
the methods in the
PKShooterBehavior
class in
pkbehaviors.cc. In order to start a penalty kick shooter run
the start_pkshooter.sh script.
- How do I create a penalty kick goalie? You can edit
the methods in the
PKGoalieBehavior
class in
pkbehaviors.cc. You may find the
isOutsidePenaltyBox()
method useful which lets you know
whether a location is inside the penalty box. In order to start a penalty kick goalie run
the start_pkgoalie.sh script.
- I want to run repeated trials of an agent doing something and
then measure X. Is there an automated way to do this? We have
created agents for doing this sort of thing for reinforcement
learning.
- Look in the optimization directory. Here you
will find scripting files for what we call optimization agents.
Optimization agents perform some behavior (potentially determined
by an input file) and then write out some output to a file. Check
the README file for some pointers as to what is going on here.
- Run the optimization/run-opt.sh script. This will by default
run an agent that measures how far it can walk forward in 15
seconds.
Example usage: run-opt.sh /tmp/out.txt
- Checkout optimizationbehaviors.cc. Here you will find the
behavior classes for the optimization agents. Methods for the
classes are
beam()
to initialize where an agent starts,
selectSkill()
to control an agent's behavior, and
updateFitness()
to monitor and write out data.
- How can I play two teams against each other and automatically
record the score from the game? We have a script for doing
this which plays a single half between your team and an opponent
team and then writes out the score.
- Look in the stats directory. Here you
will find scripting files for playing your team against an
opponent team for a half. Check the README file for some pointers as to what is going on here.
- Run the stats/run-stats.sh script. This will run your
agent against an opponent agent, with your agent either starting
on the left or right side of the field, and then write output to the given
output file.
Example usage: run-stats.sh /tmp/out.txt
~/opponent_dir left
- Checkout recordstatsbehavior.cc. Here you can change
the
updateFitness()
method in the
RecordStatsBehavior
class to change what data is being
recorded and written out.
- Can I get an agent's ground truth position? Yes, you can
use the
worldModel->getMyPositionGroundTruth()
method
which gets an agent's ground truth position from the server.
Note that this functionality will NOT be turned on during the
class tournament so don't use this function in your final agent
submission or you will be sorry. Also you will need to use a
version of the server that has ground truth data
enabled: rcroboviz_gt
, run_server3d_gt
,
and rcsoccsersim3d_gt
.
- Is there a way to move the ball or players around and also
change the current game state? You can change the game state
in RoboViz by typing 'O' and choosing a state from the menu.
You can also select agents and the ball and then control-click to
move them. Additionally you can use the Coach/Trainer
command parser documented here
to change the play mode as well as the positions and velocities
of objects on the field.
Examples of its usage can be found in move-ball.pl,
stats/kickoff.pl,
and optimization/beamball-and-kickoff.pl. The agent can
also send commands directly to the Coach/Trainer command parser directly
by passing the message to the
setMonMessage()
method. In order for this to work, however, the agent must
connect to the server through the monitor port by adding the
command line argument "--mport 3200".
[Back to Department Homepage]
Page maintained by
Patrick MacAlpine
Questions? Send me
mail