Delta bot

Hallo everybody, this is my first LMR entry (not the first robot I build)

I made this delta robot over the weekend.

About two week ago i saw a video of an industrial delta robot and i was intrigued by the simplicity of the principle but the complexity of the movements it could make.
So i thought, I'm gonna make one.

So i bought three servos some ball joints and some aluminum strip.
The metal base plate I had laying around. Just as some some nuts and bolts.
I used an arduino i took out of another robot i build (i will post that one here two)

I programmed the arduino so it reads serial data, and I made a mouse interface that sends the serial data.

And in actually turned out to be as simple as I thought it to be.

But now I have a delta bot I should do something with it.
I'm not quite sure what.
I had the idea to make more of these and use them as lags for a two, four or six legged robot.
It will work well I think, but it's a bit expansive to make six of these.

Delta bot and it's interface


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Top view

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Delta Bot

 

Copy mouse movement (for now)

  • Actuators / output devices: 3 servo's
  • Control method: mouse
  • CPU: Arduino Decimila
  • Operating system: windows XP
  • Power source: USB, servo's by arduino
  • Programming language: Arduino, Processing (java)

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/delta-bot

What an awesome idea and I

What an awesome idea and I actually have a bunch of those ball joints from tamiya laying around.

Would you care to share the arduino and processing code?

Nice
Good job! I would really like to see the processing and arduino code.

That’s awesome
Fantastic job! It gives me a bunch of ideas for applications that these movements could be used for.

Kewl! nice moves. very smooth
Kewl! nice moves. very smooth

Beautiful.
This is great! If you can do this in a weekend, I’d love to seen some of your long term projects. Can’t wait to see more of your robots!

Very Original
Not much on programming yet but it looks neat. Mabe a pair could make a new type of biped. Mabe even jump.

gr8 idea
gr8 idea

Lovely

It’s a nice piece of work. A little tweak to the maths and I imagine you could have it maintain its Y regardless of X and Z. I like to put names o nthings. I suppose it’s a kind of tethered holonomic drive. A "Killough platform."

Imagine the applications. A few hundred miniaturised versions of this, arranged in an array and they could be used to maneuvre loads around in aircraft loading bays, for example, or pass widgets round a production line.

Next!
In fact, with another 3 servos… I’m thinking “Stewart platform” - a miniature 6 DOF flight simulator…!

level head

I really like how the top platform stay level at all time, but cant help but wonder, it can tilt, right?
Or is it always level, no matter what?

My head is slow today, so I cant figure it out myself right now…

**It cant tilt because of the**<br>It cant tilt because of the parallel arms maneuver, but if you made it with 6 independant arms it could tilt and even twist. Check out the stewart platform on youtube, someone made a big one in their garage for a flight simulator using home built linear actuators.

Yes you’re right about the

Yes you’re right about the parallel arms.
But the stewart platform is somewhat of a different principle right?
Is hasn’t the rotating “arms” at the base.
If you make a delta robot with six arms, I’m not sure it would work like a stewart platform because of the extra joint in the arm.
By the way, there are pick and place robots with four arms. And they function the same way as with three arms if I’m not mistaken.

http://www.youtube.com/watch?v=GTz1MAasQq8&feature=related<o:p></o:p>

haha thats great! awesome
haha thats great! awesome work!

Same Principle

Yeah, I think it’s the same principle. The stewart platform is often made with linear actuators, but if you think about the way the rotating servos are arranged, they’re doing exactly the same job as linear actuators. OKay, the maths will be slightly different, because once they slow down sinusoidally as they approach their extents.

Pretty sure the joints are just ball and socket joints.

Code

Sorry for the late respnse ezekiel181 and electrictape22, but you’re still intrested here is the code.
It’s pretty sloppy programmed, there are no comments and variable names are in dutch but here you go:

-------------------------------------------------------------------------

Arduino code:

#include <SoftwareServo.h>

SoftwareServo servo1;
SoftwareServo servo2;
SoftwareServo servo3;
int servo1Pos = 90;
int servo2Pos = 90;
int servo3Pos = 90;
int servo1Afwijking = -2;
int servo2Afwijking = 8;
int servo3Afwijking = 8;

