Sign in to follow this  
Hanso

[EV3]Building a Delta Robot for Lego World 2017, by Sioux.NET on Track

Recommended Posts

Hanso   

When I was building the Robot Arm (see my mail thread here), I stumbled upon the ABB robot flex picker (also known as a delta robot). I was amazed about the simple construction and how fast it can work. Although I am definitely not making the first one of Lego, I wanted to build my own version of it.

In this thread you can follow the work in progress. I have now build the base and the three arms that will support the grabber. The grabber will be able to pick up the candy containers and move them to a different location. Don't know yet what its place will be on the layout, but I am confident that it will have its use.

Photos can be found at Flickr, click on the picture below to see some more pics and an animated gif.

33683580463_a14d8ee47d_c.jpg

Please let me know that you think of it.

Enjoy, Hans

Edited by Hanso

Share this post


Link to post
Share on other sites
PKW   

Wow really cool, what will you use to "pick" objects? Some sort of  pincers or a lego suction cup?

Share this post


Link to post
Share on other sites
Hanso   
10 hours ago, PKW said:

Wow really cool, what will you use to "pick" objects? Some sort of  pincers or a lego suction cup?

Thanks PKW.

I've worked today on the grabber. I tried pincers first, but I wanted to stick to the triangle form. With three pincers, grabbing a rectangular container wasn't working.

That's why I came up with a mechanism that opens and closes with diaphragm blades, enclosing the container. The result is the following:


33706715753_939806072d_c.jpg

A video of the grabber can be viewed on Youtube:

Hope you like it.

/Hans

Share this post


Link to post
Share on other sites

Hi Hans, your new project looks great.  How is the gripper performing in the long run?  It's relying on friction to stay together and the cylinders look like they could eventually pull it apart.  You can add some bracing to prevent that, but it will make the mechanism a bit more bulky.  Here's an example of how this could be done:

34489162886_78b209baa8_o_d.png

 

Share this post


Link to post
Share on other sites
Hanso   
16 hours ago, BusterHaus said:

Hi Hans, your new project looks great.  How is the gripper performing in the long run?  It's relying on friction to stay together and the cylinders look like they could eventually pull it apart.  You can add some bracing to prevent that, but it will make the mechanism a bit more bulky.  Here's an example of how this could be done:

34489162886_78b209baa8_o_d.png

 

Hi BusterHaus,

Thanks for your compliment and for the advice. The grabber is just a prototype. The space inside the triangle is quite small. That makes it necessary that the positioning of the grabber should have millimeter precision, and I don't think that the motors can achieve this. So, I assume that the final version will be a bit larger (and stronger).

If you look at all the triangles in the base structure, I have added half beam elements to strengthen the structure:

33736375693_cbc2e71afc_c.jpg

The grabber will have also some kind of bracing.

/Hans

Share this post


Link to post
Share on other sites
Hanso   

New pictures and a video has been uploaded to the Flickr page:

34502050281_defa8af0fb_c.jpg

And a new video with a demo of the Flex Picker.

Enjoy,
Hans

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

The grabber has been updated, it also has some bracing added. You can view some pictures at Flickr:

33847175033_2b59b72dbf_c.jpg

And a video at Youtube:

 

Please let me know what you think of it.

Best, Hans

Share this post


Link to post
Share on other sites
agrof   

I am a silent follower of this topic, and must say: I admire Your work with this. :thumbup:

I am just wondering if bigger cylinders (V1 or V2) wouldn't be better choise for the grabber, as they can react smoother than the small ones - so the goods wouldn't spring out of the cage, in case. I see place for them in the picker frame, of course with different layout and pivot points. Maybe they could be fixed on the edges of the "triangle" frame.

Edited by agrof

Share this post


Link to post
Share on other sites
Hanso   
1 hour ago, agrof said:

I am a silent follower of this topic, and must say: I admire Your work with this. :thumbup:

I am just wondering if bigger cylinders (V1 or V2) wouldn't be better choise for the grabber, as they can react smoother than the small ones - so the goods wouldn't spring out of the cage, in case. I see place for them in the picker frame, of course with different layout and pivot points. Maybe they could be fixed on the edges of the "triangle" frame.

Hi Agrof,

Thanks for the compliment and the hint about the cylinders. I have two pumps (V2) in back order, when I have more and especially faster air pressure, I will give it a try with these larger cylinders. Unfortunately, I only have V1 which are not that elegant as V2.

fc53285e8092cd2dba47f5540f4759f9.png

Later this week, I will write an update about the software. Quite some mathematics are involved to get the grabber to the right position and in a smooth way. The Lego Software is not suitable for difficult mathematics, but until now I still manage ;-)

