The goal of our low level motion control is to be as fast as
possible while remaining accurate and reliable. This is
complicated by the lack of feedback from the motors, forcing
all control to be done using only visual feedback. In
addition we integrated obstacle avoidance and anticipation
at the lowest level of control.
These goals were achieved by a reactive control mechanism
that directs a differential drive robot to a target
configuration. Though, based on CMUnited 97's control,
there has been a number of major improvements. Besides just
the integration of obstacle avoidance, the target
configuration for the motion planner has been extended. The
target configuration includes not only a cartesian position,
but also a direction that the robot is required to be facing
when arriving at the target position. In addition, this
goal configuration can actually be a function of time to
allow for the controller to reason about anticipation.
Obstacle avoidance was also integrated into the motion
control. This is done by adjusting the target direction for
the robot based on any immediate obstacles in its path.
This adjustment can be seen in Figure 1. If a target
direction passes too close to an obstacle, the direction is
adjusted to run tangent to the allowed clearance for that
Since the motion control mechanism is running continuously,
the obstacle analysis is constantly replanning obstacle-free
paths. This continuous replanning allows for the robot to
handle the highly dynamic environment and immediately take
advantage of short lived opportunities.
| Figure 1: Obstacle
Moving Target (Anticipation)
A very simple extension of this control algorithm allows
explicit reasoning about anticipation. In addition to the
control formula the control algorithm also provides an
estimate of the time to reach the goal. Given a target
configuration that is a function of time, you can simply
step forward through time to find a point in the future
where the configuration is reachable in that amount of time.
The speeds are then scaled to reach the target configuration
at the exact time. An example of this is shown in figure 2,
where the goal is to hit the moving ball. By using the
estimate of time to reach the goal, the algorithm looks
ahead in time until it finds a location where it can reach
the target in the alotted time.
| Figure 2: Anticipation of a Moving
Shoot, Pass, and Intercept
Due to the extended target configurations that the low level
control can handle, these individual behaviors can be
implemented very easily. Shooting and passing can be
implemented by simply setting the target configuration to be
the ball's position with the desired orientation to be
either towards the goal or a teammate. Interception is
achieved simply by specifying the ball's position as a
function of time, using the estimate of its velocity to
predict is trajectory.
The behavior of the goalkeeper is similar to CMUnited '97's
goalie. The goalie moves parallel to the goal line directly
in front of the mouth of the goal. It uses an improved
positioning that selects the position that minimizes the the
largest portion of unobstructed goal area. This is done by
finding the location that bisects the angles of the ball and
the goal posts (See Figure 3.)
As with CMUnited '97, when the ball is moving fast the
goalie moves to the ball's predicted point using the
estimate of the ball's velocity.
| Figure 3: Goalie
The goal for our defender was two-fold:
To achieve these ends three behaviors were implemented for
the defender. Blocking , is similar to the
goaltending behavior except it positions itself further from
the goal (see figure 4.) Clearing tries to push
the ball to the other half of the field. It does this by
finding the largest (angular) direction free of obstacles
(opponents and teammates) that the robot can push the ball
towards. The last behavior, annoying , is
somewhat similar to the goalkeeping behavior except the
robot tries to position itself between the ball and the
opponent nearest to it.
- Stop our opponents from scoring.
- Don't endanger our own goal.
Selecting which of these behaviors is used is very important
to the effectiveness of the defender. For example, clearing
the ball when it's close to our own goal can often lead to
scoring in our own goal. We used the decision tree
heuristic in Figure 7 to select which action to perform
based on the current state.
| Figure 4: Blocking the goal.
|| Figure 5: Clearing the ball.
|| Figure 6: Annoying the opponent.
"Ball in Front" will make sure the defender does not try
go around the ball to clear it out, possibly pushing it
towards its own goal. "Safe to Clear" tests wether the open
area to clear the ball is large enough, so the clearing
attempt wouldn't be intercepted.
| Figure 7: Selecting the defender's
Decision Theoretic Action Selection
Dynamic Formations (SPAR)
| Figure 8: Avoids blocking a shot.
|| Figure 9: Avoids bad passes.
|| Figure 10: Strategic position.