12-02-2020, 04:55 PM (This post was last modified: 12-14-2020, 03:59 PM by Albert.)
I have a Kuka KR120 on a KL4000 rail, both connected with the same KRC4 cabinet and i want to do online programming. At first i tried not to synchronize the Robot and rail. But i was unable to move the rail online. I think this needs customizing of the Kuka driver....
So now i'm trying to do it with Robot and Rail synchronized but i get weirdmovements when using MoveL. In simulation all works as expected, also when i choose "generate program as" and copy the src-file with a usb drive to the robot it works well. But when i choose "run on robot" only the joint movements are as expected, the linaer movement drifts away to a complete different direction. I think that my reference frames are ok, i see the same cartesian coordinates in Robodk and Kuka Touch pad. Maybe there is a problem with the Kuka driver?
Can you please take a look at my station attached?
I have been testing today and the lineair movement now is very close in right area (+/-30cm), so i think that the reference frame is ok. But the rotation and coordinates of the TCP are not right. I have to stop the robot's movement because it collides so I don't know the end position.
What i have done: In Menu -> Options -> Drivers i have checked "Provide Cartesian coordinates with respect to reference frame" and "Provide Cartesian coordinates with respect to the flange". In the driver Robotsync35.src i have changed the $BASE and $TOOL variable.
KUKA external axes are usually setup so that the base of the system matches the base of the robot when the external axes are set to 0 mm. You should change the value in this image (set it to 0 mm). This will place the base of the rail there.
Also, the fact that the X and Z axis are swapped is a bit strange. It could be because you defined a reference frame not keeping the Z axis pointing up.
If you still have issues, it would be best if you can take a list of points and provide a table including:
Joint values including external axis
Cartesian values for the tool flange with respect to the axis + robot base
You can take a a first point in the home location and then move one axis at a time.
12-15-2020, 02:46 PM (This post was last modified: 12-15-2020, 02:54 PM by AluMill.)
Thank you for your time.
Attached you find excel file with the points and the RDK station file. As you can see i get different positions for MoveJ and MoveL.
- The joint movements are working fine. - In Menu -> Options -> Drivers i have checked "Provide Cartesian coordinates with respect to reference frame" - In the driver Robotsync35.src i have changed the $BASE and $TOOL variables
Thank you for this detailed spreadsheet but I'm not sure if you collected this data from RoboDK or the KUKA robot controller. We need to collect this information from the robot controller. In this case, using MoveJ/PTP or MoveL/LIN should not make a difference.
If we take the first point, this is how we would place the correct coordinate system in RoboDK:
Copy/paste the joint values of one row to your robot (I used the first point)
Add a new reference attached to the robot: You can select Program-Add Reference Frame and drag and drop this coordinate system to the robot. I named it Inv RobotBase2Tool.
Double click this coordinate system (Inv RobotBase2Tool) and paste the XYZABC values of your Tool flange with respect to the reference frame. Make sure you see these values with respect to the robot flange.
Select the button on the right (3 bar button) and click Invert Pose
Add a new coordinate system attached to the rail reference. I named it Correct Reference.
Double click this coordinate system (Correct Reference) and select Reference position with respect to: Inv RobotBase2Tool.
Enter the XYZABC values of 0,0,0,0,0,0 (or select Reset after selecting the button on the right).
This coordinate system should now be placed in the correct location and should represent the origin of the base of your robot. You can see this coordinate system placed in the following location with respect to the rail reference:
XYZABC = 100, -700.5, -340, -180, 0, 0
However, I believe something is not consistent with your spreadsheet. Once the coordinate system is properly set you should see that all other points match. I believe this is because you relied on RoboDK to collect this data. We need to know the XYZABC values seen by your robot controller (so you should collect them from the teach pendant). Also, you should make sure you do not select a tool (the TOOL definition should be 0,0,0,0,0,0).
12-23-2020, 07:41 AM (This post was last modified: 12-23-2020, 08:30 AM by AluMill.)
(12-22-2020, 10:49 PM)Albert Wrote: Thank you for this detailed spreadsheet but I'm not sure if you collected this data from RoboDK or the KUKA robot controller. We need to collect this information from the robot controller. In this case, using MoveJ/PTP or MoveL/LIN should not make a difference.
I collected this data from RoboDK (easy to copy/paste) but the joint data and Cartesian data of the robot on the teach pendant is exactly the same (except for a few decimal places)
MoveJ or MoveL gives me a different location of the robot in real world AND in RoboDK when running online. In simulation mode MoveJ and MoveL gives me the same location on RoboDK.
I think there is a bug in the Kuka driver when using a linear axis. I assume that Using MoveJ sends joint coordinates to the robot so it is always correct. But using MoveL shifts the X-coordinate to Y, Y to Z, Z to A and so on.