赞
踩
此计算公式基于内在旋转(intrinsic)与泰特-布莱恩角(Tait–Bryan angles)。
- yaw = atan2(2.0*(qy*qz + qw*qx), qw*qw - qx*qx - qy*qy + qz*qz);
- pitch = asin(-2.0*(qx*qz - qw*qy));
- roll = atan2(2.0*(qx*qy + qw*qz), qw*qw + qx*qx - qy*qy - qz*qz);
关于内在旋转(intrinsic)与泰特-布莱恩角角的解释:
对于每个旋转序列,又有内在旋转(intrinsic rotations)和外在旋转(extrinsic rotations)两种方式。设有两个坐标系 OXiYiZi 和 OXjYjZj ,OXiYiZi 是固定不动的参考系,OXjYjZj 是需要被旋转的坐标系,初始时两个坐标系重合。内在旋转指每次旋转的旋转轴都是上次变换后新系 OXjYjZj 的坐标轴,外在旋转指每次旋转的旋转轴都是固定参考系 OXiYiZi 的坐标轴。
旋转坐标系的方法有两种:
以上的解释可以参考《坐标系旋转变换,内在旋转,外在旋转》https://www.cnblogs.com/armme/p/10596697.html
另外,旋转矩阵转yaw、pitch、roll的算法:
- yaw=atan2(R(2,1),R(1,1));
- pitch=atan2(-R(3,1),sqrt(R(3,2)^2+R(3,3)^2)));
- roll=atan2(R(3,2),R(3,3));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。