问题描述
我正在尝试理解 3D 旋转向量到旋转矩阵的转换。 假设我有一个 3D 旋转向量 [a b g]。从 Trucco 等人的“3D 计算机视觉介绍技术”中,我相信我可以将其表示为每个轴 x、y、z 的旋转矩阵的乘积。
但我更经常看到使用罗德里格斯公式将旋转向量转换为矩阵,该公式在下图中给出了 A.17
我正在 Matlab 中测试这些(我在执行 Rodrigues 的 Matlab 图像处理工具箱中使用内置的 rotationVectorToMatrix 函数),并且我获得的小旋转结果彼此非常接近,例如
alpha = 1 * (pi/180);
beta = 2 * (pi/180);
gamma = 3 * (pi/180);
R = [(cos(beta) * cos(gamma)) (-cos(beta)*sin(gamma)) sin(beta);
sin(alpha) * sin(beta) * cos(gamma) + cos(alpha)*sin(gamma) ...
-sin(alpha) * sin(beta) * sin(gamma) + cos(alpha) * cos(gamma) ...
-sin(alpha) * cos(beta); ...
-cos(alpha)*sin(beta)*cos(gamma) + sin(alpha)*sin(gamma) ...
cos(alpha) * sin(beta) * sin(gamma) + sin(alpha) * cos(gamma) ...
cos(alpha) * cos(gamma)]
Rm = rotationVectorToMatrix([alpha beta gamma])'
我明白
R =
0.9980 -0.0523 0.0349
0.0529 0.9984 -0.0174
-0.0339 0.0193 0.9985
Rm =
0.9980 -0.0520 0.0353
0.0526 0.9985 -0.0165
-0.0344 0.0184 0.9992
但是随着我的角度变大,它们有点发散,例如如果我这样做
alpha = 10 * (pi/180);
beta = 20 * (pi/180);
gamma = 30 * (pi/180);
我明白
R =
0.8138 -0.4698 0.3420
0.5438 0.8232 -0.1632
-0.2049 0.3188 0.8529
Rm =
0.8089 -0.4578 0.3689
0.5166 0.8530 -0.0742
-0.2807 0.2506 0.9265
我真的只是想在这里更好地理解,这些从旋转向量转换为矩阵的方法是否等效?我应该一直使用罗德里格斯方法吗?如果是为什么?感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)