DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.


in our PC based UR robot application we would like to provide a control panel for manual robot control of an URe robot like you know it from the UR robot teach pendant. That means the user should be able to manual move the robot in tool space (with respect to tool) and in base space (wrt base). We are almost there. We use the servoj command to implement this kind of control. To do this, we manipulate the pose that is given in cartesian space and then convert this with the get_inverse_kin function into joint position that are passed to the servoj function (see the thread jog_thread(): function here:

A UR robot pose is given as p[x,y,z,ax,ay,az], where x,y,z is the position of the TCP, and ax,ay,az is the orientation of the TCP, given in axis-angle notation. The x, y and z coordinates are seen from the Base position whereas the Rotation (ax, ay, az) of the Tool head is seen from the tool head position itself. To move with respect to the base frame, we can simply add a value to the x, y, z coordinate of a pose. To move with respect to the tool, we use the pose_trans function like it is written here ( To rotate with respect to the tool, we can simply add an angle to the ax, ay and az part of the pose. This all works perfectly fine. But in the teach pendant it is also possible, to rotate with respect to the base frame. And this is something that we do not know how to implements this. That means, we do not know, how to translate a pose rotation wrt to the tool into a rotation wrt to the base frame.

Is there something like the pose_trans function to translate a rotation wrt to tool into a rotation wrt to base? Or does someone know the math how to do this?  Or does someone know, how this functionality is implemented in the teach pendant.

Thanky in advance for any help.