protei
transnatural festival, nemo center, protei_007, oil compass and sneel_001
http://www.transnatural.nl/26
more photos here
http://www.flickr.com/photos/52250666@N02/sets/72157631486087340/
Sneel & Proteis at TEKS Meta.Morf Trondhiem
more here:
http://www.flickr.com/photos/52250666@N02/sets/72157631648083714/
http://metamorf.no/?p=275&lang=en
http://www.flickr.com/photos/52250666@N02/8044380779/in/set-72157631648083714/
Protei at Ars Electronica
see more here :
http://www.flickr.com/photos/52250666@N02/sets/72157631284190044/
http://prix2012.aec.at/prixwinner/6700/
Documentation of Sneel_002
Soon I will make a how-to guide for Sneel_002 on instructables.com, 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 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.
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:
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. https://github.com/gabriella/Servo_wave
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);
println(wave[i]);
a+=0.05;
}
//print(wave.length);
//print(total);
//print(index.length);
for (int i = 0; i < index.length; i++) {
index[i] = i*5;
}
}
void draw() {
background(0);
fill(255);
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(){
if(key=='a'){
ht=ht+0.5;
}
if(key=='s'){
ht = ht-0.5;
}
if(key=='q'){
sp++;
}
if(key=='w'){
sp--;
}
println(ht);
}
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
PROTEI_002
PROTEI
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.