Forum Migration Notice
Update (2026-01-21): The user forums are now in read-only mode pending the data migration.
Update (2026-01-12): The user forums will be put into read-only mode on the 21st of January, 00:00 CET, to prepare for the data migration.
We're transitioning to a more modern community platform by beginning of next year. Learn about the upcoming changes and what to expect.
Update (2026-01-12): The user forums will be put into read-only mode on the 21st of January, 00:00 CET, to prepare for the data migration.
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?
grth46
✭
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?
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?
Tagged:
0
Answers
-
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.
1 -
Thanks @Ekhi for the suggestion, but I've already tried similar solutions to the one you mentioned.
The problem is that I have to generate a clear contact force with a fixed tcp speed. This speed is most of the time 100 mm/min, which is pretty fast when pressing on a rather stiff surface. I've used a combination of FCAllowMoveTrue and FCCondwaitwhile, where I just activate Force Control with all axes at maximum damping (FCInfinity) and after that I just call a Move instruction with my desired speed. The downside of this is though that the robot actually overshoots quite significantly over its target force when it presses on a hard component. For example target force 300 N and the robot overshoots up to 500 N.
Therefore I wanted to see if in any way it is possible to solve both of these problems at the same time to some degree, e.g. a minimal deviation from both target force and tcp speed would be acceptable.
0 -
hello,
It will never be possible to remove the overshoot. That is physics, you can not "instantly" stop.
Like a car : if you push the breaks when you are already in the wall, it is too late.
As explained before in force control mode you will not get a constant speed, it is proportional to the measured force.
So you should try with searchL, because the stop might be faster and you should have a "constant" overshoot.
So perhaps you can "calibrate" it e.g with serachL to 300N maybe you will get overshoot of 100N all the time.
But here 100mm/s anyway sounds "high" speed for such stiff contact situation. Try 10mm/s. Overshoot will be smaller.
Or change to an other kind of sensor : e.g distance sensor.
0 -
Categories
- All Categories
- 5.7K RobotStudio
- 402 UpFeed
- 21 Tutorials
- 16 RobotApps
- 307 PowerPacs
- 407 RobotStudio S4
- 1.8K Developer Tools
- 251 ScreenMaker
- 2.9K Robot Controller
- 368 IRC5
- 92 OmniCore
- 8 RCS (Realistic Controller Simulation)
- 859 RAPID Programming
- 43 AppStudio
- 4 RobotStudio AR Viewer
- 19 Wizard Easy Programming
- 111 Collaborative Robots
- 5 Job listings