Hello , I am using soft motion for a tripod project and i am facing problem with the z axis. The z axis doesn't move straight but it makes a diagonal move. I use the Axis group with GUI for the kinematics. Can anyone tell me what i miss or send some example ?
Is this a real tripod or a virtual tripod?
it is real yes
usually if this happens, the parameters for the length etc are not correct.
Hello first of all i need to tell you that the robot is Tripod with rotary axes. Secondly all these informations from the GUI kinematics is correct and triple checked . It seems like the start point of the Z axis for the kinematics it's not from the TCP Zero point but from the top , from the motors plane. I think that the problem is there but i am not sure, i tried to insert a tool offset but it doesn't work.
did you start with this example here?
"c:\Program Files\CODESYS 18.104.22.168\CODESYS\Projects\SoftMotion\22.214.171.124\Examples\Tutorial\Robotics_PickAndPlace_without_Depictor.project"
Hello i am using this setup because my motors it's not with absolut encoder but they have resolver.
So first i enable the group axis ,next i am homing the drives and insert there the Position of each drive in Degrees then i am setting the Coordinate transform. Which is x=0 y=0 z=500 .But i don't see any difference with this FB or without.And last but not least i am using this setup for jog
the first thing I would check is this: do you home your axes in such a way that their zero-position corresponds to all arms being horizontal?
Second, did you first test without the coordinate transform? The zero point of the MCS (machine coordinate system) for Kin_Tripod_Rotary is not in the plane of the motors but on the tool plate when all arms are at zero (horizontal).
If all parameters are correct and the zero position is correct, then the only thing I can imagine is that maybe the direction of rotation of one or more drives may be inverted. I think starting from zero (horizontal position), the axes should move in positive direction if the arms move down.
See here for reference:
Hello gseidel i had check all of this. The z axis is going fine at the start position of x=0 y=0 but if i move one of these axis it's going diagonial. If you need any video please let me know.
if the axes are turning in the right direction and the zero position of the axes is correct, then I think you need to double check the parameter values of the transformation. You said you double checked the values, but maybe the values you have are measured differently (from different positions) then the value the transformation expects?
You could also check what happens if you move all axes to zero and then jog each axis independently. I would expect the following from the output of MC_GroupReadActualPosition:
1) Move all axes to zero -> position = (X=0, Y=0, Z=0)
2) Move first axis -> position grows in X and Z, Y stays 0
3) Move second and third axis -> position grows in Z, X and Y both change
If you want you can send a picture of the robot and a screen shot of the parameter values of the transformation.
You can check the attachment . I already made this check and it seems that is everything ok ( only at number ) but in real life it's not if you want i can send a video here maybe it will be helpful
A picture of the robot might be helpful.
Here you are
did all checks I suggested succeed? (Jogging of single axes, direction of axes, ...)
One more thing to check would be the scaling/mapping of all drives: are they configured so that one user unit in SoftMotion corresponds to exactly 1 angular degree?
Hello again ,
I believe that i need to use this FB SMC_InvCoordinateTransformation3D but i don't want to use the cnc interpolator i just want to use Groupjog and MC_MoveDirectAbsolute FB right now is there any way to try it with them ?
SMC_InvCoordinateTransformation3D is a function block of our CNC solution. GroupJog and MoveDirectAbsolute, on the other hand are part of our Robotics solution. If you use Robotics, you can use MC_SetCoordinateTransform to define an offset and relative rotation between the world coordinate system (WCS) and the machine coordinate system of the robot (MCS).
If all checks I proposed succeed, and all parameter values of the transformation are correct, then I cannot explain why the robot does not move as expected. I can only recommend to use a minimal project (comment out any functionality not needed) and only jog in z-direction.
If you want you can send me a video of the following steps:
1) Home all axes to zero
2) From zero position of the axes, jog in z-direction
OK i made some videos . You can see how i am zeroing, you can see the z axis problem when i am moving z axis and i am not at x=0 y=0 also you can see that the x or y movement it hasn't got fix z but it's like curve
OK. Anything else going on in your application, apart from the jogging function block? Did you rotate the MCS relative to the WCS? Are you jogging in MCS or WCS?
I know you already did this, but let's once more check the parameter values of the transformation. In the attached screen shots from your videos and photos, I drew some lines to indicate how I think the values should be measured.
dArm1Radius: measured from the center point of the three motors (axis of rotation of the C-axis motor intersected with the plane in which the axis of rotation of the three arm motors are in) to the fix-point of each first arm (that is not moving when the motor turns)
dArm1Length: measured from the fix-point of each first arm (same as above) to the midpoint of the upper bearings of the two rods of arm2.
dArm2Length: length of the rods, measured from the midpoint of the upper bearings to the midpoint of the lower bearings
dDistance: distance between the centers of the lower bearings of arm 2
dStewartRadius: measured from each midpoint of two lower bearings to the center of the tool plate
Hello Georg i check them again now everything it's correct from the dimensions.
Check the attachment for the jog. I am using virtual axis for x y z you can check my setup at previous photos.
OK, to narrow the problem down, could you please start all axes at 0° and then move the first axis to +20°.
Is it possible for you to measure the following distances between the initial position and the end position?
1) Distance in Z-direction: the TCP should move downwards by ca. 19.6 mm
2) Distance in X-direction: the TCP should move in negative X direction by ca. 67.7 mm
3) Distance in Y-direction: no change expected
4) Movement of the joint between arm1 and arm2: it should move down by ca. 44.5 mm
sorry for the inconvenience but the previous photo was old this is the right dimensions .
1) is -5 mm
2) is -70mm
3) is no change
4) is 44.5cm
I can't measure with high accuracy but the numbers is close to real.
Only number (1) is off from the expected values. It should have moved by 19.7 mm. What exactly does "-5 mm" mean? In which direction did it move?
downwards, did you calculate the movements with the new values ? As i told you i send old photo before. My dimensions are correct ,i made the design so i can measure them from solidworks but also i measure them and they are correct . I can send you photo if you want to check by yourself.
yes, could you please send me photos where I can (approximately) check the distances?
In particular, I'm interested in how the motors are mounted at the top of the robot (dArm1Radius) and the direction of the first arms (are they radial around the z-axis?).
Log in to post a comment.