CS-424, Spring, 2008
Final Robotics Competition
Monday, May 12, 2008, 7:00 P.M. in Robotics Lab

This year's final robotics competition will have two phases. Teams may use either a LEGO 
RCX-based robot that they design and construct or a BIObot. 

In phase 1 each robot will be required to find a randomly-positioned target placed in the 
smaller gray rectangle bordered in white of the playing area shown in the diagram below. If 
an RCX robot is used, the target will be a small rectangular piece of black cardboard; in the 
case of the BIObot it will be an RFID tag. Each robot will begin in the position shown in the 
lower part of the diagram and do a systematic search of some kind to explore the gray rectangle 
and find the target. Once it has done this, it will be required to record the x,y coordinates 
of the position of the target. In the case of the RCX robot the coordinates should be placed in 
its data log. The host PC can then upload the results using the BricxCC program's Datalog tool. 
For BIObot the coordinates should be displayed in a window on the screen of the host PC. 

After the target is found, a second very simple program should be written that will use the 
values reported in the first program to move the robot from the same initial position to the 
target in no more than three simple moves: for example, by moving forward the correct distance, 
turning 90 degrees, and moving forward again for the correct distance. The robot should stop 
on or close to the target. This second program should not require the use of any sensors.

In phase 2 each robot will be placed at a starting point at the base of the large gray rectangle 
and made to traverse that rectangle's area (again bordered in white), avoiding fixed obstacles 
(2 x 2 inch wooden boards) with the goal of arriving at a white "Goal" area bordered in black at 
the other end of the field. A bright light source that can be "seen" from any place on the playing 
field will be placed directly behind and above the Goal. Once the robot has entered the goal it 
should pause and indicate that it knows it has found the goal. In the case of the RCX this 
should be done by playing some sort of a happy song. The BIObot should cause a message to be 
displayed in a window of the host PC. In either case the robot should then  return to its 
starting area, again avoiding the obstacles.

A record of the total time required to complete both phase 1 and phase 2 will be kept, and the 
robot that has best achieved the goals in the shortest total time will be the winner. (See 
details below.)

Robot specifications:

If a BIObot is used, no modifications of the basic hardware are permitted without permission 
of the referees (TA and Professor).

In the case of the RCX, the following are the rules:

No robot is to exceed 10 inches in any dimension (width, height, length).

A robot can use as many sensors as desired (if you can find ways of hooking them all up to the 
three sensor ports on the RCX). Remember that your robot is responsible for distinguishing 
between black, white, and gray on the floor; bright light detection; and touch detection.

A robot may not have more than three motors.

A robot must have one or two front bumpers no more than two inches high that cover the area in 
between its treads/wheels.

You may write separate programs for each phase of the competition, but be aware of the program 
size limitations of the RCX.

Phase 1 Details:

There must be some sort of strategy to systematically explore the gray rectangle in order to find 
and record the position of the target. For example this could be a back-and-forth  straight-line 
path in which after each traversal the it moves a bit more in the vertical direction. For either 
robot, but especially in the case of the RCX, you will also need to be sure that your robot really 
moves in a straight line when it goes forward. This could be done by performing some pre-tests to 
determine the power settings needed on each motor so that the wheels go at very close to the same 
speed. You will also need to be able to turn by a precise amount (perhaps by 90 degrees, depending 
on the algorithm your robot uses to "explore" the playing field). This could also be done in some 
pre-tests in which you determine how long it takes for the robot to turn by a specified angle when 
your turning code is running. A much better and more precise way to assure that the robot is going 
straight or that it is turning by the correct amount is to use rotation sensors. There are two of 
them included in your Robot kit. But remember that the RCX only has three sensor ports, so you may 
have to be fairly creative about how these are used. In the case of the BIObot we have much more 
precise control over its motion because of the wheel encoders. You can do a pre-calibration to 
determine exactly how far the robot moves for a given encoder count and also what angle corresponds 
to what encoder count if the motors are moving in opposite directions.

In either case, once the robot has found the target, it must be able to use the information it 
obtained to move directly from its starting point back to the target in no more than three simple 
moves without the aid of sensors. 

Phase 2 Details:
There are many possible approaches to traversing the larger gray rectangle, avoiding obstacles, so 
as to arrive at the "Goal" area in the shortest possible time. You could take a "deliberative" 
approach. Since the obstacles are fixed you could measure their positions in advance and put them 
into a "world map" either in the memory of the robot's microcontroller (if it's big enough and you 
have access to it) or in the host PC's memory. Then your program could apply something like the 
wavefront algorithm we discussed in class. Or if you're using a "reactive" approach, you could try 
to apply one of the "bug" algorithms we talked about. The touch sensors (RCX) or the IR sensors 
(BIObot) could be used to determine when the robot runs into an obstacle after which your program 
could make it turn to follow the border of the obstacle. An even simpler heuristic would be to just 
try to turn toward the beacon any time the sensors indicate the robot has bumped into an obstacle. 
This, of course, has its problems, especially when the robot is returning. But during the return we 
could make the robot turn away from the beacon instead of toward the beacon, however with less 

Stopping a round:

At any time the referee (TA or Professor) may determine that a round must be stopped. There are many 
ways this could happen. For example, during Phase 1, perhaps the robot wanders out of the gray 
rectangle and gets hopelessly lost. Or during Phase 2 it might get tied up in a corner or behind an 
obstacle. If a round is stopped, we will move on to another robot. But the first robot will be given 
other opportunities to try to perform its tasks later on, perhaps after fixing the hardware or 
changing the software. There will, however, be a limited number of chances.

Determining the winning team:

As mentioned above the robot that best achieves all the goals of each phase in the least total time 
will be the winner. Specifically, points will be allocated to each robot by the referees as follows:

Phase 1: Finds target and stops on or close to it ...............max 15 pts., depending on how close
Phase 1: Minimum time to find the target.........................max 20 pts.
Phase 1: Goes from starting point to target in 3 or less moves...max 15 pts., depending on how close
Phase 2: Traverses field, arrives and stops in goal..............max 15 pts., depending on how well done
Phase 2: Minimum time to get to goal.............................max 20 pts.
Phase 2: Finds its way back to starting area.....................max 15 pts., depending on how well done

The robot that receives the most total points is the winner.

In order to receive a satisfactory grade in the competition, your robot must demonstrate that it:

1. can find a light source and move in its general direction

2. will stop and turn when its front bumper is activated (or its IR sensor indicates it is very close 
to an object)

3. has a strategy for finding the target during Phase 1

4. has a strategy for determining the x,y coordinates of the target during Phase 1

5. has a strategy for path planning and obstacle avoidance in Phase 2

6. can recognize and distinguish between the out-of-bounds lines, the playing area, and the goal area

7. can recognize when it has entered the goal area.

Each team must submit a paper describing in detail the design of its robot. The paper must be submitted 
by Wednesday, 5-14-08 at noon. Diagrams (and/or especially photographs) as well as source code listings 
are an essential part of the paper. The paper must also describe the techniques and strategies used 
for each of the seven points given above. Each member of each team must also submit a numerical peer 
evaluation of each other team member indicating how he/she thinks the other members of the team have 
contributed to the overall effort and success of the team. The following is how the project grade will 
be determined:

The paper................................................................. 30%
Performance during the competition (professor/TA evaluation 
of how well the robot performed the seven requirements)................... 30%
Final score in the competition.............................................20%
Team member peer evaluations...............................................20%

You may submit your paper, code, diagrams/photographs electronically either by putting them on a CD and 
depositing the CD in the CS-424 drop drawer outside the CS office or by emailing it to Prof. Eckert