Pick and place programming

I am trying to program the UR20 to load a part to a machine. The fixture in the machine moves on the X and Y axis slightly- it is not fixed but I need to be able to connect the part onto the fixture.as it begins to connect the fixture moves slightly resulting in an error message asking to enable the robot again. Does anyone have any tips for loading to a fixture like this?

Hello @dorourke,
This is a known problem when inserting a component into a chuck on a CNC machine. Try to set the arm susceptibility in the X-axis and Y-axis of the tool before clamping the gripper in the machine - this will cause the robot not to wrestle with the gripper in the machine but to adjust as it closes.

To do this, add a force function before chuck will close - change the force mode to ‘frame’ and the reference to ‘tool’ - enable only the X and Y axes, set the force value to 0 and the speed limit to approx. 5mm/sec (you will have to choose the limit value experimentally).

It should resolve your problem. :wink:

Hope it helps!
Wojciech

PS: If your part are also rotated and the closing chuck cause a momentum to the arm → enable also rX and rY option in this force function with the same parameter (0Nm and approx 5*/s)

1 Like

you can also enable freedrive in the program to allow the robot to float while the fixture is gripping it. then you can disable freedrive and continue with the program.

The script action is freedrive_mode() and end_freedrive_mode()

image

Thank you both for your kind help! - David

1 Like

Hi, I tried the script but I’m having issues. When i entered var_1='freedrive is now active! stop freedrive? press yes ’ - this line was highlighted in red. did I write the script incorrectly perhaps? thanks, David

A good way to figure out script syntax is to create a program node, then look at the .script file created for that program to see how Polyscope translates the node into urscript.

In this case, this node:

creates this script line:

global var_1=request_string_from_primary_client("freedrive is now active? stop freedrive? press yes")

edit -
I set this up for text string.

for yes/no, the script line would be

global var_1=request_boolean_from_primary_client("freedrive is now active? stop freedrive? press yes")

Hi Tyler,
I am new to programming so when i tried this i got a error message for line 3. I need the gripper to close in freedrive mode then turn off freedrive. can you help please/
Thank you
Dave


This is how i lock up my gripper to a monument. I first enter freedrive and lock up then end freedrive. only thing i put into my script text is “freedrive_mode()” and “end_freedrive_mode()”