I’m sure I’m just drawing a blank on some pose_trans() or pose_inv() or something, but how do I send the robot to the same physical position regardless of what TCP is active at the time? My use case here is a tool changer. I don’t want the end user to have to have the right TCP selected all the time, since changing the Active TCP is still stupid on the UR. So I want, say, the tool flange of the robot to always go to the same spot (the cradle of the tool holder) regardless of which TCP is active.
Would a MoveJ with “Use joint angles” selected work?
Otherwise you could set a specific TCP to use for the movement instead of using the active TCP.
Mmm yeah I should have specified I’m trying to bake this all into my CAP, so I really need it boiled down to the Script. I could see if storing it as Joint Positions is independent of TCP, but for some of the moves I’ll definitely need to MoveL (like into the tool holder) and that won’t take a Joint Position as a parameter, only a Pose.
Hmm, not familiar with movement in scripts, but a look over the script manual shows that moveL may be able to take a joint position?
movel(pose, a=1.2, v=0.25, t=0, r=0)
pose: target pose (pose can also be specified as joint positions, then forward kinematics is used to
calculate the corresponding pose)
Huh. Must have missed that. I’ll give that a try and see if it works.
EDIT:
I guess I’ve just never looked close enough to see that there’s an “ignore Active TCP” option, which produces this script:
movej(get_inverse_kin(pose_trans(Waypoint_1_p, get_tcp_offset())...
So that’s the pose_trans I figured I was missing.
Hi @eric.feldmann,
if you need to move with a linear motion instead of movej, you could use:
movel(pose_trans(target, pose_inv(get_tcp_offset())))
Maybe it will be easier for you to use a movej - > theoretically movej cannot be affected. And i totally agree with “active TCP”
“Ignore Active TCP”—the UR cheat code you never knew you needed. Cradle sorted, genius unlocked.