防止万向节锁定角度轴转换,y轴旋转90度

时间:2017-11-19 14:13:15

标签: unity3d math 3d

我想在目标表面贴一个贴纸。我使用深度凸轮和机器人手臂。

设置是这样的。 harmony branch

我知道y轴上会有万向节锁,因为目标与z轴平行。

M1: cam2targetT:
 0.933286 -0.358041 0.0279849 -0.250368
-0.162293 -0.489985  -0.85649 0.0660773
 0.320371  0.794808 -0.515404   1.03789
        0         0         0         1

M2: arm2camT:
        0  0.707107  0.707107       0.1
        1         0         0      0.53
        0  0.707107 -0.707107      0.96
        0         0         0         1

Mf: arm2tagetT:
 0.111778  0.215542 -0.970075  0.880623
 0.933286 -0.358041 0.0279849  0.279632
-0.341295 -0.908486 -0.241184  0.272825
        0         0         0         1

当我将命令发送到UR手时,它采用这种格式。 我用过这个

Eigen::AngleAxisd newAngleAxis(mat);
std::cout << newAngleAxis.angle() << "\n" << newAngleAxis.axis() << "\n\n";

我得到了这个: 3.87376  0.700441  0.470301 -0.536842

UR的最终命令就是这个姿势。

Mf in axis-angle T:
0.880623,0.279632,0.272825
AngleAxisd R:
2.71334,1.82184,-2.0796

正如预期的那样,万向节锁定发生了,所以问题是,在这种情况下如何找到正确的角度轴?问题可以通过四元数来解决吗?

P.S。我不认为我可以改变UR中的旋转顺序。

0 个答案:

没有答案