I work with a 6-axis waterjet machine. The X, Y, and Z-axes move the head back and forth (X), in and out (Y), up and down (Z)... pretty simple. The A-axis is just a rotary table off to the side. The B and C-axes are a little complicated. Hopefully the ascii art below will help.
B and C are both rotary axes. C spins around the Z-axis. B is at a 45 degree angle to the Z-axis. An arm comes out from the B-axis and the nozzle is at the end of the arm. The B-axis spins the arm and the nozzle and the C-axis spins the whole thing. The arm and tube have lengths so that the nozzle points straight down the axis of rotation of the C-axis and the tip of the nozzle is in line with the axis of rotation of the B-axis.
So when the B-axis is at zero degrees, the nozzle is pointing straight down. As you turn the B-axis 180 degrees, the nozzle goes from pointing straight down (zero degrees) to pointing parallel to the ground (90 degrees) (to the left in the picture). The nozzle can never point upwards at all. In between B=0 and B=180 there is some angle away from the C center of rotation (up and down) and some angle about the C center of rotation (in and out, back and forth). The C-axis can then be spun so that you can get any position you want (except up).
So my question is: what are the equations to find the required B and C positions so that I get the nozzle pointed the way I want it? For example, what do I turn B and C to to get a 45 degree angle from vertical and toward the left (parallel to the X-axis).
We have CAM software that can figure this out, but I’d like the equations to do my own programming, and I make applications that make the machine code.
Thanks to anyone who attempts to answer this. I’ve worked on it for a while now, but can’t seem to get it. I figured it’d be cake for one of you.
| C |
\ \ /\
\ \/ \
\ / \
\ / \
\ B \
Arm-> |______\ /
| \ /
| \ /
Nozzle-> | V