Networks Navigating Nets
Networks Navigating Nets is a kinetic installation translating a flocking algorithm. The work explores the movement behaviours of fish in a shoal and responds to the human impacts that affect marine life, disrupting nature and its patterns.
produced by: Abi Price
The network consists of individual agents acting as a whole to navigate through space; this spatial awareness and patterning linking to a sense of choreographic thinking. The interactive element of touching the water signifies humans’ interference with the environment as our actions often have a consequential effect contributing to global warming and warmer seas, overfishing, as well as the non sustainability of this action.
Concept and background research
From the beginning, patterns were destined to be the overarching theme of the work, specifically computational patterns in nature. I took Dan Shiffman’s Nature of Code as inspiration, his flocking example providing the initial starting blocks for the project based on the work of Craig Reynolds’ Boids.
I chose to focus on the flocking as a shoal of fish rather than a flock of birds and was keen to look closer at the movement of shoals of fish, adapting the flocking algorithm to reflect my research. A useful short video about this explores the synchronisation of motion within fish schools. Individual fish were tracked computationally and the video slows the footage down to analyse the way in which they move and ‘how the behaviour of an individual will influence the behaviour of the group’. The shoal has no leader, instead displaying a ‘collective intelligence’. (bioGraphicMagazine, 2017)
Daniel Rosin’s Mirrors were the main influencing pieces to start with. I knew I wanted to work on a large scale with multiple elements and was keen on the idea of translating movement into something physical as he does so well in these artworks.
Diffusion Choir is an installation formed of a collection of paper shapes representing birds that open and close with servos. It displays a flocking algorithm clearly and this inspired me to look at origami style design ideas in the early stage of the project which I hope to expand on in future development.
I waited until fairly late in the project to decide that water should be the method of interaction. Rather than having the interaction take part separately from the kinetic piece such as on a touch screen or by using other sensors, I felt it would be more effective if I could embed it into the piece instead as an incorporated tangible user interface. The original idea was to create a fish pond type installation, where users can look down to see a layer of shiny fabric move under water. When the water is touched, movement would cease. However, the testing with the fabric didn’t show the movement as effectively.
I was interested in how the piece will be autonomous while people watch so there is still something interesting to see when nobody is interacting. As well as this interactive element for the participants experience, it signifies the effect humans’ actions are having on marine life. The conscious choice to cease movement signifies this as we are just left with the slight swinging. This interaction was created to make the users think about the impact they, as well as the rest of the world are creating by interfering with nature.
For the hardware, I used an Arduino Uno and four Adafruit servo breakout boards, each capable of controlling up to 16 servos. These boards were connected to 50 servos which were attached to the hanging structure. I had originally planned on 60 which is how many I installed but chose to use only 50 as I felt the movement of the shoal was translated well enough with this amount. I also made a capacitive sensor providing the method of interaction.
Processing was the main software I used for the flocking algorithm, featuring 2 way serial communication. Flocking location information is sent to Arduino to activate servos whilst capacitive data sent from the Arduino side to control the flock, stopped the movement completely, both with the sketch on screen and with the servos.
For the serial communication, I went back to basics and made a bouncing ball example which when it passed through a square, lit up an LED and moved a servo. I then tried this with multiple squares and servos. I had many challenges at this stage as this didn’t work well to start with as the light and servo flickered rather than being constantly on for the time the ball was in the box. This is similar to the twitchy movement of the fishing weights in the final piece but I chose to keep this as I didn’t want the installation to seem too literal and actually enjoyed the jumpiness as it tied in well with the concept of fish behaviours.
After running the flocking algorithm in Processing, I started to explore how I could adapt the example to reflect a fish shoal’s movement patterns and how this could be translated for Arduino. By creating an underlying grid of numbered squares, that number was sent to Arduino to move the corresponding servo on the physical structure. It took a lot of experimentation and time to get the servos moving how I wanted them. I used the equation i + j x width to find the index of the squares in the grid.
The capacitive sensor was made out of copper tape which was stuck to the outside of the water bowl. This sensor worked really well during user testing but there were capacitance issues when the laptop was connected to mains power which I didn’t come across until the day of the exhibition. To overcome this I added a mains power supply to the Arduino rather than solely powering it through the laptop and also added a larger voltage power supply with extra amps to the servo boards. This seemed to make the capacitive sensor more stable. I also used a Raspberry Pi for most of the exhibition (excluding the opening) after I had figured out the earlier capacitance issues as it did the same with the Pi’s power supply.
Early possible design options consisted of shiny patches of fabric replicating fish scales, origami shapes that can expand and collapse, fabric triangles, blocks and LED’s/neopixels. A mini structure was made to test these different methods. Hanging from the installation was fishing wire and weights attached to the servos to create a ripple effect on the water when the weight comes into contact with it.
I aimed to show the naturalness through the design of the structure as well as in the electronics and how the servos move and particular patterns. This can be seen in the construction where the main material used is wood. I tried to minimise the use of plastic but felt is was relevant to the concept (as well as for waterproofing) as it adds another layer to the ways humans are interfering with nature, contributing to our ‘plastic oceans’.
I would love to look at some of the early tests I did and develop these, such as using LED’s to show the pattern of movement more clearly, similar to this project Patterned By Nature from Soso created using LCD screens (2012).
I would like to develop the method of interaction as the captive sensor wasn’t the most reliable. Perhaps light sensors that the participant has to point a flashlight at to trigger. This would be interesting as a double sided kinetic sculpture, where one side is for interaction and the other just for observation. Distance sensors could also be used to change ways in which the closeness of the interaction affects the patterns.
As an idea for a non interactive piece, inspiration can be taken from Fragmentin’s piece Displuvium (2019) where water pumps above create droplets for a rain effect, but instead using the pumps underwater to create a bubble where the location of the flock is, however this would be an expensive option.
More of a choreographic approach to the project would be to think about the choreographic elements present in relation to how the autonomous agents move in space and look at this web of interconnectivity and networked patterns between each agent.
Overall, I am happy with the project as I have received some great feedback from participants with most understanding the concept of the piece. People were surprised by the interactive element as on the surface this wasn’t too clear (only by reading the caption). A really interesting part of the project was also the secondary pattern created by the water ripples as well as the pattern created by the flock.
I got mixed feedback in relation to the screen. Some participants didn’t know the screen was part of it to start with, others not necessarily thinking it was needed and others who needed the screen to make the connection between the direction of the shoal and the movement of the weights in the water. I also stated to think about abstraction and what can we tell about the flock and it’s behaviour without the boids (just the squares on screen) and how we may better understand this.
I had a couple of issues during testing. One was that after a couple of minutes, an error came up referring to a popMatrix not having a pushMatrix however I changed the place where these were called and this luckily resolved the issue. An unresolved issue I had though was that after a little while of running or after changing something unrelated in the code, a couple of the servos kept rotating 360 degrees which I still don’t understand as they shouldn’t be able to do that.
I chose for the project to continuously run even though I wasn’t sure how the servos would cope with this rather than it just being triggered when movement is sensed. This was to encourage people to be inquisitive as nature is continuously moving and evolving.
// Braitenberg, V. (1986) Vehicles. Bradford Books.
// Shiffman, D. (2012) The Nature of Code.
// Smith, P. (1976) Patterns in Nature. Penguin.
// I. Ashraf, R. Godoy-Diana, J. Halloy, B. Collignon, and B. Thiria (2016) Synchronization and collective swimming patterns in fish. Available from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5095228/
// ScienceAlert (n.d) Available from https://www.sciencealert.com/the-rules-of-social-interaction-attraction-repulsion-and-one-close-neighbour
// bioGraphicMagazine (2017) Lens of Time: Secrets of Schooling | bioGraphic. Available from https://www.youtube.com/watch?v=Y-5ffl5_7AI
// Navlakha, S. & Bar-Joseph, Z. (2015) Algorithms in nature. Available from http://www.algorithmsinnature.org/
// Reynolds, C. (1999) Steering Behaviours For Autonomous Characters.
// BMW (2009) BMW Kinetic Sculpture. Available from http://theinspirationroom.com/daily/2009/bmw-kinetic-sculpture/
// Fragmentin (2019) Displuvium – Simulating natural and rigged meteorological phenomena. Available from https://www.creativeapplications.net/processing/displuvium-simulating-natural-and-rigged-meteorological-phenomena/
// Hypersonic/Soso (2016) Diffusion Choir. Available from https://www.sosolimited.com/work/diffusion-choir/
// Rosin, D. (various) Mechanical Mirrors. Available from http://www.smoothware.com/danny/
// Soso (2012) Patterned By Nature. Available from https://www.sosolimited.com/work/patterned-by-nature/
// Tillinghast, E. (various) Available from https://erictillinghast.net/videos/
// 2-way serial communication adapted from sparkfun example- https://learn.sparkfun.com/tutorials/connecting-arduino-to-processing/all
// Flocking code adapted from Dan Shiffman's boids example- https://processing.org/examples/flocking.html
// Adafruit servo board code adapted from https://learn.adafruit.com/16-channel-pwm-servo-driver?view=all#overview