K-12 Outreach!

2011 Robotics Competition PDF Print E-mail

March 17, 2011 at Florida A&M University
(Part of the ARTSI Student Research Conference)

Latest updates:
    3/04/2011: Updated Mirage files for the Simulation event. Do a "cvs update" to pick up changes.
    3/02/2011: Added instructions for the Simulation event.
    2/05/2011: Basic skills event: added ready-to-print tag files; added photos for each task.
    2/03/2011: Maze search event: added diagram of E-maze and updated the rules description.

Team makeup and registration: Teams may contain up to four members, at most one of whom can be a graduate student. All teams must register with the competition organizer, Professor This e-mail address is being protected from spam bots, you need JavaScript enabled to view it This e-mail address is being protected from spam bots, you need JavaScript enabled to view it , by March 10,  2011. Please supply the following information: school name, team name, names and years of all team members (up to four persons), and the event(s) in which the team will compete. Schools may have more than one team. Teans may enter more than one event. 

The competition will consist of three events:

Basic Skills Event

This event consists of three tasks demonstrating basic robot programming skills. Any team that successfully completes all three tasks will earn a certificate.

  • Task A: execute a predefiend path consisting of a series of straight lines and turns marked with tape on the floor. The path will be revealed at the competition. Each team will have to measure the path (bring a tape measure) and then program their robot to execute it. Multiple attempts are permitted.
    • Scoring: the robot must hit each waypoint within 1 foot.



  • Task B: make the robot follow a sequence of visual instructions. Each step consists of two 8x8 inch AprilTags: one that specifies a distance to travel (1 meter or 2 meters) and one that specifies a direction to turn after traveling (90 degrees left or right, or stop). The robot starts out facing the first pair of instructions. Executing these instructions will take it to the next pair. At each step, it must execute the distance part first, then the turn. The robot must execute all the instructions in sequence until it executes the stop instruction, at which point it must announce that it is finished. The instruction language is defined below:
    Tag 0            Go forward 1 meter
    Tag 1            Go forward 2 meters
    Tag 2            Turn left 90 degrees
    Tag 3            Turn right 90 degrees
    Tag 4            Stop

    A typical instruction might consistt of tag 0 plus tag 3, which means "go forward by 1 meter, then turn right 90 degrees, then look for the next instruction."
    • Scoring: the robot must hit each waypoint within 1 foot.
You can download a PDF file containing ready-to-print instruction tags here . You can tape these in pairs to cardboard boxes (see image below) to put an instruction sequence together. Use the AprilTest demo (in the ControllerGUI, go to Root Control > Framework Demos > Vision Demos > AprilTest) to make sure your robot can see your tags. You can ignore the distances reported by AprilTest; only the tag ids matter.



  • Task C: Find the hidden escape route. The robot will be placed in the center of a tiny "room" whose four walls are sheets of paper suspended from above. The robot will initially be directly facing one of the walls. Each wall will be marked with an AprilTag. Three of the walls will have heavy objects behind them, so when the robot pushes against the wall, its bump sensor will detect a collision. The fourth wall will have nothing behind it so the robot can simply push the paper out of the way. The robot must try pushing the various walls until it finds the escape route, then announce the AprilTag id (0, 1, 2, or 3) of the wall it got through. Each robot will be run several times, starting out facing a different wall each time. A run ends when the robot has escaped and announced its solution, or when 3 minutes have elapsed.

Room construction: use four wooden yardsticks (61 cents each at Home Depot). Tape a sheet of paper from an easel pad to each yardstick. Tape one of these escape tags to each sheet. Suspend the yardsticks from four chairs, as shown above. Place a large wastebasket on the outside of three of the four wals to block the robot from exiting in that direction.

Maze Search Event

This event will use the same E-shaped maze as last year , except with AprilTags in the 16h5 family instead of bicolor markers. Tags 0 through 19 will be used as navigation markers, as shown in the diagram below. The robot will start out in a random position and orientation. It must visit each of the three alcoves and record which object it found in each. The objects will be cubes with an AprilTag attached. Tags 20 through 29 will be used to mark objects; one tag per object, and one object per alcove. The objects will be changed from one run to the next. After visiting all three alcoves the robot must navigate to the reporting point (the center of the main corridor) and announce the object tags it found in the north, central, and south alcoves, in that order.





Maze layout: The maze is 78 by 96 inches. The alcoves are 30 inches wide and 46 inches deep. The main corridor is 32 inches wide. All the  walls are 20-24 inches high. The walls between the alcoves are 3 inches thick. See the diagram above for full dimension information. Also see the wiki article on Maze Construction . Construction tip: to make the two 46-inch interior walls, start with an 8 foot (96 inch) sheet of Plasticor. Make a deep cut at 46 inches and another deep cut at 49 inches, then bend the cuts at right angles to form a wall section. Cut off the excess 1 inch at the end, and attach the interior wall to the east wall of the maze using velcro.