int data = 0;

void setup(){
pinMode(13, OUTPUT);

servo1.attach(10);

servo2.attach(11);

servo3.attach(12);
//pinmode
Serial.begin(115200);
}

void loop(){
if (Serial.available() > 0) {
// read the incoming byte:
data = Serial.read();

if (data == 255){
delay(7);
if (Serial.available() > 0) {
servo1Pos = Serial.read();
}
}

if (data == 254){
delay(7);
if (Serial.available() > 0) {
servo2Pos = Serial.read();
}
}

if (data == 253){
delay(7);
if (Serial.available() > 0) {
servo3Pos = Serial.read();
}
serialTeller = 0;

} else {
serialTeller++;

}
if (serialTeller >1000){
servo1Pos = 90;
servo2Pos = 90;
servo3Pos = 90;
}

if (serialTeller < 2000){
SoftwareServo::refresh();
}
}
if (servo1Pos < 30){
servo1Pos = 30;
}
if (servo2Pos < 30){
servo2Pos = 30;
}
if (servo3Pos < 30){
servo3Pos = 30;
}
if (servo1Pos > 130){
servo1Pos = 130;
}
if (servo2Pos > 130){
servo2Pos = 130;
}
if (servo3Pos > 130){
servo3Pos = 130;
}
servo1.write(servo1Pos-servo1Afwijking);
servo2.write(servo2Pos-servo2Afwijking);
servo3.write(servo3Pos-servo3Afwijking);
}

-------------------------------------------------------------------------

Precessing code:

import processing.serial.*;

Serial myPort; // The serial port:

int servo1 = 0;
int servo2 = 0;
int servo3 = 0;
int serialBegin = 255;


void setup() {
size(600,600);

myPort = new Serial(this, Serial.list()[1], 115200);

frameRate(100);
noCursor();

}

void draw() {

background(255);

triangle(width/2, height, 0, 200, width, 200);

servo1 = 100-int(dist(width/2,0,mouseX,mouseY)/6);
servo2 = 100-int(dist(0,height,mouseX,mouseY)/6);
servo3 = 100-int(dist(width,height,mouseX,mouseY)/6);
strokeWeight(3);
line(300,200,mouseX,mouseY);
line(150,400,mouseX,mouseY);
line(450,400,mouseX,mouseY);

println("X "+mouseX);
println("Y "+mouseY);

 


if (servo1 < 0){
servo1=0;
}

if (servo2 <0){
servo2=0;
}

if (servo3 <0){
servo3=0;
}

if (mousePressed && (mouseButton == LEFT)) {
servo1 -= 20;
servo2 -= 20;
servo3 -= 20;
}
if (mousePressed && (mouseButton == RIGHT)) {
servo1 += 40;
servo2 += 40;
servo3 += 40;
}


//println("servo1 "+servo1);
//println("servo2 "+servo2);
//println("servo3 "+servo3);
//Serial.write
myPort.write(255);
//delay(10);
myPort.write(servo1+30);
//delay(10);
myPort.write(254);
//delay(10);
myPort.write(servo2+30);
//delay(10);
myPort.write(253);
//delay(10);
myPort.write(servo3+30);
//delay(10);

 

}

Excellent! Thanks a lot mjc.
Excellent! Thanks a lot mjc. I have a pretty simple project in mind that a delta arm bot could do if I ever find the time to make it.

make it draw
Put a pin in that and give it some paper, that would be cool.

it’s amazing! I wonder what
it’s amazing! I wonder what would you do next with it!
The way you are doing with processing to control it it’s a really good idea! Congrats!!

**Heres a suggestion, stick a**<br><p>Heres a suggestion, stick a marker on it and have it draw PCB traces for etching :slight_smile:

I got a pack of tamiya ball joints last week to do this but they dont have the same range of motion as yours. From eyeballing it I would guess they can move about 10-15 degrees either way from center but I was hoping for much more. Im wondering how much approximately is the maximum angle the ball joints on yours can move?

I found these ball joints. Unlike the tamiya these have no bolt on the ball and just from the picture they have a much greater degree of freedom.