RoboDK Forum
Python API Pose gives odd behavior- Printable Version

+- RoboDK Forum (//m.sinclairbody.com/forum)
+-- Forum: RoboDK (EN) (//m.sinclairbody.com/forum/Forum-RoboDK-EN)
+--- Forum: RoboDK API (//m.sinclairbody.com/forum/Forum-RoboDK-API)
+--- Thread: Python API Pose gives odd behavior (/Thread-Python-API-Pose-gives-odd-behavior)



Python API Pose gives odd behavior-chris_UW-04-29-2020

I Have the following test code block


Code:
from robodk import Pose
def test(abc):
a,b,c = abc
p = Pose(0,0,0,a,b,c)
print (p)


test((30,89,0))
test((30,90,0))
and I get the following output:


Code:
Pose(0.000, 0.000, 0.000, 30.000, 89.000, 0.000):
[[ 0.017, -0.000, 1.000, 0 ],
[ 0.500, 0.866, -0.009, 0 ],
[ -0.866, 0.500, 0.015, 0 ],
[ 0, 0, 0, 1 ]]

Pose(0.000, 0.000, 0.000, 0.000, 90.000, 30.000):
[[ 0.000, -0.000, 1.000, 0 ],
[ 0.500, 0.866, -0.000, 0 ],
[ -0.866, 0.500, 0.000, 0 ],
[ 0, 0, 0, 1 ]]


Note the angles of the two outputs. In the second Rx and Rz appear to be swapped.

Perhaps I don't understand the coordinates but the second output seems wrong to me.

Can anyone confirm that this is bad behavior or explain why its not?


RE: python API Pose() gives odd behavior-Albert-04-29-2020

This is not a bug or a bad behavior. The Pose command uses an Euler angle representation (Rx->Ry'->Rz''). Using this representation, when the Ry value is 90 deg (your b value), Rx and Rz are redundant.

These 2 transformations are very similar:
Code:
from robodk import *

pose1 = Pose(0.000, 0.000, 0.000, 30.000, 89.000, 0.000)
pose2 = Pose(0.000, 0.000, 0.000, 0.000, 90.000, 30.000)

# Calculate error:
pose1to2 = pose1.inv() * pose2
print(pose1to2)
# Outputs: Pose(0.000, 0.000, 0.000, -0.000, 1.000, -0.000)

The 4x4 matrix you see is a pose and it represents the 6D transformation. You can see a very small change between the 2 poses.

More information here:
//m.sinclairbody.com/doc/en/PythonAPI/robodk.html#robodk.Pose
//m.sinclairbody.com/doc/en/Basic-Guide.html#RefFrames
//m.sinclairbody.com/blog/robot-euler-angles/

Albert