Recently some colleagues and I participated in the Robô Bombeiro 2013 (Firefighter Robot) competition, which has been organized by the Guarda Polytechnic Institute for 11 consecutive years. The objective of the competition is to build a robot that is able to navigate in a maze-like environment, find a fire (which is represented by a candle), and extinguish it. Participants are free to choose whatever design they want for their robot, and how they want to extinguish the flame. The environment has 4 rooms which are connected by corridors. In the entrance of a room there is always a white line that the robot can detect. The configuration of the environment can change, for instance, certain doors might be placed in a different location and an obstacle (represented by a sheep) can block a corridor in one of three places.
There are several different modes that a team can choose to participate in for extra points. In one of the modes, for instance, the robot must start its mission after it detects a sound with a certain frequency, instead of waiting for the push of a button. In a different mode, the robot must start and end in a random room, instead of the the regular white circle. The competition had 22 teams in the high school league and 24 in the university league. Our robot, IEEE Firefighter, competed in the university league, and our team was composed of seven BSc, MSc and PhD students. It was our first robotics competition and we had only one month to prepare. Due to the lack of time, we took the easiest route: we built our robot using the Lego Mindstorms NXT. Our robot was equipped with a rotating turret that enabled it to quickly scan a room for a candle with two infrared/flame sensors, three sonars for obstacle avoidance, a color sensor to detect the lines at the entrance of the rooms, and a fan to put out the fire. Due to the NXT’s limited sensor and actuator ports, we added an Arduino with a Bluetooth module, which controlled the two flame sensors, a microphone, a couple of buttons and the fan.
Things started going badly as soon as we got to the venue. The conditions we tested our robot in proved to be quite different from the real thing. The environment’s floor gave us some headaches because of our robot’s tracks, and the 35º Celsius in the gym were messing with the infrared sensors. We also had to tweak our algorithm because of the “sheep” obstacle, since we kept knocking it down. After spending the whole morning changing things, we had to hand in our robot to the judges.
There were a total of three rounds, and every robot had to be tested. This translated to roughly 90 minutes per round. I wasn’t expecting it to be such an intense experience! Waiting for your team’s name to be called out, and then hoping that both your algorithm and hardware work perfectly is totally nerve-wracking. Usually in other types of competition, such as sports, you are in direct control of your actions and you can affect the outcome of a match. In this case, we simply had to observe as our little robot did what we programmed it to do.
In the first round we were able to quickly put out the fire and ended up in a surprising first place. In the second round, we were successful at putting out the fire but unable to return to the starting position. This placed us in the 2nd overall position. The third and final round was a disaster for us. Our robot crashed on its way to the candle and it kicked us all the way back to 7th place. We were a bit sad at first, but we quickly bounced back – it was a great result for our first try. Next year we’ll try to enter the competition again, but with a few kinks ironed out. A huge thanks to the team! Here’s a group photo – Adriano, Paulo, moi, Mário, Tiago, Carlos and Vasco. See you next year, Guarda!