IC Robotics Competition - September 3, 2007

Watch this space for important updates:

Introduction

The Robotics Institute is an academically diverse place; the truth is, sometimes people can spend quite a bit of time here without getting their hands dirty working with real robots. To address this, we present the second annual Immigration Course Robotics Competition.

Working in teams of three, you will be presented with a task which you must design and build a robot to solve. We will be using Lego Mindstorms with the RCX block for robot control. Programming will be done with the NQC programming language.

When forming groups, we will try to balance out individual specialties: ideally, each group should contain at least one experienced programmer as well someone who is mechanically inclined (or at least has experience with Legos).

Schedule

Task and Rules

Your robot has been stranded on a floating platform in the South Pacific, and needs to cross to a nearby platform in order to acquire better satellite TV reception. Unfortunately, the surrounding water is infested with robot-eating sharks! Your task is to help your robot construct a pontoon bridge in order to safely cross the gap.

Your group will have access to two 18"x36" foam platforms as well as a 6"x6" foam block which can be used to bridge the 7" gap. Using your mindstorms kits, you must design, build, and program a robot which can autonomously pick up the block, drop it in the gap, and cross between the two platforms.

Fortunately, both the platforms and blocks are instrumented with colored stripes which can be used along with Lego light sensors to guide the robot into position for pickup, dropping, and gap crossing.

Competition Rules:

Hints and Tips

About Lego Motors

The Lego motors are actually quite powerful little geared motors (although they do have plenty of inertia). The RCX commands the motors using an H-bridge motor controller. This means that a motor can be in one of four states: forward and backward (obvious), locked, or floating. A locked motor uses electricity to actively resist motion, whereas a floating motor is only slowed by friction. You can also program the RCX brick to change each motor's duty cycle to change speeds without totally stopping or floating the motors.

Sensors

We have three types of lego sensors: rotation sensors, light sensors, and touch sensors. If the light sensors are mounted close to a surface (such as our newsprint), they can distinguish between different colors (like the two tones on the platforms and blocks). The light sensors are more invariant to changes in natural lighting when they are mounted closer to the paper or underneath the shadow of the robot.

Don't forget to tell the NQC what kinds of sensors you are using when you write your program.

          SetSensorType(SENSOR_1, SENSOR_TYPE_LIGHT);
          SetSensorType(SENSOR_1, SENSOR_TYPE_ROTATION);
          SetSensorType(SENSOR_1, SENSOR_TYPE_TOUCH);
        

Gear Ratios

This is just like your bicycle or your car. Remember: small gear driving a big gear gives high torque, low speed. Big gear driving a little gear gives low torque, high speed. Also, don't overlook belts and pulleys for doing various tasks.

Grippers and Motor Speeds

The reference design below features an excellent gripper design by Jason Geist. The gripper is quite controllable, but may rip itself apart if you drive it past its mechanical limits. In order to make sure the motor stalls out instead of breaking the robot, make sure you set the motor to have a low duty cycle:

          SetPower(OUT_A, OUT_LOW);
        

Weight and Balance

Because this is a manipulation task, your team will need to pay some attention to weight and balance. If your design seems to be unable to move around the foam block, or if you have trouble crossing over the gap, try redistributing the weight of your robot, relocating casters or skids, or fiddling with motor speeds. Also, feel free to ask an organizer for adivce.

Construction Ideas

Lego construction for robots might be a little bit different than how you use to build houses or spaceships with Legos as a kid. The main thing to remember is that it's usually better to assemble rigid frames of pegged-together Technic-style pieces than it is to simply stack Legos together using the normal Lego adhesion style (see an excellent introduction to the principles of good Lego Design and the definitive Art of LEGO Design by Fred Martin). Probably the most popular design is the differential-drive robot -- the robot described below is differential-drive.

Reference design

Here are instructions for building a simple differential drive robot with gripper attachment. Even if you don't want to build this particular robot, you might want to crib the gripper design.

Programming Ideas

This example code demonstrates a basic approach to solving the task in NQC.