Precipitating Pachyderm v2.0
The Precipitating Pachyderm v2.0 is more or less the same as last year's robot but has a new smaller/lighter extinguishing system and totally redesigned electronics. Work was done to filter and calibrate sensors for better precision and to achieve better robustness and reliability.
We first took on this firefighting robot challenge for the 2010 Trinity College Firefighting Robot competition in April.
Having only decided in late February that we'd compete in April, we were on a tight schedule from the beginning. We managed to design and build a pretty awesome robot that worked a lot of the time. Unfortunately, because of the tight deadline, time for testing and programming was found wanting and The Precipitating Pachyderm's consistency suffered.
Now, in 2011 we'll be entering two robots: The Precipitating Pachyderm v2.0 and Jumbo Shrimp v1.0.
This pdf tutorial explains the process that was used to filter our flame detector.
In refining the power source / battery management circuits on the robot we came across some interesting findings.
Fun fact... a fully loaded Arduino (all pins in use) draws about .35A. That's a lot! Enough to drain some small batteries in the matter of a couple minutes or heat a 8V regulator to close to 100 degrees celsius.
Here's the math:
Using an ammeter the current draw on the Arduino in normal operating conditions was found to be 0.35A. In this configuration a 12V li-poly battery is regulated to 8V using an LM2930T-8.0 voltage regulator. The power dissipation of the regulator is therefore (12V-8V)*.35A = 1.4W. Reading through the spec sheet for the regulator, it was found that the case has a thermal resistance of 50 deg.C (above ambient)/W. This means that for every 1 W of power it dissipates, it will heat up by about 50 deg.C. For our case, we expect it to heat up 70 deg.C and to get to a final temperature close to 100 deg.C. This is still pretty well within it's operating limit but reassuring to know that it is expected to get really hot.
Using a super simple online battery-life calculator we determined that using our 1000mAh li-poly batteries we could expect about 2 hours of normal use before the batteries were dead. That's acceptable but definitely rules out using a small 9V to power the Arduino.
Last year's extinguisher worked great but was way overkill for what this small robot needed. We had basically just grabbed the CO2 pneumatic system from our failed 3lb battlebot and stuck it in The Precipitating Pachyderm with a little lasercut diffuser.
This year, in the interest of cutting down on extra bulk I decided to try out some CO2 bike inflators. These things are dead simple... just screw in a 16g CO2 canister and pull the trigger to release a burst of CO2. To have the robot pull the trigger I needed an actuator of some kind so I decided to use a hobby servo because I know them very well and they're usually pretty rock solid and reliable.
The first prototype used a small micro servo that was attached to the inflator via a cool material called Sugru. This worked okay but the servo didn't have enough torque to pull the trigger for the first few bursts (the trigger gets easier and easier to pull as the CO2 pressure inside the canister decreases).
So, for the second prototype I decided it would be easier to decouple the servo from the inflator with a simple pulley system. I also got my hands on a beefier/higher-torque servo. Below is a video of it pulling the trigger with full pressure in the canister.
Jonah Kadoko - Team Leader
Constantin Berzan - Lead Programmer
Will Langford - Manager/Organizer
Jeff Arena - Alternate
It came down to the wire but we were ultimately really happy with the robots' performance at the competition. The Precipitating Pachyderm managed to extinguish flames on two out of three trials (and would've taken out the first one too if we hadn't made a silly last minute coding error). Jumbo Shrimp came very close to putting out a candle but ultimately we just didn't have enough time to perfect it's code. This was in large part because the Friday before the competition we realized how difficult programming him in his current omni-directional drive state would be; for this reason, we converted him from a swerve drive (or omni-drive) to a standard differential drive by replacing one of the wheels with an omni wheel. With such a major last minute design change, we had to start coding again from scratch.
Along with the standard firefighting competition they also offered a written exam competition for the teams themselves. The Olympiad exam was an hour long and tested critical thinking in the context of engineering principles (ie. gear-trains, robot navigation + path optimization, sensors, etc...). We came in first and got a nice plaque we can now show-off in the Botlab (I think we also got some prize money but I'm not sure how much yet...).
- It's always a good idea to reflect on what we learned from the competition soon after finishing it. Here are some things we learned, things we want to try, and some general ideas for next year...
- Choose the algorithm first and then design the robot around it.
- Do thorough design reviews early to catch critical flaws before it's too late.
- Code early and design tests to validate performance.
- Path planning with encoders is something we'd like to perfect and use more in our code.
- Mapping (SLAM)
- Dual processors (have an Arduino that acts as a realtime controller responsible for low level motion commands like PID and another Arduino that does higher-level navigation and decision making or serial communication back to the computer)
use Xbee's early on for wireless sensor feedback (figure out how to upload code remotely) - this should very much improve the testing and coding process