Best, Hans

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

Motorized control of the grabber has been added:

33933247354_268e380cd3_c.jpg

A Mindstorms EV3 M motor is connected to the pneumatic switch to control opening/closing of the grabber. Unfortunately, the additional pneumatic hoses that I've ordered have not yet arrived so I cannot continue building the pneumatics.

You can view some more photos of the work in progress.

33966287773_8ccc369591_c.jpg

Enjoy, Hans

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

At Wikipedia, you can find more details about this type of robots (typically known as delta robot or flex picker robot): https://en.wikipedia.org/wiki/Delta_robot.

DeltaRamki.gif

While I was programming the first movements, one of the first issues I ran into, was the speed of the three motors. In the first version of the program, the speed was for all the three motors the same. If the grabber needs to move to one of the outside positions, one motor needs to rotate just a little (say motor A needs to rotate 150 degrees) and the other two have to rotate quite a lot (say motor B and C needs to rotate 450 degrees). If the motors have the same speed, motor A is three times faster finished than motor B and C. In principal not a problem, but it makes the rotation not smoothly.

In this example it is easy to calculate that motor A needs to have 1/3 of the speed of B and C. I made a formula to calculate the speeds depending on the number of degrees. To prevent the speed of the motors to become to high, I make an additional calculation to set the speed of the fastest motor(s) to 30.

  • TotalRotation = RotationMotorA + RotationMotorB + RotationMotorC;
  • FractionMotorA = RotationMotorA / TotalRotation;
  • FractionMotorB = RotationMotorA / TotalRotation;
  • FractionMotorC = RotationMotorA / TotalRotation;
  • HighestFraction = MAXIMUM( FractionMotorA , FractionMotorB , FractionMotorC );
  • SpeedMaximum = 30 / HighestFraction;
  • SpeedMotorA = FractionMotorA  * SpeedMaximum;
  • SpeedMotorB = FractionMotorB  * SpeedMaximum;
  • SpeedMotorC = FractionMotorC * SpeedMaximum;

In the first example of Motor A 150 degrees and Motor B and C 450 degrees, the speeds become:

  • TotalRotation = 1050;
  • FractionMotorA = 0.142;
  • FractionMotorB = 0.429;
  • FractionMotorC = 0.429;
  • HighestFraction = 0.429;
  • SpeedMaximum = 70;
  • SpeedMotorA = 10;
  • SpeedMotorB = 30;
  • SpeedMotorC = 30;

By this means, all motors run for the same time making the movement more smoothly.

The program is written in the standard Lego Programming Environment. This is not the best environment for making these kind of calculations. But it works ...

33984350103_c0908ca8ce_c.jpg

 

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

Hi all,

I have made some major changes to the delta robot / flex picker robot:

  • The complete structure is now colored light bluish gray + yellow. I removed the white beams, I found it too colorful.
  • The motors were driving the arms with a ratio of 12 to 20 plus 20 to 60 (= 1 to 5 in total). This ration didn't create enough torque to move the arms, especially when only one arm was moving and therefore it needed to carry all the weight of the grabber. The new ratio is 12 to 20 plus 8 to 24 plus 12 to 60 (=1 to 25 in total).

    34789329451_49cef1e4d6.jpg
  • The pneumatic hoses have been added. Grabber is now fully operational. I didn't change the pneumatic cylinder to the large ones (yet). Maybe I just leave it as it is now.

Photos can be viewed at Flickr, click the picture below.

34780488651_2d8505a673_c.jpg

 

And a video of the delta robot moving a candy container from one location to another place:

 

Share this post


Link to post
Share on other sites
Hanso   

I am building the Delta robot in LDD as well to see how things are build.

A single robot arm:

34081905074_f82315db72_c.jpg

If you put three of the arms together, you get the following:

34792943661_a38ee495be_c.jpg

And if you hang these arms in a supporting structure, then it begin to look like this:

34810462971_35aca0c3cb_c.jpg

 

LDD gives you the opportunity to count the parts, e.g.:

  • 51 * 64178 (technic beam frame 5 x 11)
  • 96 * 64179 (technic beam frame 5 x 9)
  • Over 700 black connectors (and I am not ready yet in LDD)

I'll keep you posted.

Regards, Hans

 

 

Share this post


Link to post
Share on other sites
Hanso   

Last weekend, I finished the first test run with loading the train with the delta robot (first two containers).

Lego Mindstorms EV3 Delta Robot

And, of course, a video.

 

More to come later.

Regards,
Hans

Share this post


Link to post
Share on other sites
Hanso   

