robocup

advertisement
An Introduction to
RoboCup
February 24, 2004
by Kevin Lam
Portions by Paul Marlow
Agenda
Overview of RoboCup
Demonstration Game
Simulator Mechanics
Simulator Communications Protocol
Some Existing Clients
Other Developments/Tools
Overview of RoboCup
The Robot World Cup Initiative
“By the year 2050, develop a team
of fully autonomous humanoid
robots that can win against the
human world soccer champion
team.”
A standard problem for AI research
Overview of RoboCup
Started in 1992 as the Robot JLeague (Japan)
First games and conferences in
1997
Workshops, conferences and yearly
competitions
RoboCup Leagues
four-legged
small size
middle size
simulation
World Championships
RoboCup 2004 - Lisbon
RoboCup 2003 - Padua
RoboCup 2002 - Fukuoka/Busan
RoboCup 2001 - Seattle
RoboCup 2000 - Melbourne
RoboCup 1999 - Stockholm
RoboCup 1998 - Paris
RoboCup 1997 - Nagoya
RoboCup Simulator
simulation
Server
Monitor clients
Player clients (i.e. agents!)
Coach clients
Demonstration
QuickTime™ and a
MPEG-4 Video decompressor
are needed to see this picture.
Simulator Mechanics
Clients and Server
Client
Client
Client
Client
Client
Client
Server
Client
Client
Client
Client
Client
Client
One server
Up to 11 clients per team (plus coach)
Clients/server communicate via UDP/IP
Client
Client
Client
Client
Client
Client
Server
Client
Client
Client
Client
Client
Client
Can be written in any language (C++,
Java, Smalltalk, ...)
Can be run on same machine or a
network
Clients may talk only to the server... not
to each other!
Client
Client
Client
Client
Client
Client
Server
Coach
Client
Client
Client
Client
Client
Client
Coach
Soccer Monitor
Monitor(s) used to visualize the action
and/or interrupt the game
Coaches (optional) to give guidance to
teams
RoboCup Clients
Autonomous agents
The “brains” of the players
Sensory information received from
server, decision made, action command
sent back to server
One agent represents one player
One agent designates itself as the goalie
RoboCup Clients
time
play mode
my body
landmarks
other players
speech
coach instructions
Sensory Input
Player
Agent
decision-making
strategy
dash
turn
turn head
kick
catch
speak
Outputs
RoboCup Server
Keeps time (typically 6000 simulator
cycles, 10 cycles per second)
Receives client messages, updates
“world model”, sends back new status
information
“Automated Referee” tracks current play
mode
Play Modes
kick off
game on
goals
out of field
offsides
half time and game over
Starting a Game
Download and install applications
(running the configure and make scripts
for the Unix / Linux systems)
Run the Server (default host is localhost
and default port is 6000)
Run the Monitor, connecting to the host
and port of the Server
Connect the players to the Server host
and port
Start the kick-off!
Communications
Protocol
Connection Protocols
• From client to server:
– (init TeamName [(version VerNum)]
[(goalie)])
– (reconnect TeamName Unum)
– (bye)
• From server to client:
– (init Side Unum PlayMode) as a
response for both client init and
reconnect messages
Side = l | r; Unum = 1 ~ 11
•
An Example
• send 6000 : (init MyTeam)
• recv 1067 : (init l 1 before_kick_off)
• recv 1067 : (see 0 ((goal r) 66.7 33)
((flag r t) 2 55.73)((flag p r t) 42.5 23)
((flag p r c) 53.5 43))
• recv 1067 : (see 0 ((goal r) 66.7 33)
((flag r t) 55.7 3) ((flag p r t) 42.5 23)
((flag p r c) 53.5 43))
• send 1067 : (move 0 0)
Client Commands
Client Command
Once per Cycle
(catch Direction)
Yes
(change_view Width Quality)
No
(dash Power)
Yes
(kick Power Direction)
Yes
(move X Y)
Yes
(say Message)
No
(sense_body)
No
(score)
No
(turn Moment)
Yes
(turn_neck Angle)
Yes
Client Sensor
Protocol
Three main message types:
Hear
See
Sense_Body
Noise models for each
Hear Messages
Can hear one message per team per
cycle
(hear Time Sender “Message”)
Sender = online_coach_left/right,
referee, self, Direction
Direction = -180 – 180 degrees
–
–
Hear Example
•(hear 18 self FCPortugal ETV 18
world_status r 2 0.98 -10.95 16.64 1 0.95
•0.00 0.00 1 0.95 0.00 0.00 3 0 OtGL- fGXtZ 3F.- /sdhAl 1p.- 0 40.0 0.0 0 2 )
See Messages
(see Time ObjInfo)
ObjInfo:
(ObjName Distance Direction
DistChange DirChange
BodyFacingDir HeadFacingDir) or
(ObjName Distance Direction
DistChange DirChange) or
(ObjName Distance Direction) or
(ObjName Direction)
–
•
•
•
•
See Messages
ObjName:
– (p [TeamName [UniformNum [goalie]]]) or
– (b) or
– (g [l|r]) or
– (f c); (f [l|c|r] [t|b]); (f p [l|r] [t|c|b]);
• (f g [l|r] [t|b]); (f [l|r|t|b] 0);
• (f [t|b] [l|r] [10|20|30|40|50]);
• (f [l|r] [t|b] [10|20|30]);
– (l [l|r|t|b])
– (B); (F); (G); (P)
Flags and Lines
See Example
•(see
18 ((f r t) 44.7 -22) ((f g r b) 47.9 30) ((f
g r t) 42.5 13) ((f p r c) 30.3 34 -0 0) ((f p r t)
25.3 -7 0 0) ((f t r 40) 36.2 -37) ((f t r 50) 44.7
-29) ((f r 0) 49.4 20) ((f r t 10) 47 8) ((f r t 20)
46.5 -3) ((f r t 30) 48.4 -15) ((f r b 10) 53.5 30)
((f r b 20) 59.1 38) ((f r t) 44.7 -22) ((f g r b)
47.9 30) ((g r) 44.7 22) ((f g r t) 42.5 13) ((f p r
c) 30.3 34) ((f p r t) 25.3 -7 0 0) ((f t r 40) 36.2
-37) ((f t r 50) 44.7 -29) ((f r 0) 49.4 20) ((f r t
10) 47 8) ((f r t 20) 46.5 -3) ((f r t 30) 48.4 -15)
((f r b 10) 53.5 30) ((f r b 20) 59.1 38) ((p
"FCPortugal") 36.6 28) ((l r) 41.7 -89))
•
•
•
•
•
•
•
•
•
•
•
•
•
Sense_Body
Messages
(sense_body Time
(view_mode {high | low} {narrow | normal |
wide})
(stamina StaminaEffort)
(speed AmountOfSpeed DirectionOfSpeed)
(head_angle HeadAngle)
(kick KickCount)
(dash DashCount)
(turn TurnCount)
(say SayCount)
(turn_neck TurnNeckCount)
(catch CatchCount)
(move MoveCount)
(change_view ChangeViewCount))
Sense_Body
Example
•(sense_body
19 (view_mode high normal)
(stamina 4000 1) (speed 0 0) (head_angle 0)
(kick 0) (dash 0) (turn 0) (say 98)
(turn_neck 0))
Coaches
Privileged clients used to provide
assistance
Receives noise-free view of the whole
field
Can only send occasional messages to
players (info, advice, freeform, etc.)
Used for opponent modelling, game
analysis, giving strategic tips to
teammates
RoboCup Clients
Some RoboCup
Clients
UvA Trilearn (Amsterdam) (2003
champion)
CMUnited (Carnegie Mellon)
Everest (China)
FC Portugal 2003 (Portugal)
HELIOS (Japan)
Magma Furtwangen (Germany)
Typical Approaches
Hard-coded behaviour
Scripted behaviour (e.g. planning)
Neural Networks
Opponent Modelling
Layered Learning
Behaviour Networks
Example: UvA
Trilearn
Coordination Graphs for passing,
anticipating passes
Layered skills hierarchy (pass, intercept)
Formations
Behaviour modelling of opponents
Example: FC Portugal
Strategic, ball possession, ball recovery
behaviours
“Situation Based Strategic Positioning”
Given game situation, calculated best
position and go there
Example: Krislet
Only one strategy: run to the ball and try
to kick it!
Surprisingly effective
Written in Java, easy to extend
Example: Stripslet
STRIPS style linear planning
Written by Aloke Wiki
Based off of Krislet
A Stripslet implementation is made up of
four main concepts: Actors, Sensors,
Actions, and a GoalList
Actors
These are designed to implement a
specific action, such as run-to-ball or
score-goal
Contains two main elements, an execute
method – providing the functionality, and
a name – which is used as a key into a
hash table.
To add a new Actor
Add a new class to the Actor.java, implementing the
Actor Interface
Add the new Actor to the ActorTable hash in
StripsBrain.java
Sensors
These consist of objects which include a
sense method, as well as a name for a
hash table key.
Each is designed to determine the
boolean outcome of a specific predicate,
such as can-see-goal.
To add a new Sensor:
Add a new class to Sensor.java, implementing the
Sensor Interface
Add the new Sensor to the SensorTable hash in
StripsBrain.java.
Actions
Actions consist of four members: name, precoditionList,
addList, deleteList.
name corresponds directly to that of the Actor name
property (e.g. “score-goal”)
precoditionList is a list of predicates which must be true
before execution of the action (e.g. “have-ball can-seegoal”)
addList is a list of predicates that will be true upon
execution of the action (e.g. “ball-in-net”)
deleteList is a list of predicates that will be false upon
execution of the action (e.g. “have-ball”)
Actions
To add an Action:
StripsBrain maintains a list of actions, so any new
actions must be added to this list
Note that multiple predicates in a list are
separated by spaces
• actionList.add(new Action("score-goal", // name
•
"have-ball can-see-goal",
// pre
•
"ball-in-net", // add
•
"have-ball")); // delete
GoalList
Contains a list of goals for which the
agents try to achieve
Currently the default list consists of only
one predicate: “ball-in-net”
Interesting possibilities include
Adding multiple goals
Re-evaluating the goal list each cycle
depending on the environment
Developing Clients
www.robocup.org
Soccer Server Manual
Start with Krislet and Stripslet
Older server versions required (v 5.xx)
Other Projects
Soccer Server 3D
3D Soccer Monitor (Robologvis)
Tools to convert logs into Flash
animations
Log analyzers (eg. Team Assistant, Paul
Marlow’s Classifier)
My Project
“Scene” Learning and Recognition
Could an agent learn from observing
another?
Could a team observe another and as a
result start playing “similar to” what it
saw?
As little human intervention as possible!
Project Goals
Scene Generation
Extract data from game logs
Create scenes - “snapshots”
Scene Learning (Reasoning)
Associate key scenes, patterns of
scenes, with action taken
Project Goals
Scene Recognition
Build a RoboCup client
Searches from a stored library of key
scenes and actions
Evaluate performance
(resemblances?)
Scene Descriptions
An idea by Prof.
Esfandiari
Size of “slices” impacts
complexity, accuracy
Extreme
Left
Left
Immediate
Ball
Near
Team
Mate
Distant
Center
Right
Goal
Opponent
Extreme
Right
References
• Most of the information about RoboCup
•
itself was taken using from the RoboCup
Soccer Server manual.
For the latest manuals and code, visit the
RoboCup project website at:
http://sourceforge.net/projects/sserver
–
Download