Feedback Loop for Camera and Ferrofluid
Feedback Loop for Camera and Ferrofluid is an installation considering the possibility of conceptual feedback loops in the process of science. Ferrofluid contained in a petri dish is moved and deformed by an array of electromagnets pulsing beneath it. The fluid patterns are used as an input for computer vision analysis, the data both visualised on a nearby screen and used to influence the patterns of magnetic pulsing.
produced by: Sam Ludford
Concept
In recent work I’ve been exploring how technology used in the everyday practice of science actively mediates the relationship between humans and the natural world [1, 2]. One idea that interests me is how technologies of visual representation—microscopes, telescopes, cameras, etc—can present distorted or partial images, emphasise certain features, or attach their own aesthetic associations to the things they represent, and how this influences the way these things are conceptualised and theorised about. This idea forms the basis of this project: a system in which the process of representation and analysis of a liquid with no intrinsic form becomes the source of its transient and ephemeral forms.
Ferrofluid was chosen for two reasons. The first is aesthetic and conceptual: ferrofluid is a thick black liquid which looks similar to bubbling oil when magnets are pulsed beneath it. Oil is a potent and contemporary symbol, and I wanted to use its associations. Inspiration for this came primarily from Paul Thomas Anderson’s film There Will be Blood [3], in which he makes an ominous motif of crude oil leaking from holes in the ground, and also from Carsten Nicolai’s installation Reflektor Distortion [4], which plays with reflection patterns on a rotating black basin of water.
The second reason is that I have worked recently with components powered by electromagnets (mostly solenoids [1]), and have become familiar with the circuits involved and their power considerations. This allowed me to avoid losing time solving complicated electrical problems.
Originally I had planned to mount the camera which would provide the video feed of the ferrofluid inside a telescope, to emphasise the role of laboratory technologies, but sourcing a suitable one proved difficult. This idea was influenced by works, such as Nam June Paik’s installation Three Eggs [5], and WEB DuBois’ speculative short story The Princess Steel [6], which draw attention to the role technologies of representation play in the construction of the things they represent.
Instead I decided to display the camera feed and data extracted from it via computer vision on a monitor, to emphasise the process of analysis. The camera and electromagnets driving the fluid motion were given black casing and the ferrofluid placed in a petri dish, to give the sense of a microscope or some similar contraption. The graphics were made minimal and monochrome, taking some inspiration from HUDs in military games to help create a sense of probing, goal-oriented activity which would cohere visually with the physical components and the black ferrofluid.
Technical
Driving the system is an openFrameworks app which uses openCV with optical flow [7] to extract vectors of motion from the camera feed. Standard frame differencing techniques [8] are used to display the feed in a style consistent with the other graphical and physical elements of the system.
The app is connected to an Arduino using ofArduino in cahoots with Firmata [9], which the electromagnets are connected to. The circuit uses mosfets and a separate power supply to allow the Arduino to control a square array of 24V electromagnets (schematic shown below).
The magnets are housed in a lasercut acrylic panel mounted in a white 3D box which hide the Arduino, minimising the amount of wires and clutter. For the same reasons, the PS3Eye camera is housed in its own 3D printed box.
The pulsing of the magnets is driven by ofxMaxim [10]. Each magnet has an independent metronome attached to it, with pulses sent on the beat. Discrepancies between horizontal and vertical motion extracted by the optical flow alter the tempos of pulsing, which in turns alters the pattern on the surface of the ferrofluid and then the data extracted from the camera feed.
Graphical elements are all custom written in openFrameworks.
Source code for the project is on github [11].
Self Evaluation
I think this project was quite ambitious, and overall I’m pleased with how it’s turned out. I had initially consider the inclusion of the telescope to be a key part of the work and was disappointed when I had to abandon it, but ultimately I think the incorporation of a graphical display better communicates the ideas behind the piece.
I would have liked to use stronger electromagnets to create a greater variety of form in the ferrofluid, but the time constraints didn’t allow for multiple iterations of the circuit. Another possible avenue to explore in the future would be to use a big pool of ferrofluid with a larger array of magnets.
References
- Chitter, my Term 2 Physical Computing project. https://compartsblog.doc.gold.ac.uk/index.php/work/chitter/
- The Octopus and the Machine, my essay for Computational Arts based Research and Practice. https://compartsblog.doc.gold.ac.uk/index.php/work/the-octopus-and-the-machine/
- Paul Thomas Anderson, There Will be Blood (2007)
- Carsten Nicolai, Reflektor Distortion, http://vimeo.com/168627417
- Nam June Paik, Three Eggs https://theartstack.com/artist/nam-june-paik-baegnamjun/three-eggs
- WEB DuBois, The Princess Steel (1905, maybe—exact date unknown). (See post on my research blog: https://bodies-without-organs.tumblr.com/post/170118952016/technogenesis)
- Workshops in Creative Coding Week 13 code examples.
- Workshops in Creative Coding Week 12 code examples.
- OpenFrameworks Firmata with Arduino example. https://github.com/openframeworks/openFrameworks/tree/master/examples/communication/firmataExample
- Maximilian / ofxMaxim. https://github.com/micknoise/Maximilian
- Feedback Loop for Camera and Ferrofluid source code. https://github.com/samludford/morphogenetic-feedback