Python(机器人模块):转换hom。变换(旋转)矩阵和欧拉或RPY角度

时间:2011-08-25 14:43:44

标签: python

我在Python http://code.google.com/p/robotics-toolbox-python/中的机器人工具箱(cq机器人模块)中使用,我完全混淆了如何解释以下转换结果(我以前做过这样的事情总是可以解决它们......)。

关于x轴的简单phi = PI / 10旋转产生以下(3x3)旋转矩阵:

R = 
 [ 1.          0.          0.        ]
 [ 0.          0.99609879 -0.08824514]   
 [-0.          0.08824514  0.99609879]]

(其中0.996 .. = cos(phi)和0.0882 .. = sin(phi))

具有相应的(4x4)齐次变换矩阵:

T = | R 0 | =
    | 0 1 |

[[ 1.          0.          0.          0.        ]
 [ 0.          0.99609879 -0.08824514  0.        ]
 [-0.          0.08824514  0.99609879  0.        ]
 [ 0.          0.          0.          1.        ]]

将T转换为角度表示会产生以下结果:

RPY(滚动,俯仰,偏航)角度(围绕z,y和x轴, 分别 ,......我猜):

print robot.tr2rpy(T)

[[ 0.          0.          0.08836007]]

问题:x旋转如何成为最后一个元素(而不是第一个元素)....?

此外:

欧拉角(围绕x,y和z轴, 分别 ,......我猜):

print robot.tr2eul(T)

[[-1.57079633  0.08836007  1.57079633]]

(= [[-PI / 4,sin(phi),PI / 4]])

问题:我的解释(围绕x,y,z轴顺序旋转)告诉我结果是错误的......?

我错过了什么?感谢。

- Henk

1 个答案:

答案 0 :(得分:0)

解决:

对于连续的角度,a [0],a [1],a [2],

1)对于欧拉角,这些是围绕Z-Y-Z轴的连续旋转;

2)对于RPY角,这些是连续的Y(aw)-P(痒)-R(滚动)旋转(即绕Z-Y-X轴)。