Sensitivity of "Until Contact"

Good morning,

for my pick and place program, I´m using the "stop"function “until contact”:


When the robot is “dropping” the equipment and detects a collision, he will move 100mm backwards.
Unfortunally that “contact detection” is extremly sensitive. Is there any possibility to change the sensitivity of that?

In my case the robot will place bottles into a carton. If it only slighty “hits” the carton (u cannot even really see that it hits it) the robot will move back the 100mm. Therefore I want to adjust the sensitivity.

Thank you very much for your help.

Kind regards from Luxembourg!

Use the “Expression” option and select force() from the dropdown. So it would be something like “Direction until force() > 10” for 10 newtons. Just be sure to use the zero_ftsensor() command before doing this to zero the force torque sensor.

I see the same behavior all the time. I slide parts inside a vise to hit a stop. If I go too slowly it will stop by simply rubbing on the jaw with the part. If I speed it up it tends to make it beyond the friction it feels from rubbing.

I only use the Direction nodes, I don’t do it via script. So if Eric’s suggestion doesn’t work try what I suggested. Doubling the feed rate usually works. I use anywhere from .3 to 1 when doing this, and 1.5 to 2 if I start seeing false positives.

Good morning @eric.feldmann
could you maybe send me a screenshot? I didn´t really get it.

thank you in advance

Good morning @fuknrekd

yeah that´s what i do. For testing the guys wanted to see the process in slow speed (Slider was about 12%).
With a speed that slow, we the sensor detects a contact… When we are running at 100% it´s fine.

Nevertheless, If i got you guys right, there is no possibility to directly adjust the sensitivity of the “Stop-Function at contact”, right?

Correct, no way to adjust the sensitivity of the until contact node. It actually doesn’t use force to detect it, it uses the TCP speed + direction to determine when it hits something. Here’s what I mean about using force():


Finally, just add a “Script” node before the Direction node, and manual type “zero_ftsensor()” into the f(x) bar that shows up.



Hallo @eric.feldmann,

sorry for my late response.
I´ve quickly tried your program suggestion. But I don´t understand how its suppose to work.


I go to a PrePick Position, then i want to go down to a pick position. When i delete Line 6 (pick Position)
The Robot just moves down and stopps with Safety-Stop.

I´m not getting the functionality of Line 7 and 8.

What i wanted to do is:

Robot is above the Bottles (PrePick). Now when the Robot gets a “Pick-Signal” it will move the Z Axis down until it reaches the Pick Position. If the bottles are not in the right Position it will crash. For that case i dont want a safety stop. I just want the Robot to move Z Axis up again and send a Signal to my PLC. So the Operator can put the Bottles at their correct position. Once the operator has it done, he should press a Button and the Robot will try again to Pick.

Greetings from Luxembourg.

So assuming your “Pick” point is all the way down on the bottle, I can believe you’re getting the behavior you’re seeing. Take a look at the code. We’re telling the robot to MoveL to the pick location, then AFTER it gets there, to move Z- until it sees more than 2 newtons of force. So it isn’t trying to move with force until it’s already at the pick position (which, as you’re seeing, is too late).

I’m like 90% sure it works the way I’m going to show, but if not, you’ll have to use multiple “Until” expressions.

You can actually add “Until” statements right there in the Waypoint. So, assuming your PrePick node is directly above the Pick waypoint, and the Pick goes straight down in Z, you can add the “Until” expression right there in the waypoint. You can then “Add Action” to the Until in order to send the popup to the operator, and any additional looping logic to re-run the sequence after adjusting the placement of the bottle.


In the above image, the program will continue execution to the PostPick waypoint if A) the robot made it to the Pick location, or B) the robot encountered more than 2 newtons of force while trying to get to the Pick location. However, if the robot simply was able to get to the Pick waypoint, then the Popup would not execute. You may need to include a StopJ(2) or similar in the force’s Action if you go this route. Otherwise, you can also remove the Pick node entirely and use purely the Direction command. Add one Until to capture the force (and throw your error) and another Until based on distance that serves as a “correct” placement.

Good Morning @eric.feldmann,

first of all, thank you soooo much for all of your support. I really appreaciate that.

I tried to implement a short test Program:

What I dont understand is, why does the Roboter stop in this case? Shouldn´t the robot “only” stop when the force is >10N?
I didn´t even put bottles there. So basically the Robot will only go down to the Position and go up again.
But when i say “force() > 10” it always stopps. So i made myself a new variable to read out the force value (which is 6.88).
Do you have any idea why the Robot stops (no safety stop)? and the Pop-UP is shown?

In “best” case, (if the Robot detects a crash (because the force gets to high) i want the robot to move its Z axis, so that the operator has enough space to put the bottles back to their normal position.

I know I have plenty of questions, but I´m not really understanding the Robot…

Thank you very much.

Many greetings from Luxembourg!


Ok i guess i found my mistake (even tho i don´t understand it).

My test code is now like that:

When i put the speed at 200 mm/s the Robot stopps with safety stop. If i keep the speed at 150 its working. But I´m not sure if the whole process then is too slow.

When i run at 150 and i have a crash, i can see that the Force value goes up to 160.

I just don´t understand why the robot goes into a safety stop when i increase the speed…

If the robot is generating a safety stop when the speed is at 200 then it’s probably because your safety settings are set too conservatively (too low) for this intended use. You can test this theory by increasing them.

Hi @bba,

it only generates a safety stop when i try to check the force >12.
Before (when i didn´t use that force >12) the robot didn´t stop via safety.
I used the until detection function (but that is too sensitive).
So tbh I don´t understand the relation between the measurment of the force and the cause of the safety stop.

Kind regards from Luxembourg.

OK, so it sounds like the two scenarios you have tried are :

  1. MoveUntilToolContact - no safety stop but it stops early because of side friction, etc.
  2. Use Force>12 to stop but it generates safety stops.

Technique #2 is generating safety stops because it is moving with greater speed and force AND, MoveUntilToolContact is just a much more sensitive and compliant method (it is less vulnerable to safety stops).