Beruflich Dokumente
Kultur Dokumente
Sumrio
1. Introduo ............................................................................................................................................. 3
1.1 Determinao de atitude ................................................................................................................. 3
1.2 ngulos de Euler.............................................................................................................................. 5
1.3 Matriz de cossenos diretores ......................................................................................................... 7
1.4 Quaternions ...................................................................................................................................... 8
2. Metodologia e Resultados ................................................................................................................ 10
3. Concluses ......................................................................................................................................... 14
4. Bibliografia .......................................................................................................................................... 15
ANEXO A ................................................................................................................................................ 17
1. Introduo
A vida atual est repleta de atividades cotidianas que utilizam, de alguma forma, recursos
tecnolgicos espaciais. As telecomunicaes, a meteorologia, as pesquisas de recursos
naturais atravs de sensoriamento remoto, o monitoramento de atividades e sistemas terrestres
(agricultura, minerao, meio ambiente, etc.), o sistema de posicionamento global para
navegao de navios, avies e carros, todas essas atividades envolvem a utilizao de
satlites artificiais [SANTANA, 2008].
origem no centro de massa do satlite. O eixo z aponta para o centro da Terra, o eixo y
o
Onde
singularidade em
A matriz de cossenos diretores uma matriz 3x3, onde suas coluna representam o vetor unitrio nos
eixos do corpo projetados nos eixos referenciais. O elemento na i-sima linha e na j-sima coluna
representa o cosseno do ngulo entre o i eixo de referencia e o j eixo do corpo. A transformao do
corpo para os eixos referenciais dado por: [PERSA, 2006].
Para pequenos ngulos de rotao sen= e assim para os demais ngulos, ignorando
termos de segunda ordem, podemos reescrever a matriz de cossenos diretores em termos ds
ngulos de Euler conforme abaixo:
1.4 Quaternions
2. Metodologia e Resultados
O Giroscpio ser usado para propagao da atitude do IMU. Essa propagao envolve o
acompanhamento das orientaes de um ponto conhecido.
Atravs da medio da mudana de orientao possvel o conhecimento da atitude
propagada.
O giroscpio contido no IMU tem como sada o valor de taxa de variao angular que deve ser
integrado para determinar a orientao do IMU.
Para implementao dos mtodos, inicialmente foi obtido o grfico dos valores de gyr , que
contm as medidas do giroscpio coletadas do IMU.
10
11
12
13
14
4. Bibliografia
[HALL, 2006]. Hall, C. D, Spacecraft attitude dynamics and control: Lectures notes posted
on Handouts page. Disponvel em: <http://www.aoe.vt.edu/~cdhall/courses/aoe4140>.
Acessado em: 29/04/2006.
[MATLAB]. MATLAB - Manual e ajuda do programa (HELP)
[MOSCATI, 1992]. Moscati, N. R. . Projeto de um Sistema de Controle de Atitude (trs eixos)
de Satlites Utilizando a Metodologia LQR/LTR. 1992. Dissertao (Mestrado em Cincia
Espacial) INPE-5473-TDI/504, INPE, So Jos dos Campos, Brasil, 1992.
15
16
ANEXO A
atitude.m clear all
clc
% Abre o arquivo de dados para leitura
arq = fopen('Data_2014-07-24.txt', 'r');
% Formato:
% tempo - temperatura - altitude - taxa de subida - acc(3) - mag(3) - ...
% gyr(3) - acc_cal(3) - mag_cal(3) - gyr_cal(3) - phi_imu - theta_imu psi_imu
% L o arquivo e armazena os dados na clula dados{:}
dados = textscan(arq,
'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f');
% Organiza os dados
tempo = dados{1};
temperatura = dados{2};
altitude = dados{3};
taxa_de_subida = dados{4};
acc = [dados{5} dados{6} dados{7}] * (9.81 / 819);
% [m/s^2]
mag = [dados{8} -dados{9} -dados{10}] * 0.001;
% [gauss]
gyr = [dados{11} dados{12} dados{13}] * 0.003550881453439; % [rad/s]
acc_cal = [dados{14} dados{15} dados{16}];
mag_cal = [dados{17} dados{18} dados{19}];
gyr_cal = [dados{20} dados{21} dados{22}];
phi_imu = dados{23};
theta_imu = dados{24};
psi_imu = dados{25};
% Calibrao dos giroscpios
Mediagyr1 = mean (gyr(1:500,1)); %clculo Mdia enquanto o giroscopio est em
repouso (ver grafico plot (gyr))
Mediagyr2 = mean (gyr(1:500,2));
Mediagyr3 = mean (gyr(1:500,3));
%
%
%
%
%
%
figure
plot (gyr);
title('Medidas giroscpio')
xlabel('pos vetor')
ylabel('rad/s')
hold on
subplot(311);
plot(phi_imu);
xlabel('Medidas de phi (rad)')
ylabel('pos vetor')
subplot(312);
plot(theta_imu);
xlabel('Medidas de theta (rad)')
ylabel('pos vetor');
17
subplot(313);
plot(psi_imu);
xlabel('Medidas de psi (rad)')
ylabel('pos vetor')
hold on
% ---------------Giroscpio-----------------------------------------for i = 1 : length(gyr)
gyr_ref1(:, i) = (gyr(i, 1)' - Mediagyr1);
% Mtodo do campo de
referncia
G1_ref(i) = norm(gyr_ref1(:, i)); % norma do vetor
end
gyr_ref1 = gyr_ref1';
G1_ref=G1_ref';
for i = 1 : length(gyr)
gyr_ref2(:, i) = (gyr(i, 2)' - Mediagyr2);
% Mtodo do campo de
referncia
G2_ref(i) = norm(gyr_ref2(:, i)); % norma do vetor
end
gyr_ref2 = gyr_ref2';
G2_ref=G2_ref';
for i = 1 : length(gyr)
gyr_ref3(:, i) = (gyr(i, 3)' - Mediagyr3);
% Mtodo do campo de
referncia
G3_ref(i) = norm(gyr_ref3(:, i)); % norma do vetor
end
gyr_ref3 = gyr_ref3';
G3_ref=G3_ref';
%Plotar valores calibrados(BIAS)
gyr_ref = [gyr_ref1 gyr_ref2 gyr_ref3]
gyr_ref2 = [G1_ref G2_ref G3_ref]
%
%
%
%
%
%
%
%
%
%
%
%
%
figure
plot (gyr_ref2)
title('Valores calibrados normalizados - Giroscpio')
xlabel('pos vetor')
ylabel('-')
%hold on
figure
plot (gyr_ref)
title('Valores calibrados - Giroscpio')
xlabel('pos vetor')
ylabel('rad/s')
hold on
% pr alocao de memria
euler_E = zeros(length(gyr), 3); euler_C = euler_E; euler_Q = euler_E;
18
euler_E(i,:,:) = IntegraEuler(dt,euler,w)
19
q4=[cos(psi_imu(1,1)/2)*cos(phi_imu(1,1)/2)*cos(theta_imu(1,1)/2)sin(psi_imu(1,1)/2)*sin(phi_imu(1,1)/2)*sin(theta_imu(1,1)/2)]
q_=[q1;q2;q3;q4]
q=q_'
quat = IntegraQ ( dt, q, w )
euler_Q(i,:,:) = quat2angle(quat)
end
%Plote os grficos
% Mtodo Euler
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
subplot(311);
plot(euler_E(:, 1));
title('ngulos de Euler')
ylabel('phi (rad)')
xlabel('tempo (s)')
hold on
subplot(312);
plot(euler_E(:, 2));
ylabel('theta (rad)')
xlabel('tempo (s)');
hold on
subplot(313);
plot(euler_E(:, 3));
ylabel('psi (rad)')
xlabel('tempo (s)')
hold on
% Mtodo MCD
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
subplot(311);
plot(euler_C(:, 1));
title('Matriz de cossenos diretores')
ylabel('phi (rad)')
xlabel('tempo (s)')
hold on
subplot(312);
plot(euler_C(:, 2));
ylabel('theta (rad)')
xlabel('tempo (s)');
hold on
subplot(313);
plot(euler_C(:, 3));
ylabel('psi (rad)')
xlabel('tempo (s)')
hold on
20
% Mtodo Quaternions
subplot(311);
plot(euler_Q(:, 1));
title('Quaternions')
ylabel('phi (rad)')
xlabel('tempo (s)')
subplot(312);
plot(euler_Q(:, 2));
ylabel('theta (rad)')
xlabel('tempo (s)');
subplot(313);
plot(euler_Q(:, 3));
ylabel('psi (rad)')
xlabel('tempo (s)')
hold on
fclose all;
----------------------------------------------------------------------------IntegraEuler.m
function [ novo_euler ] = IntegraEuler( dt, euler, w )
% dt - intervalo de tempo entre as medidas, em s
% euler - vetor com os ngulos de Euler [roll pitch yaw], em rad
% w - vetor com as medidas de velocidade angular, em rad/s
eulerp(1) = (w(2) * sin(euler(1)) + w(3) * cos(euler(1))) * tan(euler(2)) +
w(1);
eulerp(2) = w(2) * cos(euler(1)) - w(3) * sin(euler(1));
eulerp(3) = (w(2) * sin(euler(1)) + w(3) * cos(euler(1))) / cos(euler(2));
novo_euler = euler + eulerp * dt; % ngulos de euler propagado
end
----------------------------------------------------------------------------IntegraMCD.m
function [ nova_C ] = IntegraMCD (dt, C, w)
% dt - intervalo de tempo entre as medidas, em s
% C - matriz de cossenos diretores
% w - vetor com as medidas de velocidade angular, em rad/s
W = [
0 -w(3) w(2) ;
w(3)
0 -w(1) ;
-w(2) w(1)
0];
Cp = C * W;
nova_C = C + Cp * dt; % matriz de cossenos diretores propagada
21
----------------------------------------------------------------------------IntegraQ.m
function [ novo_q ] = IntegraQ ( dt, q, w )
% dt - intervalo de tempo entre as medidas, em s
% q - vetor com quaternions
% w - vetor com as medidas de velocidade angular, em rad/s
Q = [q(1) -q(2) -q(3) -q(4) ;
q(2) q(1) -q(4) q(3) ;
q(3) q(4) q(1) -q(2) ;
q(4) -q(3) q(2) q(1)];
W = [0 w]';
qp = 0.5 * Q * W;
novo_q = q + qp' * dt; % quaternions propagados
22