Demonstrate the AttitudeProfile function.
Plots the resulting quaternion and the separation angle from the secondary target.
Mode 1: Body y to Sun (Body x to Nadir secondary) Mode 2: Body x to Lat/Lon (Body y to Sun secondary) Mode 3: Different Lat/Lon
See also AttitudeProfile, ObservationTimeWindows, PlotOrbit, Q2Eul, Plot2D, Date2JD, ObservationTimeWindowsPlot, Period, RVFromKepler
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2009 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Since version 8. %-------------------------------------------------------------------------- clear a; clear b; clear c; clear d;
Orbit and time information
%---------------------------
d.jD0 = Date2JD;
d.t = 0:15:86400;
d.el = [6800,pi/6,pi/3,0,0,0];
[d.r,d.v] = RVFromKepler( d.el, d.t );
PlotOrbit(d.r,d.t,d.jD0);
Mode 1: Body y to Sun (Body x to Nadir secondary)
%--------------------------- a.type1 = 'nadir'; a.body1 = [1;0;0]; a.target1 = []; a.type2 = 'orbitnormal'; a.body2 = [0;1;0]; a.target2 = [];
Mode 2: Body x to Lat/Lon (Body y to Sun secondary)
%--------------------------- b.type1 = 'latlon'; b.body1 = [1;0;0]; b.target1 = [0;90]; b.type2 = 'orbitnormal'; b.body2 = [0;1;0]; b.target2 = [];
Mode 3: Body x to Lat/Lon (Body y to Sun secondary)
%--------------------------- c.type1 = 'latlon'; c.body1 = [1;0;0]; c.target1 = [35;-90]; c.type2 = 'orbitnormal'; c.body2 = [0;1;0]; c.target2 = [];
Compute observation windows for this target
%--------------------------------------------
fov = pi;
[track,obs] = ObservationTimeWindows( d.el, [b.target1,c.target1], d.jD0, d.t(end), fov );
b.window = obs(1).window;
c.window = obs(2).window;
ObservationTimeWindowsPlot(track,obs);
Compute the attitude profile
%-----------------------------
d = AttitudeProfile( d, a, b, c );
Plot quaternion and separation angle over time
%----------------------------------------------- Plot2D(d.t/3600,d.q,'Time (hrs)','Quaternion') Plot2D(d.t/3600,d.sep*180/pi,'Time (hrs)','Separation Angle (deg)') eul = zeros(3,length(d.t)); for k = 1:length(d.t) eul(:,k) = Q2Eul( d.q(:,k) ); end Plot2D(d.t/Period(6800),eul*180/pi,'Time (orbits)',{'Roll','Pitch','Yaw'},'Euler Angles (deg)') %--------------------------------------