Let's Make Robots!

Delta bot

mjcbruin's picture
Copy mouse movement (for now)
Cost to build: 
$70
Time to build: 
10 hours
AttachmentSize
Delta_bot_1.jpg62.42 KB
Delta_bot_2.jpg55.39 KB
Delta_bot_3.jpg59.11 KB

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

Delta bot and it's interface
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Top view

Top view

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Delta Bot

Delta bot

 

 

ezekiel181's picture

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?

electrictape22's picture

Nice

Good job! I would really like to see the processing and arduino code.
tmoney68's picture

That's awesome

Fantastic job! It gives me a bunch of ideas for applications that these movements could be used for.
mintvelt's picture

Kewl! nice moves. very smooth

Kewl! nice moves. very smooth
Thomas Countz's picture

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!
Prettybird's picture

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
BaseOverApex's picture

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.

BaseOverApex's picture

Next!

In fact, with another 3 servos... I'm thinking "Stewart platform" - a miniature 6 DOF flight simulator...!
maneuver's picture

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...

ezekiel181's picture

It can`t tilt because of the

It can`t 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.
mjcbruin's picture

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

BaseOverApex's picture

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.

1220's picture

haha thats great! awesome

haha thats great! awesome work!
mjcbruin's picture

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);

 

}

ezekiel181's picture

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.
Breathit Bot Biulder's picture

make it draw

Put a pin in that and give it some paper, that would be cool.
guibot's picture

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!!
ezekiel181's picture

Here`s a suggestion, stick a

Here`s a suggestion, stick a marker on it and have it draw PCB traces for etching :)

I got a pack of tamiya ball joints last week to do this but they don`t 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. I`m 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.

mjcbruin's picture

ball joints

I have used these ball joints, but I used smaller nuts, these. That creates some extra movement.

Further, I haven't done anything with the delta bot yet, no time :(
But I thought a cutter would be cool, so you could carve 3D objects from plastic foam or something.
Although I think the programming could get a little complex.

BaseOverApex's picture

Conrad Says:

Helaas kunnen wij geen winkelwagen voor u aanmaken.

Wij kunnen geen winkelwagen voor u aanmaken.

Dit kan 2 oorzaken hebben.

1. U gebruikt een verouderde link. Roep de pagina opnieuw op.

Pagina opnieuw oproepen

2. Uw browser accepteert geen cookies. Activeer in uw browser de toepassing van cookies en probeer het opnieuw. Wilt u bestellen zonder gebruik te maken van cookies, klik dan op onderstaande link:
Verder zonder cookies

Heeft u vragen? Stuur dan een mail naar webmaster@conrad.nl
Rudolph's picture

I am going to create reasons

I am going to create reasons to use the phrase "Verder zonder cookies". Like a battle cry or something.
BaseOverApex's picture

Cries

It would be a good battle cry for paranoid folk who keep cookies permanently switched off.

But what does the header mean: "We can't cart for you"?

 

Rudolph's picture

Remember the Soup Nazi in

Remember the Soup Nazi in Seinfeld? Maybe it's like that. If you're gonna keep your cookies to yourself, then "No cart for you!"
BaseOverApex's picture

Pity

...it was EXCELLENT soup.
mintvelt's picture

Continue without using cookies

As far as I understand it, the link you were following, contains a reference to a session for which you don't have the correct cookie. The page shows the wrong error message. It says: "We were unable to create a shopping cart for you." The two options state "you might be using an old link: retry loading the page" and "You might have cookies disabled: continue without cookies" but they both throw you to a home page.

My guess is that when someone tries to add an article to their shopping cart, but the session cannot be found, the website assumes you have disabled cookies in your browser and it shows this page.

Because the session reference is used in all URLs copied from the Conrad website, this effectively makes deep-linking directly to an article or product  impossible. 

Good shop, Conrad, but a lousy website. 

mintvelt's picture

Yeah. Those conrad guys are

Yeah. Those conrad guys are allergic to deep links; it looks like.
mjcbruin's picture

Sorry

Try it this way:

go to conrad.nl and seach for product number 223417 for the balljoints and numer 248778 for the m2 nuts.

mjcbruin's picture

Nice

BaseOverApex's picture

Another Link In

At least it's another link back to LMR!!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.