AprilTag placement:  The centers of the navigation markers (AprilTags) must be exactly 7 inches above the floor. Tags 0 and 4 are 8 x8 inches; all other tags are 6x6 inches. The tags on the cubes are also 6x6 inches. The sequence of the tags is shown above.

Maze definition files: A Mirage world for the maze is available, and was used to generate the first two images above. You will find it in /usr/local/Tekkotsu/tools/mirage/worlds/Emaze.mirage. There is also a Tekkotsu demo program that  sets up a map of the maze in the world shape space for use by the Pilot; see Root Control > Framework Demos > Navigation Demos > Emaze. The Emaze demo is built on the PilotDemo class; see the PilotDemo documentation in the Tekkotsu wiki for information on how to use it to drive the robot around. Using Mirage and the Emaze demo will make it easier to debug your code, but final testing shuold be done using a real robot running in a real maze.

Tutorial information: If you're new to Tekkotsu programming, go through the labs on the Mirage simulator, the Pilot and odometry,the Pilot and localization, and AprilTags. For communication between state nodes you will want to use the $provide/$reference state machine directives; see the articles on state machine programming on the Tekkotsu wiki.

Start and duration of the run: Each robot will be deposited at a random location and orientation in the main corridor.  Once the run starts, there may be no operator contact with the robot.  The run ends when the robot has reported its results, or when 5 minutes have passed.


  1. Alcove entry: 10 points for each alcove visited.  A "visit" means proceeding all the way past the pink line at the entrance to the alcove, so that no part of the robot overlaps the line.  Multiple visits to the same alcove incur a 5 point penalty.

  2. Object announcement: 10 points for correctly announcing the object and the robot's location, e.g., "tag 23 in the north alcove".  Robots should use both speech (if available) and a printed console message to make their announcements, in case the speech is difficult to hear over the crowd noise.  If only the location or only the object tag is correct, 5 points are awarded.

  3. Final report: when all alcoves have been visited the robot must end up in the central corridor next to tag 2 and announce the sequence of three tags in order from north to south.  10 points for stopping within 2 feet of tag 2 (the tag at the center of the main corridor)  to report.  5 points for making a correct report.

  4. Speed: in the event that two teams earn equal scores, the team with the shortest run time will be declared the winner.  Thus, fast solutions are important, but being correct is more important. 
Prizes will be awarded for the top-scoring teams. 

Simulator Event 

This event will be done in simulation, using Mirage. The task is to solve the 3-puzzle, a simpler version of the famous 8 or 15 puzzles used to teach heuristic search in AI. The 15 puzzle uses tiles with the digits 1 through 15 randomly arranged on a 4x4 grid with one empty space.  Each legal move consists of sliding a tile either vertically or horizontally  into the empty space, which leaves a new empty space behind. The goal is to arrange all the digits in sequence.

For the competition, we will use cubes bearing the AprilTags 1 through 3, and a 2x2 grid..  Each cube must occupy a unique square all to itself, and one square must always be empty. The robot must push cubes from square to square until it has them arranged in the proper sequence, i.e.,  cube 1 must be in square 1, cube 2 in square 2, cube 3 in square 3, and nothing in square 4.

The Mirage world for the puzzle can be found in /usr/local/Tekkotsu/tools/mirage/worlds/ThreePuzzle.mirage. If you zoom in one of the cubes you will see that there is a tiny number 1-3 written on each one, matching its AprilTag.

Instead of the Create/ASUS robot, you will use the CalliopeNoArm robot (a Calliope without an arm) for this task. The robot has a pan/tilt, and the camera is mounted higher than on the Create/ASUS robot, making it easier to see the game board and the cubes. This simulated CalliopeNoArm has been configured with a pusher bar to make it easy to push cubes around.


A demo program called ThreePuzzle.cc.fsm is provided to help you get started. This program makes an illegal move (pushing a cube into a square that is already occupied), and then makes a legal move. For your solution, you should only make legal moves.

To compile for the CalliopeNoArm robot, say "make tekkotsu-CALLIOPENOARM", or edit your project/Environment.conf file to change the default target architecture to TGT_CALLLIOPENOARM.

Note: the starting state of the puzzle is fixed. So the easy way to solve this puzzle is to figure out the correct moves yourself,  then write a state machine to make exactly those moves. If you do this, the team with the fastest correct solution will win first place. However, if any team manages to produce a solution that works for any starting state, they will automatically win first place. This is a much harder problem, and probably won't be solved this year, but by next year it will be easy to solve.

For technical questions about the competition, contact This e-mail address is being protected from spam bots, you need JavaScript enabled to view it .