我想创建一个6自由度的距离公式?

时间:2009-08-10 05:34:05

标签: visual-c++ formula distance

我有一个6自由度传感器3 axiz x,y,z和3个角度偏航,俯仰和滚动。使用距离公式3轴距离很简单,但如何计算3个角距离? 谁能在这里请帮助我???

1 个答案:

答案 0 :(得分:3)

偏航,俯仰和滚动表示一组指定旋转的欧拉角 一个坐标系,XYZ,到另一个,X'Y'Z'。该变换也可以表示为围绕任意轴的单个旋转。如果我理解你的问题,你想要的 知道这个单一的旋转角度是什么。

可以将一组欧拉角转换为称为四元数的四元结构。

q4 = cos(yaw / 2)cos(pitch / 2)cos(roll / 2)    + sin(yaw / 2)sin(pitch / 2)sin(roll / 2)

q1 = cos(yaw / 2)cos(pitch / 2)sin(roll / 2)     - sin(yaw / 2)sin(pitch / 2)cos(roll / 2)

q2 = cos(yaw / 2)sin(pitch / 2)cos(roll / 2)    + sin(yaw / 2)cos(pitch / 2)sin(roll / 2)

q3 = sin(yaw / 2)cos(pitch / 2)cos(roll / 2)     - cos(yaw / 2)sin(pitch / 2)sin(roll / 2)

(资料来源:http://www.resonancepub.com/quaterni.htm

一旦得到四元数,就可以从四元数组件中轻松计算出旋转轴和旋转角度。使用上述作者的符号,

q = [q4 q1 q2 q2]

q4 = cos(theta / 2)

q1 = sin(theta / 2)A

q2 = sin(theta / 2)B

q3 = sin(theta / 2)C

其中[A B C]是指定旋转轴的XYZ系统中的矢量,θ是您要查找的旋转角度。

所以theta = 2 * acos(q4)