I would like to know which of the Robot controller outputs (e.g. actual_TCP_force) that I can get from the RTDE are comparable to the values I get from the URScript with the function get_tcp_force(). Are those the forces and torques calculated at the TCP that was set by the user (I guess so) or those at the flange? And can anybody tell me how the robot calculates the forces? Are they calculated using the currents from the joints’ electric motors?
those are the forces and torques at the TCP set by the user (which is by default the flange)
For UR CB-Series, as you mentioned, they are calculated with the joint force sensors.
the UR e-Series has its own force-torque sensor at the flange and is therefore much more precise
The force is calculated by monitoring the current consumption of the joints in the robot, from there the torque is determined and force is calculated. This is why the accuracy on the CB units are +/- 10 N.
As @m.birkholz mentioned the E-Series has its own force-torque sensor which provides a more accurate reading.
The script function get_tcp_force() returns the wrench ([Fx,Fy,Fz, TRx,TRy,TRz]) vector at the TCP. Where Fx,Fy,and Fz are in the axes of the base coordinate system.
The RTDE function actual_TCP_force returns a generalized force vector on the TCP.
The force values from the RTDE function (actual_TCP_force) of the UR10 are confusing since they seem to oscillate between 300 and -300N during some movements. Is there a possibility to compare the wrench from get_tcp_force() to the generalized forces from actual_TCP_force to find out whats going wrong? Currently I try to write these values into an output register inside a while loop but I found the register from the UR-Script beeing a float register while that of the RTDE I use to get the robot data to the PC is a double register. So I can use write_output_float_register(i,ft_vector[i]) but if I read “output_double_register_0-5” on the PC these should be double not float or am I wrong?
What exactly does this mean? Generalized in what manner?
When our UR5e first starts up and is powered, the actual_TCP_force topic from the RTDE appears to map force directed in tool -Z as appearing in the -X direction. Force directed in tool +X appears as force in +Z, and force directed in tool +Y maps to force in +Y.
This is with the tool head aligned to the base frame. Setting and modifying the TCP seems to make no difference. Changing the position of the robot does change where the force appears on the RTDE interface, so it appears to be relative to some external frame of reference different than the stand.
There have been other occasions where when attempting to map the input to this unknown frame that the frame forces are relative to seems to change suddenly.
What is the correct way to set the frame the actual_TCP_force is relative to?