Individual Pursuit Race

The Contest

Contest Name: Individual Pursuit Race!

Submitted by: Phil Pilgrim.

Objective: Two robots start simultaneously at opposite sides of an oval wall. The objective is for your robot to drive around the wall and catch up with the other robot, before it catches up with yours.  PING))) Ultrasonic Distance Sensors are used to detect the wall.

Challenges: Sensing the oval wall. Making a side-facing mounting bracket for the PING))) sensor. Writing navigation code that keeps the robot from touching the wall while going as fast as possible around it. Building the race course wall.

The Rules

About the Robots

  1. Use a BASIC Stamp Boe-Bot, Propeller ActivityBot, or Shield-Bot (for Arduino).
  2. Contestants in each match must use the same servos and voltage to keep top-speed-capability similar:
    1. Parallax Continuous Rotation servos powered with regulated 5 VDC
    2. Parallax High Speed servos powered with 7.5 VDC
  3. A PING))) Ultrasonic Distance Sensor is used to detect the oval wall.
  4. You can design a custom side-mounting bracket for the PING))) sensor with any material you like. This example design can be laser-cut from Delrin; information about obtaining the design file is at the bottom of this page.

About the Playing Field

  1. The raceway is an oval wall tall enough for the PING))) sensor to detect. 
  2. The wall should be made from a smooth, firm material that will reflect sound waves cleanly, rather than absorb or scatter them.
  3. The wall should have gentle curves, with no sharp corners.
  4. Suggested dimensions: 12 in (30 cm) tall, 12 in (30 cm) wide, and 30 in (72 cm) long.  A wall could be built with 5-gallon buckets, boards, and duct tape as shown below.

About the Game

  1. Each pair of racers will start on opposite sides of the wall, facing counter-clockwise.
  2. Teams may place their bots as close to, or as far from, the wall as they wish.
  3. Each team will power up its bot and hold it off the floor with the wheels spinning until the starter says, “Go!” at which point the bots are placed on the floor.
  4. The race will continue until one of the following occurs:
    1. A robot commits a disqualifying infraction before both bots have made one circuit around the course. In this case, the race will be restarted after both teams have a chance to reprogram their bots.
    2. One robot catches up to the other, either touching its opponent or passing it. In this case the faster robot wins the race and proceeds to the next heat or is declared the overall winner in the last heat.
    3. A robot commits a disqualifying infraction after both bots have made at least one circuit around the course. In this case, the infracting robot loses, and the winner proceeds to the next heat or is declared the overall winner in the last heat.
  5. These are the disqualifying infractions:
    1. A robot touches the wall.
    2. A robot wanders away from the course.
    3. A robot spins two or more revolutions in place without forward progress.

Teacher Resources

Phil Pilgrim designed this contest to use in his classroom with the Propeller ActivityBot.  He has generously shared his original contest information, which includes example Propeller C code, programming strategies, instructor notes, a video clip, and the .dxf file for the bracket shown above.   A zip archive of this material available to other teachers via our private Educators Forum. Please email for access.