UR5e: How to drag the TCP around a sphere?

  1. Move the TCP to the point directly above the object to be observed (as a point on the sphere);
  2. The object to be observed below is the center of the sphere;
  3. Manually drag the TCP to keep it in spherical motion。

Question:

If I want to manually drag the TCP, in which mode can I achieve movement around the sphere? Freedrive mode, forcemode or other modes?

This problem has troubled me for a long time. How can I achieve this?

Help!

thanks

You will have to set your TCP in the middle of the sphere. But then you can use freedrive or force with compliance in RX, RY and RZ.

Hi efn

Thank you for you reply. Your approach is a good idea, and I’ve done it that way.

Now, I can drag the TCP to perform spherical motion. But a new issue has emerged.

When I repeatedly drag it , after moving to a certain angle and trying to return, it becomes very difficult to go back. e.g. when I push the TCP forward to the left, it moves easily to the desired position. But when trying to return to the previous position, it becomes very hard to control.

My approach:

  1. Get default tcp offset: tcpoffset = get_tcp_offset();
  2. The sphere center is positioned 30 cm along the positive Z-axis of the current TCP: newtcpoffset = pose_trans(tcpoffset, p[0,0, 0.3, 0,0,0]);
  3. Set TCP in the middle of the sphere : set_tcp(newtcpoffset);
  4. freedrive_mode(freeAxes=[0,0,0,1,1,1], feature=““tool””).

Is there an issue with the above ?

The new TCP is virtual, not rigid. Could it be that the observation center isn’t fixed during spherical dragging, causing unintended axial rotation and inaccurate force during manipulation ?

Thanks in advance !

I recall having observed some strange behaviour of freedrive when using it extensively before. Maybe it’s similar.

In these cases, I think it helps to disable and enable freedrive again. And make sure the tool of the robot is not touched when freedrive is enabled (for zeroing the force/torque sensor before use).