我将使用旋转矩阵从一帧旋转到另一帧。程序的目标是使我的陀螺与地球平行,这意味着输出矢量应该有前两个数字零和第三个-9.81。 代码:
vs1 = 1;
vs2 = -0.003;
vs3 = -9.808;
vst = [vs1 vs2 vs3]';
alpha = (acosd(vs1/sqrt(vs1^2+vs2^2)));
gama = (acosd(vs2/sqrt(vs1^2+vs2^2)));
beta = (acosd(vs3/sqrt(vs1^2+vs2^2+vs3^2)));
R1 = [(cosd(gama)*cosd(beta)*cosd(alpha))-(sind(gama)*sind(alpha)) (cosd(gama)*cosd(beta)*sind(al)+sind(gama)*cosd(al)) (-cosd(gama)*sind(beta));((-sind(gama)*cosd(beta)*cosd(alpha))-cosd(gama)*sind(alpha)) ((-sind(gama)*cosd(beta)*sind(alpha))+(cosd(gama)*cosd(alpha))) sind(gama)*sind(beta);sind(beta)*cosd(alpha) sind(beta)*sind(alpha) cosd(beta)];
disp (R1*vst)
vs1,vs2和vs3的结果为:-0.00599,0.0000359和9.858845622079866。首先,我无法理解为什么程序给我正Z和为什么它不会使前两个数字为零?
提前致谢
答案 0 :(得分:0)
您的代码中存在错误。有两个地方我认为变量" al"实际应该是" alpha"如果我正确地遵循你的代码。
但是你的代码也会为这些输入生成alpha = 90和gama = 180。您要做的就是使用这些输入将轴翻转到机器精度范围内,因此它无法实现您正在寻找的结果。
1)您确定输入向量是否正确?如果你几乎垂直(Z = -9.808),为什么重力的值接近X = 1?