DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.
Nicolas_Lauzier

@Grady_Turner @Hennie

I think Grady is right. Another possibility is that if the increment is too high, the robot will check for the force level between each motion only and therefore a high force can be induced if the the contact is with a rigid object. This high force may cause a "sudden stop".

Another way of implementing this would be the following:
- Insert a "if" with the option "expression checked continuously" select. The condition could be, for example, "if Fz >= -10".
- Inside the "if", place a relative move, for example a 10cm downward motion
- Make sure you have a "set zero" before the motion (or before the "if"), when there is no contact with the tool.

This will make sure that the robot moves until the force meets a certain threshold (in this case 10N upwards). You will need to increase the speed gradually as a high speed will make the real force exceed the threshold (the robot needs time to stop).

This alternative method works well when you need to move until a certain force is reached, but is not meant to control a force continuously.

bsawlor

zoomzoom

matthewd92

@bsawlor the only thing that I see in your code that is different from what we do on a daily basis is the else statement attached to each of the continuos if statements, we just use the if with the check box checked for motion.  The other thing that we usually do differently and I cannot see it mattering is we have the if statement inside the movej so that only a waypoint is inside there and maybe a flag so that we know whether we made the point or exited early such as 


global didWeMakeThePoint = False
movej
  waypointBeforeMyForceControlledOne
  while Mz <.2 # The if statement with the checkbox checked effectively becomes a while statement
    waypoint
    didWeMakeThePoint = True
  end
 open gripper
 
At this point I will usually evaluate whether we made it or not, depending on the task, to determine what my next step is.  If all I am doing is using this as a search method then I don't care but if its trying to insert something without faulting on overload then I will use this to know whether the part was inserted for example


The one thing that I will say is that we have not deployed too many robots with the robotiq URCap, we mainly use the script functions since they seem to run faster for us for whatever reason.  Maybe try using the script function rq_open_and_wait() instead of the program node from the URCap.  I will be doing some testing in the next couple of days to actually quantify that position and will post the results here.

If you want to send over the program I can try to take a look at it as well more closely where I can click around and see if anything pops out at me or I am sure there are others on here as well that can also look at it if you don't mind it being on here in a public forum.  If not you can email it to me at mbush@hirebotics.com