Little robots with Arduino

Delta robot with Arduino

Share:

Today I present my first Delta robot made with Arduino. The Delta robot structure was designed by a professor at the Technical University of Lausanne in 1985. It is a parallel robot, and within two decades has become the star of pick and place industrial robots . The delta robot distinctive elements are two:

The robot geometry which simplifies the equations of motion (kinematics)

The great idea to anchor the robot upside down so that it has the motors connected to the base. This is very important because while the robot works, the motors remain attached at the base, allowing the robot to have arms very light. Lightness means low friction, low inertia, low power motors, precision, speed, fast acceleration and deceleration.

These are two examples of delta robot:

These aren’t laboratory prototypes, but commercial robots and they cost about 50-60.000 euros. I tried to build a simple delta robot with Arduino. My Delta robot works like the commercial Delta robot, ie, in inverse kinematics. Given a point x, y, z in space, in real time Arduino calculates the angles of the servomotors that allow to reach that point in space.

The Delta robot has two triangular plates. A higher which is fixed and the lower is free. The servo motors are fixed to the top plate. The gripping tool (i.e. an electromagnet, a gripper, a vacuum suction cup), is fixed to the lower plate. The two plates are triangular equilateral, that is, equal sides and equal angles of 60 °.

The Delta has 3 servo motors and two arms for each servo. One is integral with the servo. The other arm is free to rotate in all directions and it is connected to the lower small triangle. In order to ensure the free turning, the second arm is linked with ball joints. To find the ball joints has not been easy. I found something about the steering of the machine model. Just search on google “joint Uniball” and you can find little cheap joints.

A very good explanation about the the Delta robot geometry and a very effective explanation of inverse and direct kinematics formulas can be found here . You can find also the code that calculates the inverse kinematic.

These are some Delta robot pictures (with an ATtiny85 microcontroller).

The end effector can be used with different tools. I tried a vacuum syringe and a drawing pen.

These below are some videos with different tools.

The first experiment with a simple trajectory (a circle).

The Delta robot drove by a mouse with Processing. The code is available here.

The Delta robot in pick and place configuration. The code is available here.

The Delta robot drawing. This is a first draft. The code is available here.

Hi,
congratulations for this excellent tutorial.
Hi have tried to replicate it, but my arduino reset every time after 15-20 seconds.
I have a separate 5v supply for the servo, with common mass, but arduino is still resetting…

I think this is an electrical problem.
Test only the Arduino/ATtiny85, without servos connected.
Connect one servo and test, then connect the second etc.
The servos have to be a separate power (5-6) and ALL the grounds have to be connected.
Can you explain how the servos power is made? batteries? which kind?

I had a that problem when working with arduino and servos. I came to a conclusion, that happen when Arduino can’t give current to all devices. The solution is to feed all devices through external voltage sources, that did the trick to me.

Hi, I am having trouble with getting the Processing to send the data to the board. The Processing gets the mouse movements and coverts to data but the data doesn`t get to the Arduino. Could you help me ?
PS: My english isn`t very good.

First of all thank you for helping me.
No I don’t see the data in the Serial Monitor.
When I try to change the Serial port a get an error “ArrayIndexOfBoundsException: 2″ and
Stable Library
=========================================
Native lib Version = RXTX-2.2pre2
Java lib Version = RXTX-2.1-7
WARNING: RXTX Version mismatch
Jar version = RXTX-2.1-7
native lib Version = RXTX-2.2pre2
Exception in thread “Animation Thread” java.lang.ArrayIndexOutOfBoundsException: 2
at DeltaArduProc___Proc.setup(DeltaArduProc___Proc.java:36)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:662)

Hi,I am new on Arduino and i get the codes which you posted.
There are four pde files.I built the case of the arduino .Now i dont know which pde file should i install to the arduino.Could you please help me?

Open the file Pneumo_Arduino.pde with the Arduino IDE and upload the code to the Arduino. If you don’t know how to upload a sketch to an Arduino, I think it is better if you study a manual about Arduino. The are tons of manuals about this.

hi how can i check if data is comming to arduino?
if i try open serial monitor in arduino i recive a menssege port is bussy
. so i can assume that processing is using the right port “com 6″ but the servos dont respond to the mouse
can you help me?

Could you please explain me why the code is not working for me? i want to control the servos with my mouse. I have uploaded the code in my arduino (mega 2560) and connected the servos to port 3,6 and 9 (like in the code). next i uploaded the code for processing, witch works (i get the triangles). But when i run the code, I get no response from the servos (no movement)… And I have no idea what is wrong :S (i also tried connecting 1 servo first) and the RX LED is blinking…
i also used an external power supply (connected the grounds) for the servos.