We are attempting to make a robot which seeks out a candle in a maze and
blows out said candle once it is found. The robot is being designed in LEGO
pieces with the Handy Board as a controller. Overall, the goal is to create
an autonomous vehicle capable of finding and blowing out a candle in a maze.
This project will teach us the fundamentals of robotics and autonomous
This problem is fairly difficult because the candle is in a random
location in the maze. The robot needs to be able to navigate the maze, going
to all locations and then locate the candle and blow it out.
The candle has been put out in a few different ways. In the past, fans
have been used to blow out the candle. The candle has also been snuffed by a
candle snuffer and had water sprayed on it.
The robot will have to use multiple layers of control in order to
navigate the maze. This is something that Rodney Brooks describes in his
paper. Our robot will have two layers. It will have obstacle avoidance based
on bump sensory input. The robot will have a higher level of control which is
a wander behavior. Once the candle has been seen, the wander behaviour will
be replaced by a "go to candle" behavoir.
Since the robot will not have a vision sensor, it will be unable to do a
corridor following behavior like Polly. Instead, the robot will follow
corridors based only on bump sensor input.
We decided to make our robot with rear wheel drive. We geared the
motors down a signifigant amount based on our testing. Through testing we
also determined that adding powered front wheels was a bad idea because when
turning they ripped themselves off the robot. This is bad. We wound up using
skids in the front instead of wheels.
We added bump sensors to the front of the robot so that the robot can
have bump detection. Two bump sensors were used rather than one to allow for
sensing left and right bumps. These bump sensors extend beyond the width of
of the robot to allow for detection of objects near the sides of the robot to
avoid accidental collision.
Instead of using a fan to blow out the candle, we decided that the fans
were too weak. We instead designed our robot to run into the candle and
decapitating it, causing it to fall on the floor and go out. This also
simplifies the code because the robot does not need to know when to turn on
and off a fan, it just needs to drive into the candle.
Our robot also has a driver. We designed a chair for him keeping
comfort in mind. He has a left and right steering sticks in his hand so that
he can control the vehicle. He is the brains of our operation. His chair
unfortunately does not have an ejector seat, so if the candle falls into the
car, he is toast.
Progress and Performance
Above is a picture of the final robot. The robot extinguishes the candle by
running into it and knocking it over.
We also have a movie of our robot in action, getting stuck in a corner and
then getting out of it.
Our system performs well at navigating a maze. It is able to get itself
out of corners and other such issues which can arise when navigating through a
maze. Our system is not wonderful at locating and putting out the candle,
however. This is mostly due to the fact that the photosensors are not very
good. It is hard to get an accurate reading out of them and they tend not to
locate the candle except when very close. The fans were also
less-than-adequite at blowing out the candles.
The driver is obviously a a key factor in the success of the navigation
of the robot. As mentioned above, the key failures come from the hardware --
specifically the photo sensors and the fan. The key success in the
programming comes from the code which detects a corner. A corner is assumed
when a bump sequence of left-right-left or right-left-right is detected.
Better fans and better light sensors would make our system more accurate
at detecting the candle. If the light sensors were more consistant with each
other, we would be able to mount two of them and use the two light sensors to
help center on the candle. As it is, the light sensors are not consistant
enough with each other to do this.
Future work could be done on mapping the maze and/or better algorithms
for maze navigation. As it is right now the robot basically does a random
walk through the maze, knowing that eventually it will get to every location
in the maze. With a better algorithm this process could be sped up. Further
research could be also be done into determining other ways to blow out the