Making a 6-axis Robot Arm
I’m very interested in connecting computers to the real world. The stuff I make for clients mostly ends up on a screen or a projection and a lot of time I’m missing a real physical step in the world. So this is something I really want to explore more.
After making my Drawing Machine I knew I needed some more precision tools if I wanted to make more stuff like that. So this year, I took that step and bought me a cheap Chinese metal mills and rebuild it to a CNC mill.
And with a CNC, I could make everything I ever wanted (That’s what I like to think anyway ), So I got the ridiculous idea to try and make an industrial 6-axis robot arm. It would be the perfect project to combine my new found love for making physical things, with the old (but not faded) love for programming.
Bought me some aluminium stock, bearings, motors, etc. and a lots of designing, milling, cutting, tapping, drilling, screwing, printing, soldering and programming later this beauty is the result:
I didn’t document the making process as much as I would like to do, but I was smart enough to shoot some video every once in a while.
So this is sort of the making of video (skip strait to the end to see the finished robot in action )
a little bit more info and pictures:
I knew I needed a lot of torque to move the arms. but I still underestimated it a lot. I guess that’s a standard beginners mistake. It took me some redesigns and a lot of frustration before I got that right. I needed to shorten my design and added more gear boxes than I had initially planned.
It would have been nice to have some planetary gearboxes but sadly those things cost a fortune. So I had to do with some relative cheap worm-gearboxes. They work fine, but they have quite a lot of backslash. Which affects the precision of the robot. But at least it has the needed force to move itself.
I used stepper motors so keeping position was not that hard. But I needed something to sync the “home” position between the robot and the computer. So I used inductive sensors on each of the axes to get some sort of start position.
I 3D printed the hand, with the intent to use it as a prototype, but it was working fine like that, so I kept it.
For the hand I used a standard robot hand design. Just two servos driving the opening and closing of the hand. I thought it would be nice to also have some sort of pressure sensors so that the hand knows if it has a hold on something. For that I salvaged the load cells of a cheap kitchen scale, and put those in the hand
Didn’t find much info on how to use the kind of load cells I had (4 cells, 3 wires each) It took me quite a while to figure out, so for future reference a simple connection schematic :
The Hand is easy to replace and has his own Arduino because I wanted it to be exchangeable with something else.
I have a power-line and a USB connection to the hand, so I can replace it with whatever I need.
The Controller Software
The robot is controlled by an Arduino who manages the steps for the stepper motors and the acceleration. One of the reasons of it being quite slow is that it has a quite slow acceleration. Though the good old second law of Newton and the relative big mass of the robot it is impossible to stop and start the arm movement fast without mayor shaking and even tilt it over (this happened )
I wrote the software for the arm in C++. Just some controls for the axes and some inverse kinematics to control the real world positions, its kind of crappy, but it seems to work fine.
Once I did that It was easy to make the robot do pre-programmed stuff. But that’s kind of boring, so I made a simple program where the robot searches for random placed cubes and tries to build towers with those.
It uses the camera on the hand take pictures of the floor. After that I did some colour and edge detection to search for cubes and then translated the positions in real world, so the robot knows where to find them.
the source code and design files can be found here:
There is of course much more I could do with it, but I was losing some interested for now. After working a couple of months on this, it’s time for something new.
I learned a lot and this project got me to some unexplored terrain for me and in the meantime my once clean office turned in a complete Fab lab. So I have a lot of possibilities and new ideas for a next project are beginning to take shape. So stay tuned!