关于两个不同基的变点表示法

2024-09-27 09:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python编写一个程序,它将使用一个点坐标(XYZ-ABC),例如: 点=X 100,Y 200,Z 120,A-90,B 0,C O 关于基础: B=X 0,Y 200,Z 0,a0,b0,c0 并求出同一点相对于另一个基准的坐标: A=x100,Y 200,Z 0,a0,b0,c0。我不知道从哪里开始的三维变换。我还有转换.py图书馆。我需要一些关于如何去做这件事的提示,在数学方面我必须遵循这些步骤。在


Tags: py程序图书馆步骤基准数学b0a0
3条回答

我来了。 找到点Pfa的变换,即相对于帧A,相对于帧B。Pfb?? 这个例子是有用的转换位置或点,从一个帧到另一个在Kuka工业机器人。同样,对于任何基或框架的仿射变换,我们只需考虑齐次变换矩阵的旋转次序。在

  A = Rz
  B = Ry
  C = Rx
 Fa_mat  > Homogeneous transformation matrix(HTM) of Frame A, relative to World CS(coordinate system).
 Fb_mat  > HTM of Frame B, relative to World CS.
 Pfa_mat  > HTM of point A in Frame A.
 Pfb_mat  > HTM of point B in Frame B.
 Pwa_mat  > HTM of point A in World CS.
 Pwb_mat  > HTM of point B in World CS.

 If Pwa == Pwb then:

 Pwa = Fa_mat · Pfa_mat
 Pwb = Fb_mat · Pfb_mat
 Fa_mat · Pfa_mat = Fb_mat · Pfb_mat
 Pfb_mat = Pwa · Fb_mat' (Fb_mat' is the inverse)

我用了Tait-Bryan-ZYX角来表示旋转矩阵euler angles - Wikipedia. 这是我的python代码:

^{pr2}$

笛卡尔坐标是机器人的坐标。XYZ(平移)和ABC(Rz,Ry,Rx旋转)欧拉角,相对于基础或帧。我需要(我想)找到这个位置的单位向量矩阵。这是我目前所做的:

C(b)C(a)    S(c)S(b)C(a)-C(c)S(a)    C(c)S(b)C(a)+S(c)S(a)   x
C(b)S(a)    C(c)C(a)+S(c)S(b)S(a)    C(c)S(b)S(a)-S(c)C(a)   y
 -S(b)      S(c)C(b)                   C(c)C(b)              z
   0           0                          0                  1
//For example point P= [X -534.884033,Y -825.747070, Z 1037.32373, 
A -165.214142,B -3.16937923,C -178.672119]

enter image description here

我也读过这个问题,但我不明白我该怎么做。目前我正在Excel表格中做一些计算,试图弄清楚该怎么做。 我还要说,这个位置是关于一个坐标系的坐标系。在这种情况下,此帧的值为:

^{pr2}$

enter image description here

现在,如果我有第二帧Fb:

Fb= [X 0, Y -1168.71704, Z 372.404694000000, A -179.72329, B -0.2066, C 0.8562]

我知道我关于Fb的p点应该是:

Pfb =[X -1106.036,Y -822.9583, Z 1039.342,A -165.2141, B -3.169379,C -178.6721]

我知道这个结果,因为我用了一个程序,可以自动计算,但我不知道它是如何计算的。在

给定原点向量O=(X, Y, Z)和旋转矩阵R(注意,有许多变体),具有相对坐标p=(x, y, z)的点的绝对坐标由下式给出:

P = R p + O.

第二帧

^{pr2}$

给出了第一帧到第二帧的局部坐标方程

p' = R'*(P - O') = R'*(R p + O - O')

其中*表示转置(也是旋转矩阵的逆)。在

相关问题 更多 >

    热门问题