GT RoboCup SSL
Soccer software, robot firmware
gameplay.evaluation.double_touch.DoubleTouchTracker Class Reference

A state machine that tracks the double touch rule. More...

Classes

class  State
 

Public Member Functions

def __init__ (self)
 
def forbidden_ball_toucher (self)
 The shell id of the robot that isn't allowed to touch the ball returns None if everyone is allowed to touch.
 
def other_robot_touching_ball (self)
 
def on_enter_start (self)
 
def on_enter_kicking (self)
 
def on_exit_restart_play_began (self)
 
def on_enter_kicker_forbidden (self)
 
def execute_kicker_forbidden (self)
 
- Public Member Functions inherited from gameplay.fsm.StateMachine
def __init__ (self, start_state)
 
def start_state (self)
 
def restart (self)
 Resets the FSM back into the start state.
 
def add_state (self, state, parent_state=None)
 Registers a new state (which can optionally be a substate of an existing state)
 
def spin (self)
 Runs the FSM checks transition conditions for all edges leading away from the current state if one evaluates to true, we transition to it if more than one evaluates to true, we throw a RuntimeError.
 
def add_transition
 
def transition (self, new_state)
 
def is_in_state (self, state)
 
def state_is_substate (self, state, possible_parent)
 
def corresponding_ancestor_state (self, ancestors)
 
def ancestors_of_state (self, state)
 
def as_graphviz (self)
 
def write_diagram_png
 
def state (self)
 

Public Attributes

 state
 
 kicker_shell_id
 
 pre_ball_pos
 

Static Public Attributes

float TOUCH_RADIUS = constants.Ball.Radius * 2.5
 

Detailed Description

A state machine that tracks the double touch rule.

From the official rules (as of 2013): "If, after the ball enters play other than due to a forced restart, the kicker touches the ball a second time (without holding the ball) before it has touched another robot: an indirect free kick is awarded to the opposing team, the kick to be taken from the place where the infringement occurred (see Law 13)"

+ Inheritance diagram for gameplay.evaluation.double_touch.DoubleTouchTracker:
+ Collaboration diagram for gameplay.evaluation.double_touch.DoubleTouchTracker:

The documentation for this class was generated from the following file: