Pose_dist vs point_dist

Can anyone explain how pose_dist is calculated? I understand that, unlike point_dist(), it takes rotations into account, but I’d like to know how it is calculated. point_dist() needs not explanation, but pose_dist() confuses me a bit, since just rotating the tool flange on the spot will produce a positive-magnitude distance due to rotation only. I would have assumed that a zero radius rotation would also produce zero distance, and that is not the case.

Any insights?

NV

Idea is that it is always non zero for two different poses, even when euclidean distance is 0. For long cartesian moves, and small tool rotations, both are the same. For short moves, and large rotations, rotation “distance” takes preference.
interpolate_pose() uses logic similar to pose_dist() to ensure non zero distance even when interpolating between waypoints that differ just by TCP rotation.

Makes sense. Euclidean distance is expressed in meters with point_dist. Which unit is the value returned by pose_dist expressed in?

Thanks,

NV

You can’t say about specific units in this case. It’s more like time that it takes for TCP to get from one waypoint to another, than actual distance traveled.
Is there any specific application that you’re thinking about?

Mainly for the calculation of parametric blend radiuses. From this it seems that point_dist should always be used for this purpose.

Thanks!

NV

So if my tool rotates about i’ts TCP, the motion describes an arc. Is the distance then the arc length? Is this how movel() works “under the hood”, e.g. it computes the pose’ distance from current to target pose and then computes in which time the move needs to be completed? And if I have a movel() with only a rotation of the tool, is the time taken for the move arc length / tool speed?

Or some pseudo code of the implementation would also help very much.