K-12 Outreach!

2012 Robotics Competition PDF Print E-mail
March 22, 2012 at Norfolk State University
(Part of the 2012 ARTSI Student Research Conference) 

Latest Updates:

  • 3/12/2012: added the tags to be used for challenge task B:  here.
  • 2/22/2012: added a Mirage world called Canisters and a file CreatePaddles.kin to allow simulation of the object pushing task in Mirage. Do a CVS update to pick up these changes; more detailed instructions are below.
  • 2/21/2012: improved line extractor (do a CVS update); demo program  for canister pushing
  • 2/20/2012: added a Mirage Tips  page to the wiki
  • 2/16/2012: added some vision advice to the Object Pushing event
  • 2/15/2012: added link to Mirage lecture notes and advice about dealing with a WorldBuilder error message.
  • 2/6/2012: Calliope manipulation event added.

Organizational Details

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 , by March 10,  2012. 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. Note: teams should register early in order to receive the special "paddles" required for the object pushing 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 at least one of these 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 six inches (one robot radius).



  • 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, forward or backward) 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. This is similar to last year's task, except that this year the two directions at each waypoint must be performed in the order that they appear, e.g., if the turn direction appears to the left of the travel direction, then the robot must turn first and then travel. But if the turn direction appears to the right of the travel direction, the robot must travel first and then turn. Also, this year the travel instructions will include backward travel as well as forward.  Students are encouraged to look at the TagCourse Demo for the solution to last year's problem and use it as a starting point. The set of tags to use are provided here.

  • Task C: design a Mirage world and program your robot to move through it. Your world could be a maze, or a simulated city, or a robot "obstacle course". Each world should have at least one cool or complex feature, such as a winding path the robot must follow, or a ramp the robot can drive off of. See this YouTube video  for example. (But you don't have to be that fancy.) You can program a fixed path for the robot since it always starts at a known location. See the Mirage lab  and the Mirage simulation environment page on the Tekkotsu wiki for information about how to get started using Mirage. Also see these lecture notes and the Mirage Tips  page. Use the Mirage world builder to construct your world.

    Note: if you run the WorldBuilder and get an error message about not being able to find the polyglot package, it's because you're using an old install of the Tekkotsu framework with a newer version of the WorldBuilder. You can fix the problem by doing:

        sudo gem install treetop

    Stack of blocks in Mirage


Object Pushing Event


This is the main competition event, designed for basic Calliope (formerly Create/ASUS) robots with just a Create and a netbook. We're going to enhance the robot by adding two aluminum paddles that allow it to push objects around, as seen in the photo above.

The task: Five red canisters will be scattered around a 2-by-2 meter space. Near the center of the space is a 0.75-by-0.75 meter "pen" drawn with blue masking tape. The robot's job is to locate the canisters and push all of them into the pen as quickly as possible, with a 5 minute time limit.

Scoring:  The team that gets the most canisters into the pen within 5 minutes is the winner. If more than one team gets the same number of canisters into the pen, then the team with the fastest time wins. To be considered "in" the pen, the canister must be completely inside the blue lines, i.e., there must be space visible between the canister and the lines. Canisters that are touching a line count as a half-canister.

Materials: The canisters are 11.5 ounce Folger's Coffee containers with the labels removed, available at any grocery store. (You may also remove the coffee to reduce the weight, making them easier to push.) The masking tape is Pro Tape 1 inch blue Artist Tape, which we will send you when you register your team with Professor Rogers. The tape is also available directly from Bulbtronics. This tape is also available in 3/4 inch width from Blick.

Paddles: The aluminum paddles are available to all ARTSI schools. When you register for the competition, tell Professor Rogers how many robots your school has, and we will send you the appropriate number of paddles. We will also be distributing paddles at the ARTSI conference for schools who aren't participating in the competition but would like to use them for other projects.

Strategy: You can use basic Tekkotsu vision and motion primitives to solve this problem, but we have some spiffy new features involving the Pilot that should make the task much easier. Check this page weekly for updates. 


Vision hint: you can detect the canisters by looking for red blobs. If you declare the blob orientation as "pillar" then the MapBuilder will correctly estimate the distance to the canister, provided you "calibrate" the camera first by tilting the top of the netbook to the correct angle. Here is sample code for extracting blobs this way.

  $nodeclass TakeImage : MapBuilderNode(MapBuilderRequest::localMap) : doStart {
     mapreq.addBlobOrientation("red", BlobData::pillar);

Update:  There is now a demo program  for canister pushing that you can use as a starting point for your own code.

Using Mirage: You can now use Mirage to simulate the object pushing task. (But the actual competition will be done with real robots, so be sure to test your code on a real robot and not just in Mirage!)  A new Mirage world called Canisters.mirage (source file Canisters.ian) has been created for this purpose. To simulate the paddles, you will need to replace the file project/ms/config/Create.kin with project/ms/config/CreatePaddles.kin.  You can use the Linux cp command to do this. The original file without the paddles is available in project/ms/config/CreateOriginal.kin. Do a cvs update to pick up these new files.


Calliope Manipulation Event

This event is for schools who have a Calliope robot. (Currently these are: Hampton, UDC, FAMU, Norfolk State, Winston-Salem State, and Jackson State. We expect to provide Calliopes to additional schools in the future.)

The task is to pick up a small container (a pill bottle) and drop it inside a larger container (a coffee mug). The rules are:

  • Each team can supply its own pill bottle and coffee mug.
  • At the start of a run, the two objects will be randomly positioned by a judge, but they will be easily visible to the robot; it won't have to hunt around for them.
  • Teams may mark their containers with colored tape, AprilTags, or similar devices to make them easier to find.
  • The inside diameter of the coffee mug may be at most 3.5 inches. (You can't use a soup bowl!)
  • The robot must grasp and lift the pill bottle using the fingers of its arm. It cannot use magnets, hooks, adhesive tape, or other tricks to capture the pill bottle.
  • Each team gets 3 attempts.


  • 5 points for touching the pill bottle with a gripper finger.
  • 10 points for lifting the pill bottle off the ground.
  • 10 points for positioning the gripper so that any part of the pill bottle is above any part of the coffee mug.
  • 25 points for successfully depositing the pill bottle in the coffee mug.
  • Total score is the sum of the scores for all three runs.
  • In the event of a tie, additional runs will be assigned.


  • Robot setup: see the Calliope2SP install page for how to install your arm and configure the software for your Calliope robot.
  • Using a heavy ceramic coffee mug is helpful because it won't fall over if the robot runs into it.
  • You may want to add some weight to the pill bottle to make it more stable.
  • If you close the gripper too tightly, the servo gets a "load error" as indicated by a blinking red light. You will need to find the gripper position  that works best for the pill bottle you select: not too tight (to avoid a load error) but not too loose (to avoid dropping the pill bottle).
  • If a load error does occur, click the "Relax" button on the Arm Controller and then Unrelax. The error will clear in a few seconds.
  • You can use posture files to record particular arm and gripper positions you want to employ. You can use motion sequence files to string postures together to make gestures such as grasping and lifting an object. Another way to accomplish the same thing is to use an ArmNode and program the joint angles directly.