[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tag-playing strategies [was: Re: Preparation for Proposal?]
On Sat, Nov 20, 1999 at 03:00:05PM -0500, Tim Vanderhoek wrote:
> On Sat, Nov 20, 1999 at 02:24:37PM -0500, Cindy Wong wrote:
> >
> > About the strategy for defending...If our robot is smart enough to hide
> > behind something, by all means, do not move. Assuming that we will be
Okay, proposed defensive tactics and strategy,
1) Do not move for period of time.
2) In all cases, wait for enemy to enter sensor range.
3) When enemy appears in sensor range, determine what direction the
enemy is travelling in:
a) if the enemy has superior sensors, assume the enemy is heading
directly towards us.
b) if the enemy has inferior sensors, observe the enemy and try to
intuit his direction. Chances are we won't get it quite right,
but a guess is better than an incorrect assumption...
4) Choose a direction to run away in. We do not run in the opposite
direction of the enemy. We choose a direction ~20degrees from the
opposite direction of the enemy and run that way. This is because
super-sensor 4-person robots will possibly take advantage of us if we
go in a direction exactly opposite the direction they are approaching
from. They may try to maneuver us into a corner.
5) Run.
6) If we run into a barricade, we shall not use our standard algorithm
of trying to get around the barricade (see message describing
offensive tactics). If we strike a barricade head-on in a direct
collision, we shall turn 90degrees and continue travelling. If
we strike a barricade at 45degrees or less, we shall essentially
bounce-off the barricade (where the computer determines what angle
it needs to bounce at based on which side-sensors were triggered).
If we strike at an angle between 45degrees and 90degrees, we
shall become very confused and switch into attack mode. This is
undesirable and must not be allowed to happen.
We do this both for the case where the enemy was still in
beacon-sensor range at the time of our collision with the barricade
and for the case where the enemy was no longer in beacon-sensor range
at the time of our collision with the barricade.
It will be necessary to back-up a short distance so that the robot
can turn correctly.
(rationale)
Although in some instances, taking time to find a way past an
opposing barricade would be worthwhile, I believe it is overall a
bad idea. If we always try to find our way past barricades, we
shall ultimately end-up at the edge of the playing field. This is
disadvantageous since turning 90degrees in either direction will
lead to a corner. Although the suggested tactic still has the
same potential problem (getting cornered), it will not occur as
quickly and we will be left with a little more freedom when choosing
directions to run in. Not only that, but finding ways past opposing
barricades would have cost us muchos time and the enemy would
catch-up with us while we find our way past. It could be useful
to find our way past a barricade and then try to hide behind it
or go around it in circles. I've shied away from this due to the
complexity (and since it's probably a bad tactic if we're fighting
a super-sensor 4-person robot), but it's definately a wish-list
feature...
I don't know if these strategies are sufficiently simple for Malone.
He will undoubtedly question us on how we intend to determine what
angle we struck a barricade at, or question us on how we will tell the
robot to drive at a certain angle. For the former we have a pretty
good answer. For the latter, we have a semi-decent answer, but some
of the interface details should maybe still be worked-out.
Some of the ideas I'm considering are a little tricky to get right when
programming in assembly. As I mentioned before, it'll be important that
we meet before Christmas break to discuss all of the "wish-list" items.
Discussing "wish-list" items goes double for tag-playing strategies
(NOTE that, for example, the addition of sensors to detect barriers
would result in a large change of our tag-playing strategies). If
considerations aren't made for changes in the initial code, they become
really really hard to change later (for anything other than a quick hack
change that doesn't really work very well).
Any comments or suggested changes on this strategy? I think this is
more-or-less reasonable.
--
Signature withheld by request of author.