Arduino Delta Robot (driven by DC motors)

Posted on 29/02/2016 by nekojiru
Modified on: 13/09/2018
Project
Press to mark as completed
Introduction
This is an automatic import from our previous community platform. Some things can look imperfect.

If you are the original author, please access your User Control Panel and update it.

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


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
LikedLike this to see more

Spread the word

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post