Currently, I am working on a project to create an impedance controller for the ur5e. I managed to create an impedance controller with force_mode().
However, in forcemode(compliance=[1,1,1,1,1,1]) the robot is only compliant at the TCP, there is no compliance when touching the robot anywhere but the TCP. For my project, it is important that the robot is compliant everywhere, not only at the TCP.
Is it possible to also have compliance in forcemode when you touch the robot somewhere else than the TCP?
Right now I am controlling the Wrench vector externally with the RTDE. The external application calculates the wrench based on the joint state of the robot, and force_mode() is continuously running in a loop on the robot in a URScript program.
Is it possible, with the method in the link above, to enable compliance on the whole robot?
I now use the freedrive_mode() command before the forcemode() loop:
1.- freedrive_mode()
2.- Loop while run==True:
3.- …sync()
4.- …force_mode()
5.
6.- end_force_mode()
7.- halt
However, I still have only compliance at the TCP.
Placing freedrive_mode() inside the loop with force_mode() and an extra sync function, the program constantly switches from freedrive to not freedrive to freedrive… So it seems that the robot cannot be in freedrive_mode and force_mode at the same time.
Does this mean that it is not possible to have compliance on the whole robot while the robot is in force_mode()?