Forum Migration Notice
We're transitioning to a more modern community platform by beginning of next year. Learn about the upcoming changes and what to expect.

How to control speed change during FCRefForce movement?

I am using the following code to achieve a contact force between tool and workobject.

                FCRefForce\Fz:=500;
                FCCondForce\ZMax:=500,60;
                FCSetDampingTune 9E+09,9E+09,6250,9E+09,9E+09,9E+09;
                FCRefStart;
                FCCondWaitWhile;
                FCRefStop;

The robot starts moving into the part to get to the reference force and reduces the TCP speed dramatically during the last few Newtons of force. I've been told, that the combination out of FCRefForce and Damping Tune defines a fixed TCP speed. I want it to maintain the TCP speed along all the way until the force of 500 Newtons. Is there any way to control this?

Answers

  • Ekhi
    Ekhi mod
    edited December 2025
    Hello @grth46
    In the ForceControl application manual, chapter 6.2 Damping and LP-filter you can find a description about how the force control loop works.
    The speed in a given direction is : (Reference Force - Measured Force)*Damping
    With damping unit in N/(m/s). This control loop runs at 2000Hz.
    So when the robot has no contact "in the air" : Measured force is 0, then the speed is ReferenceForce*Damping. 
    When robot start to have contact, it will "smoothly" reduce speed to reach and stabilize desired contact Force.
    If the robot is moving onto a soft material, the measured contact force is progressively increasing.
    You can not have "constant" speed all the way.

    So maybe you should consider a different approach : 
    In a background task call "FCGetForce" every 0.1second, and set a bool to TRUE when you reach 500 Newton.
    In the Motion Task, use a SearchL that will stop when the bool is TRUE.
    This will be "pure" motion control with constant speed, and no force control loop.