Fifteen oscillating electric fans spaced around the
walls of a room swivel idly until visitors approach. When visitors
enter the room, all the fans immediately turn to look at them, i.e.,
to face toward them and track them as they move. The fans continue to
look at people, with the fans closest to individual turning to face
them while other fans face other individuals, until everyone leaves;
at which point the fans return to their normal oscillating behavior.
One day a SCUBA diver was repairing a fitting near the nose when the operator decided to observe the process, and turned his head in the proper direction, causing the camera to swivel and tilt correspondingly. The SCUBA diver saw the camera turn toward him, and experienced a moment of shock. He said that he had the uncanny sense of an intelligent entity watching him from just behind the twin lenses.
A brief experiment with a radio control transmitter, receiver and servo hooked up to a household fan showed that there was something powerful in that experience. But we humans are extremely sensitive to when someone is looking directly at us or when they are merely looking slightly past us, and in order to be effective the fans had to be able to operate within the tight parameters dictated by human visual psychology. The actual execution of a full-scale system with fifteen individually controllable fans that could point at a moving person with an angular accuracy of a degree or so turned out to be fiendishly difficult, and figuring out how to do it took some time. (We finally realized that the seeming dearth of people working on open source versions of bleeding-edge computer vision software simply meant that all the smart people had gone to work on classified vision stuff for the Defense Department, and were likely making great money at it, too.)
I mulled the thing over when I had the chance, trying various sketches of physical layouts and numerous electromechanical combinations, but kept being interrupted by other projects. So it took almost five years before the right combination of opportunity, materials, and other creative people kicked the project forward.
We began developing the installation as a team, with myself as artist and overall project designer; Cynbe as visual code designer; and Drake as systems architect. Over the next year we manufactured a half dozen iterations of the system. Drake designed and tested the firmware for the transmitter and receiver as well as designing the physical circuit boards. I soldered and populated the boards and Drake checked them. When I wasn't soldering, I designed the mounts for the servos and receiver boards, which had to fit unobtrusively inside the fan shrouds. Meanwhile Cynbe completely rewrote the OpenCV (Open Computer Vision) blobtracker library to harden it to a point at which it would run reliably for long periods without crashing, and to hook it into our software system. He also wrote a GTK front end for the vision system.
A webcam located above the installation space relays video via a USB link to a computer in another room. The software looks for objects of interest -- i.e., people -- in the visual field and calculates the angle through which each fan must move in order to face directly toward a person. The software can handle multiple people: each fan turns toward the closest person. The software is blind to the fans themselves, although during an early test this part of the code malfunctioned and two fans saw each other as objects of interest, with hilarious results.
To keep the price point to a minimum, we elected not to use radio as the communication protocol between the vision system and the fans. Instead, Drake designed a complete infrared communication system which, from a single emitter in the ceiling, is capable of addressing each fan individually at high speed and with extremely low errors, thus making the actual motion of the fans smooth and reliable.
The video above shows the six-fan proof of concept, In the complete installation all fifteen fans track one person as long as s/he is the only person in the room; if more people enter, the fans closest to them turn to look at them. The slight amount of lag you may see is due to loose servo couplings, and not inherent to the system.
I'll be adding pages devoted to circuitry and code as soon as I can.