CreativeApplications.Net reports innovation and catalogues projects, tools and platforms relevant to the intersection of art, media and technology. Read more here.
Search
- > 10003
- 11/06/2010
Machine To Keep A Feather In The Air [openFrameworks]

Andreas has finally found time to come back to the wonderful personal project he has been working on for some time now. I thought it would be a great opportunity to introduce it to CAN readers, considering I have been closely following the development. While most of the project is still at theoretical/simulation stage, physical and digital elements are coming together and I just couldn’t resist not to share them with you.
The project started with a simple task in mind, to build a “Machine To Keep A Feather In The Air”. Using openFrameworks, Andreas first created a simulation, utilising 16 servos with a fan that are able to tilt in multiple axis, responding to the location of the feather.
The idea is that the “balloon” here will later be replaced by a vision system that tracks the object in real life and passes the information along to the simulation, some of the same rules should apply with tuning that system, such as for instance “don’t blow on the object if it is moving upwards” and “ignore the object unless it is below a certain height”.
The next part of the project was to develop part of the software to track the feather. Using two cameras one for XY and one for Z the image below shows the mapping of feather position in 3d space.
Here for debugging I’m using the same video on both, a short clip of peach I tied one a piece of string, but I need to set up a small test bed for this soon.
A bit of filtering and you have yourself the blob you are interested in and can transform from the camera positions into virtual space. The exact filtering steps will probably change later, now I get away with just some thresholding and erosion.
The video below shows a servo fan hooked up to openFrameworks. Clicking on each fan within the application makes the physical fan behave as in the simulation.
The next step was to build a mount for the motor shown here and attach it to the servos. To do this, considering there is 16 of these, Andreas used “Sable 2015″ CNC machine he got of eBay allowing him to create identical parts for the servos. The machine itself doesn’t have a big range but all in all it was under £1000, with taxes, shipping, dremel, random drill bits, etc etc.
Below, the idea was to use the POSIT algorithm in OpenCV to align a model of a floor ( for the algorithm, a cube) with known points in his image. This gives Andreas the camera parameters without having to align a grid on the floor by hand, which apparently proved to be a bit of a pain. Once he has the OpenGL camera transform that matches the real space, he can project the 2D point into 3D space, doing it from two angles to give him a 3D position.
Today, Andreas posted this clip on Flickr, showing an early version of a master control program. What you see below is the demo of a physical ball being held in the air on a string, motion tracked by the software with corresponding fans reacting to it’s location.
I am extremely excited to see where the project will end up. Until now, the sheer magnitude of something that might have seem simple at first is beging to reveal itself. Whilst working with software may be challenging enough, the physical component can be highly unpredictable. Building objects that behave as expected is very hard to achieve, making software that corresponds and responds to physical effects can be even harder. It is nevertheless wonderful to see this project develop and rest assured we will post once again when Andreas hits the next milestone which we hope will be soon.
To find out more about Andreas’ work, check out hahakid.net, his flickr and nanikawa.com.
- Previous Post: Dynamic Mesh Triangulation + UI [Cinder, iPad]
- Next Post: Phénomène [Java]
-
Jean-François











