如何通过仅使用2个欧拉角将源矢量旋转到目标(到最近的矢量)

问题描述 投票:0回答:1

我需要通过仅围绕两个轴YZ旋转来将源3D矢量旋转到目标矢量。

我有机制,2个电机围绕Y旋转,然后绕Z.我有随机源矢量附加到这个机制。

我认为源矢量不能通过仅使用2个角度旋转到随机目标3D矢量,我需要将其旋转到最接近目标矢量。

我只需要对齐方向,而不是坐标。

使用旋转矩阵,四元数等的最佳方法是什么?

我可以计算从源向量到目标的shortestArcQuat。然后将目标矢量乘以该四元组的倒数。然后从旋转矩阵获得YZ角度,并将prev操作的结果作为Z向量,但我认为这是错误的。

解决方案应该是分析性的。

matrix vector geometry coordinates robotics
1个回答
0
投票

为了清楚起见,让我定义单位向量

E1 = (1,0,0)
E2 = (0,1,0)
E3 = (0,0,1)

给定旋转矩阵R,目标是将其反转为两个旋转矩阵,围绕轴E2旋转角度“a”并围绕轴E3旋转角度“b”:

R = exp(a E2) exp(b E3)

将双方乘以E3

R E3 = exp(a E2) exp(b E3) E3

我们得到:

W = exp(a E2) E3

其中W是由R旋转的向量E3:W = R E3

a = atan2( W • E1, W • E3)

其中(•)是点积。

现在进行R的转置我们得到:

R^T = exp(b E3)^T exp(a E2)^T

将双方乘以E2:

R^T E2 = exp(b E3)^T exp(a E2)^T E2

R^T E2 = exp(-b E3) exp(-a E2) E2

S = exp(-b E3) E2

其中S是由R ^ T旋转的矢量E2:S = R ^ T E2

b = - atan2( S • E1, S • E2)

我刚刚推导出这些方程式,所以这是未经测试的,可能存在一些错误。按原样使用。

© www.soinside.com 2019 - 2024. All rights reserved.