2015-11-02 6 views
0

Я буду вращаться от одного кадра к другому с матрицей вращения. Цель программы - сделать мой гироскоп параллельным с землей, это означает, что выходной вектор должен иметь первые два числа ноль и третье -9.81. коды:Вращающаяся матрица в Matlab

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

Это либо ошибка, либо неправильное представление. В обоих случаях вы лучший человек для его решения. Постарайтесь разложить свой код на более мелкие части и тщательно проверьте каждый. Строка, определяющая R1, например, слишком опасна. – Ratbert

ответ

0

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

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

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

+0

Вы полностью правы. он не должен быть 1. но в любом случае для любых чисел для vs1, если я положил отрицательное число (для vs2), результат не является хорошим. –

+0

Учитывая, что генерируются углы alpha и gama, я бы сначала спросил, правильно ли они вычисляются. Пробовали ли вы вход, например vst = [1,1,1] ', чтобы определить, генерирует ли он разумный набор углов? – txpaulm