Arduino Delta Robot (driven by DC motors)

Driven by the sudden longing for a personal Delta Robot I found myself building one.

I decided to use geared DC motors (with 14 pulse / rotation rotary encoders), because for some reason, it occurred to me, that that's the way to go. The good thing about heavily geared DC motors is, that they won't move even when a strong outside force is applied. I used motors with a 1 / 264 gear. Thus, in combination with the above mentioned rotary encoders, the motors have a theoretical resolution of 3696 pulses per full revolution.

I used one of the timers on the Arduino Mega board to call a small routine, which I use to check on the rotary encoders every 50usecs. That’s how the position feedback is done. There is also an accelerometer on every of the 3 legs (I used the widely known MPU-6050). Those are used for calibration purpose. The Legs have to be in a horizontal position after start up. I check 2 of the 3 axis of the accelerometers and derive the position in respect to the earth’s gravity.

Position control is done by a PI controller. I tried to program start and end slopes for every movement. And the movement has gotten quite smooth. The only problem is, the PI controller is too soft. The movements of the 3 motors won’t reach their goal positions simultaneously which causes the platform to jiggle a bit.

I found a good publication on the Inverse Kinematics for the Delta Robot. The Inverse Kinematics are all about getting the 3 motors position for a given goal position in the x-y-z space. I’ve programmed the IK-library using the formulas in said publication.

Here’s the Inverse Kinematics library:

https://github.com/T-Kuhn/DeltaRobInverseKin

And here’s the superb publication on which the library depends:

R.L. Williams II, "The Delta Parallel Robot: Kinematics Solutions", Internet Publication, www.ohio.edu/people/williar4/html/pdf/DeltaKin.pdf, January 2016.

At the moment, all the thing can do is move around and draw (supposedly) straight lines. In the next step I want to mount a Raspberry Pi camera on the thing and use some simple Image Recognition Algorithms to get the robot to play board games. Specifically, I am thinking about getting the robot to play reversi. The Raspberry Pi would be the master in a master-slave system containing the Raspberry Pi and the Arduino Mega. The Raspberry Pi would look at the board, decide the next move, and send coordinates to the Arduino Mega. That’s the plan. I will update this post when I get the time to flesh this idea out!

 


 

Update [Mai 2016]

I added a Raspberry Pi + Raspberry camera module for Image Processing. In the last video you can see the result. The thing is now able to lift up small things and build a tower with them. I kind of got sick of that big clumsy robot. This will be the last entry. ^^

Draws jittery lines and picks up things

  • Actuators / output devices: 3x DC motors
  • Power source: 12v
  • Programming language: C++, Python
  • Sensors / input devices: camera, 3-Axis accelerometer
  • Target environment: indoor

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/arduino-delta-robot-driven-by-dc-motors

Look at the reprap kossel :slight_smile:

Look at the reprap kossel :slight_smile:

Kossel Delta Robot

Hello Silux!

Thanks for the hint. I actually wasn’t even aware of the huge amount of research on delta robots in correlation with 3D printing when I started this project. I knew the ABB FlexPicker. And that was my role model delta robot. But after I was well into the building process I DID stumble upon a few 3D printers on YouTube. I must say I was a bit shocked. Everyone seems to be able to make super accurate, super smooth moving Delta Robots. A lot of them seem to be some sort of kits. The Kossel seems to be a kit too. That would’ve been something to think about before starting that thing. Do you own one of those?