【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
更多python技巧、三维算法、算法总结、大模型请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维专业书籍推荐:《人工智能点云处理及深度学习算法》。
1 坐标轴旋转矩阵
本文坐标系来源于维基百科对欧拉角的解析,如下图所示。
坐标系[1]
假设绕X轴、y轴、Z轴的旋转角度分别为α、β、γ,分别对应旋转矩阵Rx(α)、Rx(β)、Rx(γ)。
2 旋转矩阵与欧拉角
三维旋转矩阵与旋转的先后顺序有关。假设:
sinα=s1,sinβ=s2,sinγ=s3,cosα=s1,cosβ=s2,cosγ=s3
2.1 XYZ
旋转矩阵一般左乘原始坐标得到旋转变换后的坐标,因此XYZ相乘即Z左乘Y左乘X,相当于先按Z轴旋转再按Y轴旋转最后按照X轴旋转。
维基百科中的结果如下所示:
结果一致。
2.2 ZYX
旋转矩阵一般左乘原始坐标得到旋转变换后的坐标,因此ZYX相乘即X左乘Y左乘Z,相当于先按X轴旋转再按Y轴旋转最后按照Z轴旋转。
维基百科中的结果如下所示:
α和γ定义相反,因此将s1与s3、c1与c3进行对调之后,两者结果一致。
2.3 YXZ
旋转矩阵一般左乘原始坐标得到旋转变换后的坐标,因此YXZ相乘即Z左乘X左乘Y,相当于先按Z轴旋转再按X轴旋转最后按照Y轴旋转。
维基百科中的结果如下所示:
α和β定义相反,因此将s1与s2、c1与c2进行对调之后,两者结果一致。
2.4 其它
其它结果参考维基百科,[1] https://en.wikipedia.org/wiki/Euler_angles,其定义均按照α->β->γ的顺序。
3 布尔莎(Bursa)模型
布尔莎模型是近似坐标转换,可以根据极限法则推导得到,因此需要参数取值较小,即变换前后坐标系相接近,适合对坐标系进行微调。根据极限法则,我们可以得到如下近似:
sinα=s1=α,sinβ=s2=β,sinγ=s3=γ,cosα=s1=1,cosβ=s2=1,cosγ=s3=1
sinαsinβ=0,Sinαsinγ=0,sinβsinγ=0
布尔莎模型如下所示:
详细求解参考[2]。
np.linalg.pinv(B.T.dot(B)).dot(B.T.dot(L))
https://blog.csdn.net/qq_44285092/article/details/105214412
3.1 XYZ
3.2 ZYX
3.3 YXZ
4 参考文献
[1] https://en.wikipedia.org/wiki/Euler_angles
[2] https://blog.csdn.net/qq_44285092/article/details/105214412
[3] https://zhuanlan.zhihu.com/p/45404840
5 疑问
第3节中推导得到的旋转矩阵与参考文献中的旋转矩阵正好相差一个符号,尚不清楚原因,大家可以在评论区或私信讨论。
【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
更多python技巧、三维算法、算法总结、大模型请关注我的博客:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维专业书籍推荐:《人工智能点云处理及深度学习算法》。