Матрица вращения в Matlab

Я собираюсь вращаться от одного кадра к другому с матрицей вращения. Цель программы - сделать мой гироскоп параллельным земле, это означает, что выходной вектор должен иметь первые два числа ноль и третье -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 и почему она не делает первые два числа ноль?

заранее спасибо

1 ответ

Решение

У вас есть ошибка в вашем коде. Есть два места, где я думаю, что переменная "al" должна быть на самом деле "альфа", если я правильно следую вашему коду.

Но ваш код также генерирует альфа = 90 и гаму = 180 для этих входов. Все, что вам нужно сделать, это перевернуть оси с точностью до станка с этими входами, чтобы не достичь желаемых результатов.

1) Вы уверены, что входной вектор правильный? Почему гравитация имеет значение около X=1, если вы находитесь почти вертикально (Z = -9.808)?

Другие вопросы по тегам