One of the challenges when programming the movements of the Delta Robot, is how to calculate the number of rotations for each of the three motors of the arms in order to get the grabber to the exact position. Apart from that, the grabber needs to move in to two steps to pickup the container. If the grabber would follow the shortest path, it would hit the container and throw it over. The same  principle applies when  dropping the container: if it would take the shortest path, it would hit the train wagon. The solution is to first position the grabber a couple of centimeters above the desired location, and second move the grabber straight down. See the following picture.

35275936530_7a4c615426.jpg

But how do you calculate the number of rotations? At first, I tried the trial-and-error way. But this is not really handy. What I needed was a way to first manually control the grabber, move the grabber to the desired position, then hit a button to move the arms back to their home position and read out the number of rotations for each motor. If you reverse that number of rotations for the motors, the grabber should go back to the desired position.

And so I did. I used a second EV3, daisy-chained that to the Delta Robot EV3, and used three color sensors and one touch sensor for controlling the arms.

35269603920_bf7d5b69ee_c.jpg

If the color sensor reads 'green', the corresponding arm moves down and if it reads 'white' the arm moves up (until it reaches the home position). The EV3 on the picture doesn't show the motor rotations, that is displayed on the first (and master) EV3. By this means, it is relatively easy to calculate the rotations per position.

I made these calculations for all 4 positions and the result can be viewed in the following Youtube video:

Enjoy and please let me know what you think of it.

Regards,
Hans

 

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

I've uploaded new photos to our Flickr page, click on the picture below to have a look.

34963901704_cce3e1d550_c.jpg

In the video below, you see the following test run:

1) The train arrives at the loading station. The train is powered by two Lego PF motors and controlled by an Mindstorms EV3. It runs at speed three until the color sensor reads the white tile between the rails (= goto speed 1) resp. reads the red tile (= goto speed 0, stop). If you want to know more about the EV3 controlled train, click here.

2) Next, the four train wagons are loaded with 4 containers by the Delta Robot. The colored bricks in the containers represent the candy from the final setup. In this video, you see the end of a conveyor belt. This is just a test setup where the containers are fed manually (outside the range of the camera). In the final setup this will be the end of the conveyor belt that is part of the candy delivery subsystem.

3) Once all containers are loaded, the train drives away at speed 3.

Please let me know what you think of it.

 

Share this post


Link to post
Share on other sites

That works really well! :thumbup: There's some less smooth motion when it's loading the green container; I guess it's due to the fact that the picker is at its extreme location and only one motor has to lift the whole thing.

Your method for determining how to move the motors is ingenious, but were you aware that a closed-form solution is available (see e.g. The Delta Parallel Robot: Kinematics Solutions Robert L. Williams II ...)? Maybe to much for the EV3 to handle though, and you current implementation works fine obviously :classic:

Share this post


Link to post
Share on other sites
Hanso   

Dear Ludo,

Thanks for the document. Before I made my own program, I have searched for information about the movements. Could only found difficult algorithms with sin and cos function. Since that is not available in the standard Mindstorms programming environment, I have written my own version that is good enough for its purpose. I find it a challenge to stick to standard Lego elements and to the standard programming environment.

I don't know why the green container has some less smooth motion. What you mention could be the case, but then the first container would have the same problem. Will have a look at it when further testing.

Anyway, I have uploaded a small video where you can watch in slow motion the grabber picking up a container and deliver it to a wagon:

Enjoy!

Regards,
Hans

 

Edited by Hanso

Share this post


Link to post
Share on other sites
Hanso   

Thanks Krall. Your comment inspired me to give some facts and figures:

  • Building time is approx. 12 - 15 hours of pressing bricks together and 3 - 4 hours of writing the code (I use the standard Mindstorms EV3 programming environment).
  • The number of Lego elements:
    • technic beam frame 5 x 11 (64178): 51
    • technic beam frame 5 x 9 (64179): 90
    • technic beam 11 light bluish gray: 18
    • technic beam 13 light bluish gray: 30
    • tecynic beam 15 light bluish gray: 42
    • technic beam 7 yellow: 39
    • technic beam 9 yellow: 30
    • technic beam 11 yellow: 102
    • technic beam 13 yellow: 12
    • technic beam 15 yellow: 60
  • Control  unit:
    • One Lego Mindstorms EV3
    • Four Lego Mindstorms EV3 M motors
    • Three Lego Mindstorms EV3 touch sensors
  • Size
    • Distance from the center to the leg is 42 cm
    • Distance between the legs is +/- 72 cm
    • Height is 72 cm

Apart from the Lego Mindstorms, I estimate the total costs of the Lego between 300 - 400 euro (most bricks bought at Bricklink).

Edited by Hanso

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.