Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

KUKA - Linear Move

#1
Helo,

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 weird movements 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?

Thank you


Attached Files Thumbnail(s)
       

.rdk   TestLineair.rdk (Size: 7.11 MB / Downloads: 379)
#2
Do i have to change the $BASE and $TOOL variabele in the robot driver RoboDKsync35? Why are they set to zero?
If i change them i get different movements for linear move.

Code:
$BASE = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}
$TOOL = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}


Hopefully someone can help me.
#3
Hi AluMill,

I don't know if the Kuka driver supports 7-axis.
I'll ask my dev team and come back to you.

Jeremy
Find useful information about RoboDK and its features by visiting our Online Documentation and by watching tutorials on our Youtube Channel


#4
(12-04-2020, 04:13 AM)Jeremy Wrote: Hi AluMill,

I don't know if the Kuka driver supports 7-axis.
I'll ask my dev team and come back to you.

Jeremy

Hi Jeremy,

Ok, thank you.
I can do joint movements through the driver, also the 7th-Axis.
Only the cartesian coordinates are wrong.
#5
Hi Jeremy,

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.
Quote:$BASE = BASE_DATA[1]
$TOOL = TOOL_DATA[1]
#6
Hi Jeremy,
Any news from the dev team?

A LINEAR movement to cartesian coordinates [X=0, Y=0, Z=0, A=0, B=0, C=0] is working fine but:
- moving to[100, 0, 0, 0, 0, 0] gives me [0, 100, 0, 0, 0, 0]  
- moving to[0, 100, 0, 0, 0, 0] gives me [0, 0, 100, 0, 0, 0]
- moving to[0, 0, 20, 0, 0, 0] gives me [0, 0, 0, 20, 0, 0]
- moving to[0, 0, 0, 20, 0, 0] gives me [0, 0, 0, 0, 20, 0]
- moving to[0, 0, 0, 0, 20, 0] gives me [0, 0, 0, 0, 0, 20]
- moving to[0, 0, 0, 0, 0, 20] gives me [0, 0, 0, 0, 0, 0]

So X->Y, Y->Z
HOWEVER  Z-> gives rotation around A  and A->B, B->C
#7
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.

Albert
#8
Hi Albert,

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

Code:
$BASE = BASE_DATA[1]
$TOOL = TOOL_DATA[1]


Attached Files
.rdk   TestLineair.rdk (Size: 6.97 MB / Downloads: 507)
.xlsx   RoboDK_TestLinear.xlsx (Size: 7.01 KB / Downloads: 441)
#9
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:
  1. Copy/paste the joint values of one row to your robot (I used the first point)
  2. 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.
  3. 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.
  4. Select the button on the right (3 bar button) and click Invert Pose
  5. Add a new coordinate system attached to the rail reference. I named it Correct Reference.
  6. Double click this coordinate system (Correct Reference) and select Reference position with respect to: Inv RobotBase2Tool.
  7. 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).

Albert


Attached Files
.rdk   TestLineair (1).rdk (Size: 6.97 MB / Downloads: 377)
#10
(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.

   
  




Users browsing this thread:
1 Guest(s)