Use FCRefLine in an non-oscillating way

Hello everyone!
For a project, we'd like to make the robot move along a straight line in Z-Direction while reacting to forces in the X and Y directions. We can do this using a FCRefLine in FC_LIN_Z and a FCRefForce \Fx:=0, \Fy:=0.
This works nicely, except for the fact that FCRefLine only works in an oscillating way, meaning once it has reached the end of the line, it will reverse its direction and move back.
Is there anyway to disable the oscillation or to detect, if the end of the line has been reached so we can disable the reference?

Using FCCondPos seems to be an option but is currently not feasible for us since we don't want to use FCCondWaitWhile to wait for stop conditions but need to use our own condition function.


  • FCRefLine has an argument for Distance which controls the TCP oscillating between positive and negative values, I would imagine setting this to a very small number would result in minimal oscillation.To detect whether the end of the line has been reached, track the robots position using CRobT()
  • Thanks for the response!
    The method to monitor the tool pose using CRobT during force control seems to be the closest we can get to us as well right now, so we'll probably do that. We were just wondering, if there was a "cleaner" way to detect if the robot has reached the end of one oscillating cycle and then stop it, since this information has to be stored somewhere in the controller already anyway.

    Setting the distance to a small value won't work for us though, because we use the FCRefLine for an insert motion in this case and the distance specifies, how much the robot will move in Z-direction before oscillating back again. If we set this to a small value, the robot will not really move much along the Z-axis at all.

  • I would think that a combination of WaitUntil/InPos followed immediately by FCRefStop might get you where you need to be