Gabriella Levine

ongoing and past work

transnatural festival, nemo center, protei_007, oil compass and sneel_001
more photos here

Sneel & Proteis at TEKS Meta.Morf Trondhiem

more here:

Protei at Ars Electronica

see more here :

Sneel_003 at INstructables!

Here it is! swimming in california: on Instructables

Documentation of Sneel_002

Soon I will make a how-to guide for Sneel_002 on, as I did for the first version of Sneel, (i’m working on that) but until then…

Sneel swam in central park

The hardware:

Like a real snakes vertebrates:

I used Arduino Mega with multiple servos attached, using multiple 6V NiMh battery packs, placed along the body, with an xbee mounted on top to control three parameters of wave behavior: period, wavelength, and amplitude.

I taped the bottom of the Arduino so nothing shorted:

First I stuffed the arduino + xbee into a waterproof sac:

Then I decided that was overkill so I just stuffed everything into the tube (as I had sealed each servo motor with epoxy and had a water tight seal on the tube top and bottom)

See the waterproofed servos:

See wires etc. stuffed in the tube:

The Software:

A diagram of the control firmware and the relationship between the classes:

I wrote an Arduino library called ServoWave to control period, amplitude and wavelength of the oscillation for Sneel’s swimming behavior.

Here is it on github.

See how each servo motor oscillates – in the following graph, I print out values of each servo as each motor rotates in a sine wave slightly out of phase from each other. The x axis is time and the y axis is angle, and each colored line is a different motor.

After getting everything packed up in the tube, I tested Sneel_002 on the floor of ITP.

He seemed sort of real:

Sneel in the wild:

Well, Sneel_002 swam pretty well, sort of like a real snake, but there’s much work to be done…

Model shot:

Protei in Ars

Protei got an honorary mention in Ars Electronica!

Protei on Wired!

we got on wired!
“Designing Sailboats to Mop Up Oil Spills”

arduino, android, in a box, Protei_008

Snake Motion Protei

wireless video from analog security cam

My 2.4 GHz xbee was interfering with my wireless camera, also transmitting at 2.4 gHz. So I wired up my analog security cam to a 950 MHz transmitter, and the receiver displayed on the LCD screen quite nicely.

more joint work

To summarize: I started experimenting with making my own joints and ribs, by cutting corrugated plastic ribs, and 3d printing universal joints at AMS. Then, my intention was to use springs and servos to enact articulation.

However, I started using u-joint servo brackets, that are super stable, and I will continue with this.
Here is the code I finally got to work. Basically, I am storing a table of values, a formula for a sin wave, and each servo is at a different index along the wave values, oscillating up and down. I can therefore control wavelength, speed of the wave propagation, offset from one servo to another, amplitude of the wave, etc.

int total = int(TWO_PI/0.01);//total number of indexes points, points
//until the amplitude is back to zero

float[] wave = new float[total];//array for the amplitude of the
//object to be drawn betwen 0 and ht

int numBalls = 40;
int[]index= new int[numBalls];// 1 = 0;//
int sp = 1;
float ht=1;
//changer = 10;
void setup() {
size(800, 400);
float a = 0;
for (int i = 0; i < wave.length; i++) {
wave[i] = map(sin(a), -1, 1, 0, 180);
for (int i = 0; i < index.length; i++) {

index[i] = i*5;

void draw() {

for (int i=0;i<numBalls;i++) {
ellipse(i*20, ht*wave[index[i]], 10, 10);
index[i] = (sp*index[i]+1) % wave.length;


void keyPressed(){
ht = ht-0.5;



snake servos

PROTEI ITP winter show and build it yourself…

Some final photos of Protei_002 at The Science Gallery

Mini Protei

more to come – just a few photos – thanks to the action shots by Jason Stevens (thanks!)

SURFACE TENSION – the Future of Water – at The Science Gallery, Dublin

Protei_002 at the Science Gallery


Oil spills destroy wildlife, human health, and have serious effects on the economy. Despite billions of dollars being invested into new technologies for the management of oil spills, they are still incredibly difficult to contain and treat. Oil from a spill drifts downwind, following surface currents. One technique to manage this drift is to use skimmers – repurposed fishing boats that contain and absorb the oil. Despite being mobilised in their hundreds, skimmers absorb a relatively small proportion of oil from a spill. Protei have come up with a way to optimise the process using existing technology and an innovative open source design. Protei_002 is a prototype for a fleet of low-cost, articulated, DIY, semi- autonomous oil-collecting sailboats. The full-sized boat pulls a sorbent boom, which absorbs oil off the top of water near spill sites. It is the first sailboat that can catch winds from both sides and can therefore sail upwind and intercept the oil sheens as they travel downwind. It can be controlled remotely and so does not endanger the health of operators. It can travel long distances from shore, work continuously during the day or night, and is much cheaper than existing skimming technologies. It is open source, making it possible for individuals to tailor the design to different functions, and to collaborate on its development.

Here I am setting up Protei_002 for this amazing exhibition

And come learn to build robotic boats Saturday.

Here are some of the other works featured in the exhibit.