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:
Get default tcp offset: tcpoffset = get_tcp_offset();
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]);
Set TCP in the middle of the sphere : set_tcp(newtcpoffset);
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 ?
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).