This was the very first project which helped me start my company, M1 Interactive Inc. It was designed to teach kids and adults (but mostly kids) how to properly use a fire extinguisher using the acronym PASS.
The client, Underwriters Laboratories, in Northbrook, IL wanted us to create a simulated environment, which would catch on fire. Then, using the physical fire extinguisher, players could practice extinguishing various types of fires on-screen.
Fire Extinguisher Mod
To begin, I purchased a few new fire extinguishers and emptied the contents by spraying it all over my backyard with my daughter, Mira. That was fun for both of us and taught her how to use the extinguisher properly.
Challenge: Install electronics/sensors or cameras into the extinguisher to send data to the computer when the handle was pulled. Also track where the nozzle was pointing on the screen, to display the propellant shooting at the flames.
I built this at first using an infrared laser embedded in the nozzle that was activated when a user pulled the trigger. A small camera mounted overhead was used to track the laser image on the monitor, where users were pointing. This allowed us to accurately display where the virtual propellant should be aimed onscreen. I used the board of a wireless mouse as the transmitter, by hooking the trigger button into the left-mouse click. Worked perfectly.
After the first few events, the client got nervous that we were using lasers, as children have a tendency to stare into the nozzle to see how it worked. We then gutted and rebuilt the fire extinguisher using the guts of a wiimote, got rid of the overhead camera and used a bank of infrared LEDs mounted on top of the monitor. Overall this worked out better, but made the extinguisher quite bulky and heavy.
Graphics
We used Unity, a game engine, to create the 3D room scenes and fire effects, plus the virtual propellant from the virtual extinguisher. Since my programming skills were limited, I hired a guy in Denmark to help me. Back in 2005, when I built this, there were very few Unity programmers available.
We had to figure out how to receive input from the separate tracker application, running on the same computer. We ended up going with OSC communication protocol, which is easily translatable.
Tracking App
For the first version, we developed a custom application using Max/MSP which tracked the brightest spot in a video image and translated the XY coordinates over OSC to the display application. My friend Peter Nyboer designed that app, which we later turned into an actual product, called Respondr. More on that in another post.