Universal Robots Forum

Payload compensation with RTDE force injection

With the Robotiq FT300 sensor, we have a calibration process to remove the payload effect from sensor values.
With force injection, we must send the non-compensate sensor value to RTDE because the robot controller applies the payload compensation itself. The payload compensation is correct for the forces but it seems to have an error with moments.
To identify the error, we send a null wrench ([0,0,0,0,0,0]) to RTDE external forces and run a program to modify the payload and read the forces. We place the robot tcp in the same orientation than the base to simplify. So the program begin with:

set_tcp( p[0, 0, 0, 0, 0, 0] )
movel( p[-0.1, -0.4, 0.15, 0, 0, 0] )
enable_external_ft_sensor(True, sensor_mass = 0.0, sensor_measuring_offset = [0.0, 0.0, 0.0], sensor_cog = [0.0, 0.0, 0.0])

Here the result :

payload                                           expected wrench                       actual wrench
set_payload(1.0, [0, 0, 0])                   [0, 0, 9.82, 0, 0, 0]                     [0, 0, 9.82, 0, 0, 0]            Ok
set_payload(1.0, [0.1, 0, 0])                 [0, 0, 9.82, 0, -0.982, 0]             [0, 0, 9.82, 0, 0.982, 0]     My have ba sign
set_payload(1.0, [0, 0.1, 0])                 [0, 0, 9.82, 0.982, 0, 0]              [0, 0, 9.82, -0.982, 0, 0]     Mx have bad sign

It looks like the applied moment are not compensated but added to the sensor values ?

Hi @malacasse , sorry for the really long delay in response on this. It seems that your observations are correct, but why this would be the case I don’t know. We will look into it.

1 Like

What software version have you used to create these findings?

I reproduce these findings on Polyscope 3.5.4.10845, 3.6.0.30512 and 3.7.0.40137

Thank you, the issue have been reported.

@jbm @ajp

Do you have any news on this issue ?
thanks

@malacasse
We are unable to reproduce this behavior.

Here are files to reproduce the behavior.
rtde_force_injection.tar.gz (14.5 KB)

Step to reproduce:

  • open ursim-3.11.0 with UR5
  • start force injection
    # python force_injection.py
  • open program rtde_force_injection.urp and start the program

This is the output I get in the Log window

expected wrench: [0, 0, 9.82, 0, 0, 0]
actual wrench: p[0, 0, 9.82, 0, 0, 0]

expected wrench: [0, 0, 9.82, 0, -0.982, 0]
actual wrench: p[0, 0, 9.82, 0, 0.982, 0]

expected wrench: [0, 0, 9.82, 0.982, 0, 0]
actual wrench: p[0, 0, 9.82, -0.982, 0, 0]

rtde_force_injection_nonzero_wrench.tar.gz (16.9 KB)

In the archive attached above, I added an example to the files submitted by Marc-Antoine that demonstrates a similar problem with the moment transfer for an injected wrench with non-zero forces, when a TCP offset is used. This problem can be reproduced using the steps:
- open ursim-3.11.0 with UR5
- start force injection:
# python force_injection_nonzero_wrench.py
- open program rtde_force_injection_nonzero_wrench.urp and start the program

Test conditions:

  • injected wrench [0,0,10,0,0,0]

  • robot is positioned such that the TCP is aligned with the Base

  • zero payload, zero sensor payload, and zero sensor measuring offset

  • with TCP offset p[0.2,0,0,0,0,0]
    Result: wrench given by get_tcp_force() is [0,0,10,0,-2,0]
    Expected result: wrench given by get_tcp_force() is [0,0,10,0,2,0]

  • with TCP offset p[0,0.2,0,0,0,0]
    Result: wrench given by get_tcp_force() is [0,0,10,2,0,0]
    Expected result: wrench given by get_tcp_force() is [0,0,10,-2,0,0]

Hi @jbm, have you been able to reproduce the behavior with the files I provide.

1 Like