Harvey Mudd College
Computer Science 154 - Robotics
Assignment C

Lab #3 write-up
SooYoung Jung

Fire-fighting contest


Because of the popularity of the annual robocup soccer competition, an effort is underway to generate large-scale interest in other robotic tasks -- in particular, marketable ones. For instance, this year's robocup will include a search-and-rescue component. In keeping with this trend, your task in this assignment is to build and program a robot that can rescue a victim from a burning house. In addition, because two lab groups will be working on this project at the same time, we will add a bit of (friendly) competition to the task, running the two robots head-to-head at the time the assignment is due. (The inspiration for this assignment is a yearly fire-fighting competition at Trinity College in Hartford, CT.)

Task specifics

At the end of this lab assignment, we will fashion a "house" in the center of the research lab (BK120) consisting of rigid walls and obstacles. The layout of the house will not be known beforehand, but teams can count on the following:

Here is an example of a bird's-eye view of one possible environment (about 8' x 8'):

Some part of the house will be set on fire. Rather, to simulate this, a lit candle will be placed on top of a six-inch platform either against a wall, in a corner, or between two walls in the house. Thus, the height of the flame will be six inches plus whatever the height of the candle is. (Leeway will be made to raise or lower the candle if it's the "wrong" height for a particular mechanism a team has constructed.) The robot will start in one of the four corners of the house and will be aligned initially with the walls. The goal of the robot will be to seek out the candle and extinguish it. Keep in mind that this is the highest-level goal -- other goals include maintaining the robot's health and keeping it from getting stuck.

Warnings These are general cautions that you should keep in mind throughout this lab project.


The computational brains of the robots are MIT's handyboards, based on the 68HC11 microcontroller. Each team will have one handyboard (again, for which they are responsible) and a copy of Fred Martin's technical reference for the handyboard. In addition, each team will have at least

There are spare sensors and, perhaps, motors. Teams may use those as they see fit. Finally, there is a pool of lego blocks with which to build the body of the robot. These need to be shared between the two lab groups working on this project.

Interactive C

The programming environment available for the Handyboards is Interactive C, for which an online reference is available, as well as documentation in the Handy Board Technical Reference.

What to do...

The first thing to do is to read the handyboard technical reference. This is a must as it explains everything you will need to know about the board. It is available here in PDF format. In particular, be sure you understand how to keep the board charged. You should leave your board in trickle-charge mode when not using it. For safety, I would advise avoiding "zap" charge -- forgetting that a board is "zap" charging can fry it.

From there, the project is wide-open. Some things to consider (and references):

The Contest

On the day the assignment is due (or the day after), each team will need to schedule a time to demonstrate their robot's search-and-rescue performance. There will be at least three trials for each robot on its own.

The first trial will involve a setup like the one below. This maze will be available for testing at least a week before the end of the project. The robot is indicated by the green rectangle (positioned upper left, facing toward the wall at the bottom of the diagram), and the candle is represented by the yellow circle (in the middle on the right).

The second trial will involve a similar set up, in that the maze and robot starting position will be identical, but the candle will be in an unknown location in the maze.

The third trial will involve an unknown maze (though not substantially different from the one depicted above) and unknown positions for the candle and robot.

Finally, if it seems feasible with the robot designs that the teams have created, there will be a head-to-head run with both robots located in an unknown (but symmetric) environment at equal distance from the candle.

In each case, the robots will be judged according to these criteria:
  1. Does the robot drive without getting stuck or endangering itself?
  2. Can the robot find the candle and indicate that it knows that fact?
  3. Can the robot extinguish the candle?
  4. How quickly can it do so?
Grades on this assignment depend only on a team's design and programming for their robot, not on the results of the contest.


In your write up, be sure to include at least a paragraph on each of the following items:


Problem Approach and description of program

Since there were not much sensors (I tried to limit the sensors and motors as the project described) and smarter stuff that I can use in this project, I decided to use an algorithm as simple as possible.

The algorithm goes like follow:

The robot will wonder the maze until it finds the candle.  If the bump senses while wondering, it will avoid against to the wall or obstacle and wonder again.

When the IR sensor detect the flame, the robot will make left-right align, and move closer to the candle and make left-right align again to the flame and extinguish the flame.

Source code: sy.c

Extinguisher in action : ~~~.mpg


Characteristics of my robot and some pictures

Before the spring break, I tried to build the body, but it was my first time use lego, so it was not really easy to figure out which is for which.  So I built over spring break and it took some times to figure out the function of lego parts.  The robot was composed with following:









Left side

Right side



Top view




Firstly made 4 wheels robot with powered both side of back wheels but when it makes turn, it shakes because of too much of friction from the wheels.  The final verion has only two wheels with both powered and round things (not sure the realy name) at the front and back to reduce friction.



Handy board



Front touch sensors



Fan and two light sensors on each side
Two light sensors are covered by lego blocks so it can really detect the flame of the candle.



Closer picture of light sensor and IR sensor at the fan



Light sensor is located at the center of circle



Problems and solutions

The most problem for this project was aligning the robot to the flame.

The first approach was using two light sensors to make the robot left-right align to the candle.  However, the light sensors were not good to detect the candle location so I gave up with them and changed whole alignment function.

The second approach was using IR sensor to align to the flame and it worked much better than light sensors.  The robot will turn left and right and store the value of previous IR sensor (before making turn) and current one (after turing).  These two values were compared and used to make the robot align to the flame.


Final evaluation of my robot

The robot detects the candle well and the speed is pretty fast.  Moreover, the alignment was very accurate.
However, it was not smart enough to detect candle faster.  It just wonders the maze until it randomly detects the candle.   I firstly thought that I will put one IR sensor on left so I could use wall following algorithm or maybe other algorithms.  But I felt that the IR sensor isn't too good to detect the wall and because of the fault of motor (different power of motors for same input), I just decided to make the robot wonders with a lot of luck until it finds the candle.