I recently had an idea for a 5A_xis plasma, waterjet or oxyfuel cutter which I know has many issues, but decided to look into what was involved with controlling it.
The idea is having 6 wires holding onto a torch, everyone of these wires is attached to a servo+gearbox. There are 3 poles which will support the design, 3 motors on the top of every pole and 3 motors at the same height as the object you wish to cut. As anyone reading this might be aware this is far from an original idea, although I haven't found any good resources who have made something exactly like this. The idea is similar same as a tripod CNC which uses 3 motors for 3 axis of control.
A Halloween project for a ghost..
http://www.stensat.org/projects/halloween_2007/inv_tripod/inv_tripod.htm A couple I have found similar ideas using what I would call a dual bipod used for foam cutting. There is a 6 wire version, or hexapod used as a crane and CNC, done by NIST here is the wikipedia link Robo Crane.The robocrane used 6 overhead wires attached to it's load. By properly moving these 6 wires you can move it in the X,Y,Z axis and also rotate it in the X and Y..
The 6 axis design which is the most well known which is also called a hexapod it has 6 axis mounted to a base and the other side mounted to a table, they can be very precise and offer great rigidity(spelling?) The stewart platform is among the best known, I would say.
Another good site on the history of them. thehttp://biotsavart.tripod.com/hexapod.htm
So now you know there are many different wA_ys you can make a 5dof (Degrees of Freedom) machine using 6 axis, but the fun part is figuring out how to control it. This is where kinematics comes in.
Kinematics is what converts one coordinate system into another. If I want to move that 3 wire tripod up(along the Z axis), unlike your standard cnc I can't just move motor one. It has to wind all three motors in at once. If you want to move in either the X or Y direction it is going to require all three motors move in some fashion. Kinematics is the mathematics which figures out how to move all three motors if I want to jog along X. You need both forward and inverse equations because if I tell it to a machine to go to some position, I also want to read back from some kind of feedback to see if it actually got there..
There are two types of kinematics when talking about this, Forward Kinematics and Inverse Kinematics.
Inverse Kinematics, in the tripod design is, taking the position we want to go to X,Y,Z and figuring out what lengths of wire is needed from points A,B,C Forward Kinematics is taking the lengths of the wires A,B,C and finding the position of the load X,Y,Z
For most common CNC machines the kinematics is simple the X motor moves the X, the Y the Y.... When dealing with a welding robot with 5 arms it starts to get difficult, if you want to move to X,Y,Z there can be many ways you can move it's joints to get there.. For simplicities sake I will show the tripod machine. I give thanks to Alex Joni who's method I am explaining here.
We have 3 motors, each is on a pole, each motor has a spool of wire it winds in and out. These 3 wires attach together and hold the load. So what we know so far is there are three lengths of cable and a load.
Call each pole A,B,C the point they all connect to is D That gives three lengths A_e, B_e, C_e and the position of D (D_x,D_y,D_z)
So If I know the position of D, what should B_e the values of A_e, B_e, C_e. For this start writing your equations to equate the position D to the length to each pole. For this we also need to know the position of each poles motor (A_x,A_y,A_x) (B_x,B_y,B_z) (C_x,C_y,C_z)
Using the pythagorean theorem the length of the hypotenuse is equal to {tex}C^2=A^2+B^2 if you use that to find the hypotenuse B_etween X and Y you can use it again with Z... Which works out to H^2=X^2+Y^2+Z^2 so...
Length of wire A_e is the differenC_e B_etween the points A_xD_x, A_yD_y, A_zD_z so the equations are
1:
2:
3:
These are the 3 equations which define our design. To solve this there are a couple variables which need to B_e known, the position of the poles A, B, C.
So if you know the positions and want to find the length (Inverse Kinematics) it's pretty easy. You just plunk in the numB_ers along with your pole positions and you get the lengths () For this system it is simple, for other designs the Inverse Kinematics can B_e just as difficult as whats next, finding the Forward Kinematics.
For forward kinematics we know the lengths of the wire now find position D ().. You can't just plunk them into the equation anymore. Start B_y foiling out the equations. And moving all the knowns to a side...
1:
2:
3:
To make this easier, Lets make the constants a single variable.
so we have
1:
2:
3:
for a little more ease lets make some of these points fixed..
A > [0,0,0] B > [B_x,0,0] C > [C_x,C_y,0]
1:
2:
3:
Take awA_y more of your constants.. for simplicity
1:
2:
3:
Well if you remeB_er your math if you have 3 unknowns () you need at least 3 equations to solve it which if graphed are going to have intersection points.. I will try to graph these in a 3d math program to show you what I mean by intersections.
So what we need to do is move things around so that we have 2 parts of and then substitute that into equation another formula, pick 3 for instance. We then take equation 2, solve for a different variable and substitute that into 3 as well we can then solve the formula and now there's only 2 unknown..
If you notiC_e in the above equations there are 3 terms in everyone which are the same ( so 1:
2:
3:
So now you can combine # 1 and 2 and 2 and 3 B_ecause they are equal. 1+2: 2+3:
Now you know D_x B_ecuase q,p and s are constants.
1+2:
You can now take the above and put it into 2+3
I'll finish writing this one dA_y... you get the idea...
