Difference between revisions of "RoboCup Soccer"
Line 1: | Line 1: | ||
− | == | + | The ''soccer'' program encompasses everything that happens between ''vision'' and ''radio''. |
− | + | ||
− | + | ==Invocation== | |
− | * | + | For command-line help: |
− | ** | + | <pre> |
− | ** | + | ./soccer --help |
− | * | + | </pre> |
+ | |||
+ | All command line options except <tt>-sim</tt> and <tt>-nolog</tt> can also be changed in the GUI. | ||
+ | |||
+ | If a <tt>logs</tt> directory is present in the current directory when <tt>soccer</tt> is started, it will write a log file named with the date and time the program was started. This can be disabled with the <tt>-nolog</tt> option. You typically don't need to log data during simulation. | ||
+ | |||
+ | All options have defaults. If <tt>soccer</tt> is started with no arguments, it will start in a configuration suitable for competition. | ||
+ | |||
+ | If no configuration file is given, <tt>soccer</tt> will read <tt>soccer-sim.cfg</tt> or <tt>soccer-real.cfg</tt> from the current directory, depending on the <tt>-sim</tt> option. | ||
+ | |||
+ | The typical command line for off-line development and testing is <tt>./soccer -sim</tt>. | ||
+ | |||
+ | ==Operation== | ||
+ | |||
+ | ===Team and Field Configuration=== | ||
+ | There are two parameters that must be set before each half of a match: team and defending goal. | ||
+ | The team (yellow or blue) can be set with the <tt>Field -> Team</tt> menu. | ||
+ | The goal we defend, identified by its position in vision space, can be set with the <tt>Field -> Defend Goal</tt> menu. | ||
+ | |||
+ | The current team is shown next to the status indicator. | ||
+ | |||
+ | ===Field View=== | ||
+ | The orientation of the field view can be changed in the View menu to correspond with the physical setup of the computer on a real field. | ||
+ | |||
+ | Team space and vision space coordinate frames can be shown on the field with <tt>View -> Coordinate Frames</tt> | ||
+ | |||
+ | The field view allows you to control the simulator and manual driving: | ||
+ | * Left-clicking on a robot drags the robot | ||
+ | * Left-clicking away from a robot places and drags the ball | ||
+ | * Right-clicking on a robot selects it for manual control (if a joystick is present) | ||
+ | |||
+ | ===Tree=== | ||
+ | The tree is automatically generated from Packet::LogFrame using Google Protocol Buffers' reflection mechanism. By default, non-repeated messages are expanded and repeated messages are not. There are options in the context menu to expand and collapse items. | ||
+ | |||
+ | ===Logging=== | ||
+ | There is a circular buffer of recent log data even if no log file is being created. You can use the log controls to move through this data and see the recent history of the game. The amount of log data available for instant replay is shown in the status bar. | ||
+ | |||
+ | The field view and tree can show either live or historical data. All controls showing historical data have a red outline. Some controls, such as the Plays tab and the status label, only show live data. | ||
+ | |||
+ | *Use the playback rate slider to move through recorded data: center is stopped, left is backwards, and right is forwards. The display stops when you start moving the playback slider or when you click on the pause button. | ||
+ | *Use the <tt>Next Frame</tt> and <tt>Previous Frame</tt> buttons to step through data. | ||
+ | *Use the <tt>Live</tt> button to continuously see current data. | ||
+ | |||
+ | ===Status Indicator=== | ||
+ | There is a status indicator in the upper right corner of the main window. Its text and color indicates the readiness of the whole system for competition. If everything is ready for a real match, the indicator will show <span style="background:#00FF00">COMPETITION</span>. Otherwise, the indicator will be red for serious system problems or yellow for configuration problems. It will never be green except when the entire system is ready to run. | ||
+ | |||
+ | ===Manual Driving=== | ||
+ | You must have a compatible gamepad connected for manual driving. We recommend the Logitech Cordless Rumblepad 2 or its wired equivalent. | ||
+ | |||
+ | Select a robot either by right-clicking on it in the field view (must be on this soccer's team) or selecting its shell ID in the <tt>Manual</tt> combobox. | ||
+ | |||
+ | Controls: | ||
+ | * Button 1 starts autonomous operation | ||
+ | * Button 3 stop autonomous operation (manual driving still works) | ||
+ | * The D-pad allows precise direction control at full speed | ||
+ | * The right analog stick's X-axis is rotation | ||
+ | * The left analog stick controls translation | ||
+ | * Holding button 7 (lower left shoulder) lets you control the roller with the right analog stick's Y-axis | ||
+ | * Pressing button 5 (upper left shoulder) saves or restores the current roller speed | ||
+ | * Pressing button 8 (lower right shoulder) fires the kicker at full power when the ball is detected | ||
+ | |||
+ | ==Communications== | ||
+ | Simulation and real-robot operation are essentially the same. They differ only by the type of network communication used. | ||
+ | |||
+ | * Real vision and referee data uses UDP multicast. | ||
+ | * Simulated vision data is sent as two separate copies to different UDP unicast ports on <tt>localhost</tt>. This avoids the need to configure local multicast or broadcast. | ||
+ | |||
+ | See <tt>software/common/Network.hpp</tt> for details. | ||
+ | |||
+ | There are provisions for two radio channels to allow two teams to play with the same hardware and software components. The radio channel is shown above the team indicator. There is currently no provision for changing channels on the robots, so this is only useful in simulation. This is an electronics (firmware) upgrade item. | ||
+ | |||
+ | ==Major Components== | ||
+ | ; [[World Modeling]] : Develops models of the world based on available information from multiple systems | ||
+ | ; [[Robocup StateID | StateID]] : Assigns semantic labels to game states to aid in behavior selection | ||
+ | ; Gameplay : Plays and Behaviors. Play selection and behavior definitions. | ||
+ | ; [[Motion]] : Low level robot planning and motion control | ||
+ | |||
+ | ; [[Robocup Play Development HOWTO]] : How to add plays to the system so they can be compiled and used |
Revision as of 21:19, 2 August 2010
The soccer program encompasses everything that happens between vision and radio.
Contents
Invocation
For command-line help:
./soccer --help
All command line options except -sim and -nolog can also be changed in the GUI.
If a logs directory is present in the current directory when soccer is started, it will write a log file named with the date and time the program was started. This can be disabled with the -nolog option. You typically don't need to log data during simulation.
All options have defaults. If soccer is started with no arguments, it will start in a configuration suitable for competition.
If no configuration file is given, soccer will read soccer-sim.cfg or soccer-real.cfg from the current directory, depending on the -sim option.
The typical command line for off-line development and testing is ./soccer -sim.
Operation
Team and Field Configuration
There are two parameters that must be set before each half of a match: team and defending goal. The team (yellow or blue) can be set with the Field -> Team menu. The goal we defend, identified by its position in vision space, can be set with the Field -> Defend Goal menu.
The current team is shown next to the status indicator.
Field View
The orientation of the field view can be changed in the View menu to correspond with the physical setup of the computer on a real field.
Team space and vision space coordinate frames can be shown on the field with View -> Coordinate Frames
The field view allows you to control the simulator and manual driving:
- Left-clicking on a robot drags the robot
- Left-clicking away from a robot places and drags the ball
- Right-clicking on a robot selects it for manual control (if a joystick is present)
Tree
The tree is automatically generated from Packet::LogFrame using Google Protocol Buffers' reflection mechanism. By default, non-repeated messages are expanded and repeated messages are not. There are options in the context menu to expand and collapse items.
Logging
There is a circular buffer of recent log data even if no log file is being created. You can use the log controls to move through this data and see the recent history of the game. The amount of log data available for instant replay is shown in the status bar.
The field view and tree can show either live or historical data. All controls showing historical data have a red outline. Some controls, such as the Plays tab and the status label, only show live data.
- Use the playback rate slider to move through recorded data: center is stopped, left is backwards, and right is forwards. The display stops when you start moving the playback slider or when you click on the pause button.
- Use the Next Frame and Previous Frame buttons to step through data.
- Use the Live button to continuously see current data.
Status Indicator
There is a status indicator in the upper right corner of the main window. Its text and color indicates the readiness of the whole system for competition. If everything is ready for a real match, the indicator will show COMPETITION. Otherwise, the indicator will be red for serious system problems or yellow for configuration problems. It will never be green except when the entire system is ready to run.
Manual Driving
You must have a compatible gamepad connected for manual driving. We recommend the Logitech Cordless Rumblepad 2 or its wired equivalent.
Select a robot either by right-clicking on it in the field view (must be on this soccer's team) or selecting its shell ID in the Manual combobox.
Controls:
- Button 1 starts autonomous operation
- Button 3 stop autonomous operation (manual driving still works)
- The D-pad allows precise direction control at full speed
- The right analog stick's X-axis is rotation
- The left analog stick controls translation
- Holding button 7 (lower left shoulder) lets you control the roller with the right analog stick's Y-axis
- Pressing button 5 (upper left shoulder) saves or restores the current roller speed
- Pressing button 8 (lower right shoulder) fires the kicker at full power when the ball is detected
Communications
Simulation and real-robot operation are essentially the same. They differ only by the type of network communication used.
- Real vision and referee data uses UDP multicast.
- Simulated vision data is sent as two separate copies to different UDP unicast ports on localhost. This avoids the need to configure local multicast or broadcast.
See software/common/Network.hpp for details.
There are provisions for two radio channels to allow two teams to play with the same hardware and software components. The radio channel is shown above the team indicator. There is currently no provision for changing channels on the robots, so this is only useful in simulation. This is an electronics (firmware) upgrade item.
Major Components
- World Modeling
- Develops models of the world based on available information from multiple systems
- StateID
- Assigns semantic labels to game states to aid in behavior selection
- Gameplay
- Plays and Behaviors. Play selection and behavior definitions.
- Motion
- Low level robot planning and motion control
- Robocup Play Development HOWTO
- How to add plays to the system so they can be compiled and used