The Dallas Personal Robotics Group (
DPRG) have built a very nice robotic
firefighting course patterned after the
Trinity Firefighting
Competition. In this contest, a robot must find and
extinguish a candle placed randomly in a sort of miniature house.
The floor plan and dimensions of the house are known in advance, and
consist essentially of four rooms separated by hallways. The
specific dimensions, along with the rules of the competition, can be
found on the Trinity college
website.
Navigating the Maze
The DPRG has setup their firefighting course at the
DPRG World Headquarters ("the
warehouse") where the club meets for Robot Builder's Night Out
(RBNO) on Tuesday evenings. On a series of Tuesdays I've been
playing around with LegoBot on the contest course, and determined that
LegoBot is able to navigate the course, that is, visit all four rooms,
simply by doing a right-hand wall following behavior
. The course is
ostensibly designed to make this difficult, by situating one of the
four rooms surrounded by hallways, thereby serving as a "trap" for
simple wall following robots. However, a subtlety of LegoBot's
wall following behavior allows it to handle the course without
modification of its algorithm, with a simple adjustment of the gain of
the IR obstacle avoidance sensors. This behavior is easily
observed in the videos referenced below. For more detail on the
LegoBot wall-following behavior, see the
LegoBot
webpage.
Extinguishing the
Candle
The common wisdom seems to be
that
the quickest and safest way to extinguish the candle is just to blow it
out with a fan. I "liberated" one of the two steering fan
assemblies from an old
TYCO R/C hovercraft toy.
The assembly consists of a powerful 9.6 volt DC motor and an
attached three-bladed propeller, all contained in a nice nylon fan-cage
(to protect young and not-so-young fingers). The fan is
powered from the robot's 12 volt motor battery, and can extinguish a
candle flame or match from about 5 feet away!
(However, the rules require close proximity to the candle before
blowing it out.)
The fan motor, as driven from LegoBot's 12 volt battery pack, draws
about 4 amps, which is far too much current for the SGS L293D H-Bridge
on the robot's expansion board that I had been planning to use to
control the fan. Instead, I found a suitable 5 amp relay among
the electronic detritus on my workbench, and arranged to drive the 5
volt relay coil from a transistor LED driver on the robot's
expansion board. The relay can be seen in the photographs as the
small, blue box that is attached with a cable-tie to the plastic
horizontal support member, next to the fan motor. It has six
wires connected to it; a pair (power and ground) for 12 volts
from the battery, a pair for 12 volts to the fan, and a pair for
control of the relay. The other wires consist of a 4-wire ribbon
cable for a pair of CdS cells, and a 3-wire ribbon cable for the
ultraviolet flame sensor.
The blue plastic horizontal structural
member was a piece of scrap plastic I had in the junk box. It was
drilled for a mounting hole to mate with the hovercraft fan motor unit,
and attached to two Lego uprights using cable ties at either
end. In this way, the firefighting "module" can be
added/removed from the LegoBot by just connecting the two uprights and
plugging in the fan and sensor wires. This is a trade off,
because the firefighting module is not protected by LegoBot's full
coverage front bumper, so the robot cannot be allowed to wander around
outside of the firefighting course with the module attached, lest it
get torn off. The module is only attached while the robot
runs the competition.
Sensing the Candle
With
the LegoBot able to successfully navigate the maze and visit every room
without touching the walls (well... hardly ever!), and the
hovercraft fan module under control of the microprocessor, the next
challenge is to know when to turn the fan on and off. After
some experimentation, it became apparent that the candle flame, at
least to a first approximation, is the brightest thing in the
maze. A pair of left and right facing CdS photocells were added
to the fan module, and a simple photo-attract behavior was added to
LegoBot's repertoire. The photo behavior is divided into three
variable segments, based on absolute detected brightness, that, 1)
acquire the flame, 2) suppress the wall following behavior, and 3)
activate the fan, respectively.
The image shows the CdS cells mounted directly to the fan, underneath a black cardboard
hood. The hood prevents the CdS cells from "seeing" over the walls of the
contest course, ceiling lights, etc.
This method for sensing the candle works robustly about 75% of the
time. The other 25%, it is fooled by bright ambient lighting
conditions in the room. For example, it would attempt to
"blow out" a bright beam of sunlight striking the course
wall.
After a few weeks of experiments, a
Hamamatsu UVTron flame sensor package
ordered from
Acroname
was fitted to the blower module. This device and it's driver board
produce a 10 ms pulse about three times per second in the presence of a
flame, and it really works remarkably well. The UVTron tube is
enclosed in a modified black plastic film canister to restrict its
field of view, and attached directly to the top of the hovercraft
blower motor housing.
The photo behavior does a logical AND of
the Hamamatsu flame sensor and the fan activation signal generated by
the CdS cell readings, so that the fan can only be triggered in
the presence of a "real" flame. The robot still triggers on
bright reflections on the wall in the presence of the candle, from time
to time, but the robot continues to search for the candle as long as
the flame sensor indicates its presence. Only by blowing on
the real flame will the detection go away, as the candle is actually
extinguished. The third video shows this behavior, as the robot
is briefly fooled by a bright reflection from the wall as it enters the
room with the candle.
Videos from
21 March 2004
The robot is supposed to begin the contest on detection of a
smoke alarm signal. LegoBot currently does not have this
capability, and so I just start it manually by pushing a button, as
shown in the following videos. The robot can also garner
extra points for returning to the point of origin after finding and
extinguishing the candle, which LegoBot is able to accomplish.
It keeps track of its position using wheel odometry, and turns itself
off once it gets back to [0,0] after a flame has been exinguished.
But drift
in the odometry makes the robot sometimes not able to come to a stop.
Gary Teachout from the SRS group told me that he resets his odometry
after the flame is extinguised, by measuring the distance to the local
walls using
proximity detectors. I do something similar with sonar on the
SR04 robot,
to square up to the walls and reset odometry. I may need to do something similar
for the firefighting course.
Of the runs that I have recorded on video, LegoBot
failed during the return to origin, in some manner, on each of the
attempts. Also touched the walls on each attempt (probably bright
reflections from the beautifully painted contest course), but did
successfully locate and extinguish the candle on each attempt.
More to come...
firefight 01 - full res mpeg (13 Mb)
firefight 01 - low res mpeg (6 Mb)
firefight 01 - windows wmv (3 Mb)
firefight 01 - real media (1.5 Mb)
firefight 05 - full res mpeg (17 Mb)
firefight 05 - low res mpeg (7 Mb)
firefight 05 - widows wmv (3,5 Mb)
firefight 05 - real media (2 Mb)
firefight 02 - full res mpeg (20 Mb)
firefight 02 - low res mpeg (8 Mb)
firefight 02 - widows wmv (4 Mb)
firefight 02 - real media (2 Mb)
firefight 06 - full res mpeg (16 Mb)
firefight 06 - low res mpeg (6.8 Mb)
firefight 06 - widows wmv (3,3 Mb)
firefight 06 - real media (2 Mb)
Return to
LegoBot's Homepage
Return to
My Robot's Homepage
27 Mar 2004
dpa