

Believe it or not, my fourth year thesis project involved building a robot out of Lego. I designed, built, and programmed a firefighting robot. The competitions the robot was designed for simulate autonomous robotic firefighting in a small building. The robot had to search through four rooms in an 8' x 8' area, locate a flame, and extinguish it. Obviously the robot couldn't be expected to but out a blazing inferno... it was only a candle flame. The rules of the competition are designed to encourage realistic solutions to this problem. Points were deducted if the robot hit the walls, since this is not a valid way to navigate in the real world. Also, bonus points were given if the robot could start at the sound of a buzzer, simulating a fire alarm.
|
The competition floor plan. The robot would start in the circle marked 'H' and look for a flame in each of the four rooms. |
![]() |
My first idea was to build a tricycle base. The front wheel was both driven and steerable. |
![]() |
Navigation with this base was fairly complicated, and prone to error, so I scrapped the idea pretty early on. |
![]() |
My next idea was to build a synchronous base. It is fairly straightforward to build this type of advanced mobility system with Lego, and it offers several advantages. Since the driving and steering are independent, the robot can navigate with a higher degree of accuracy, and make corrections "on the fly" which was advantageous in this application. |
![]() |
The main disadvantage of a synchronous base is that only the wheels turn, and the base never changes orientation. Real robots that use this configuration usually have a ring of sensors that surround the entire robot, so no matter which direction it goes it can detect obstacles. Not having nearly enough I/O, I had to resort to a mechanical solution: rotate the sensors on a turret. This worked, but it made for a LOT of twisting wires! |
![]() |
Standard Lego sensors were not sufficient for the firefighting robot, especially for obstacle detection. Fortunately, John Barnes who used to build custom sensors for Lego robots was a great help in this area. He made an IR proximity sensor (blue) for obstacle detection, and a passive IR sensor for detecting the flame (white). |
![]() |
My first design for the synchronous base had the motors mounted on the wheel assembly. Advantages to this approach are that the wheel doesn't have any turn induced by the gearing when it is steered. It is also usually a simpler assembly. |
![]() |
The disadvantages are that the motor must ride with the wheel, so the driven/steering wheel assembly is bulky and the wires get tangled. |
![]() |
This picture shows how the wheels all turn in relation to the base. In this case only the two side wheels were driven. The light sensor in the middle was used to detect markings on the floor that signified the entrance to a room. |
![]() |
This rendering shows the steering gear train. The green gears are the inputs. |
![]() |
I also experimented with an alternative synchro design that uses offset wheels. The key is to use a clever combination of wheel diameters and gear ratios. Here I used an o-ring to make a very thin tire for the large pulley. |
![]() |
With the offset wheel design, the gearing does force the wheel to turn as it is steered, but the idea is to tweak the parameters (wheel size, gear ratio, wheel offset) so the wheel will actually trace out the correct arc when steered so the base doesn't move. |
![]() |
Here is another design that used larger wheels. Thin wheels work best since they follow the arc more precisely when steering. |
![]() |
A picture of this design used in a prototype. The main advantage to using offset wheels is that the drive motors remain fixed in the base. Unfortunately I found that stability was a problem, especially with the large wheels. |
![]() |
All of the twisting wires on the sensor turret got to me, so I tried to make a Lego compatible slip ring. |
![]() |
I used a phone cord detangler for the rotating electrical connection, and modified it to fit in the center of a turntable. |
![]() |
John Barnes sent me this schematic showing how to power three sensors though the slip ring. Unfortunately I needed to power the sensors and a motor for the fire extinguisher which was originally a fan. |
![]() |
This is the final version of the robot. You can see I reverted back to the original synchro wheel design. I did change the gearing so the robot was much faster, both in driving and steering. I also connected two flame detection sensors in parallel to increase the sensitivity. |
![]() |
I modified the gearing of the previous design to make the base wider. This allowed me to mount the steering motors underneath the robot. |
![]() |
This rendering shows the steering gear train. The motors were connected to the red gears. |
![]() |
The back of the robot showing the tanks and compressor for the extinguisher. My plan was to fill the tanks with water and spray it out by pumping air into the top of the tanks. I never got a chance to do this since this project got cut short suddenly when I broke my leg. |
I entered the black version of this robot into the Eastern Canadian Robot Games, which was held at the Ontario Science center in November 2002. You can see this robot in action on my videos page. Considering I had just barely gotten the program working, I was quite surprised to place second. The navigation routine worked very well, but I was having trouble reliably detecting the flame. Good thing it was the best round out of three. I gained a lot of help and advice from the other competitors. After this event, the plan was to improve on all of the weak areas of the robot, and prepare for the international firefighting robot competition in Connecticut. This is what I spent a lot of time doing throughout the school year. Unfortunately, I broke my leg near the end, and was unable to continue work on the robot or enter the international competition. This might have been for the best, though, since the robot was fairly unreliable at that point, and it was stressing me out. I would still like to enter the firefighting robot competition sometime, but I will definitely not use RCX's. I immediately had to use two of them, providing six sensor ports, but the fact that the robot had two independent brains created a new set of difficulties. The RCX's communicate via IR, but it is quite slow. Imagine running around a room blindfolded and hoping that your friend will tell you when you are about to hit a wall.
I could go on and on about this robot since I spent the better part of a school year working on it. I haven't gotten into the programming aspect of it which was quite interesting (using BrickOS), the feedback control, or the details of the custom sensors. If you are curious and want more information, just send me an email. Heck, I could send you my whole thesis report if you like :)