CAD model of the Cosmos-1 solar sail.

Includes a separate body for each vane so they may be independently
rotated. Each vane is a simple triangle.
Since version 7.
------------------------------------------------------------------------
See also BuildCADModel, CreateBody, CreateComponent, DrawSCPlanPlugIn,
ExportCAD, Eul2Mat, FindDirectory, SaveStructure, Centroid, CosD, SinD,
Unit
------------------------------------------------------------------------

Contents

%-------------------------------------------------------------------------------
%   Copyright (c) 2007 Princeton Satellite Systems, Inc. All rights reserved.
%-------------------------------------------------------------------------------

Dimensions of central hub

%--------------------------
dHub = 0.75;  % m
hHub = 0.4;   % m
mHub = 30;    % kg

Vane parameters

%----------------
lVane     = 15;    % m
arealMass = 0.011; % kg/m2
mVane     = 23/8;  % kg

Initialize

%-----------
BuildCADModel( 'initialize' );

Add spacecraft properties

%--------------------------
BuildCADModel( 'set name' , 'Cosmos-1' );
BuildCADModel( 'set units', 'mks'  );

%------------------------------------------------------------------

Create CAD bodies

%------------------------------------------------------------------

Create names for all of the bodies

%-----------------------------------
hubBody  = 1;
vaneBody = 2:9;

Core

%-----
m = CreateBody( 'make', 'name', 'Core' );
BuildCADModel('add body', m );

Vanes

%------
uVane = Unit([0 0 0  0  0  0  0  0;...
              1 1 0 -1 -1 -1  0  1;...
              0 1 1  1  0 -1 -1 -1]);
angle  = [2 1 0 -1 -2 -3 -4 -5]*pi/4;
r0Sail = dHub*uVane;

for k = 1:8
  hinge.b = Eul2Mat( [angle(k);0;0] );
  hinge.axis = 3;
  m = CreateBody( 'make', 'name', ['Vane ' num2str(k)], 'previousBody', 1, ...
                  'rHinge', r0Sail(:,k), 'bHinge', hinge);
  BuildCADModel('add body', m );
end

This creates the connections between the bodies

%------------------------------------------------
BuildCADModel( 'compute paths' );

%------------------------------------------------------------------

Create CAD Components second

%------------------------------------------------------------------

% Central hub
m = CreateComponent( 'make', 'cylinder', 'name', 'Hub', 'body', hubBody,...
                     'rUpper',0.5*dHub,'rLower',0.5*dHub,'h',hHub,...
                     'b',Eul2Mat([0;pi/2;0]),'rA',[0;0;0],...
                     'faceColor', 'gold foil','mass', mHub  );
BuildCADModel( 'add component', m );

Solar Arrays: 4

%----------------
f  = [1 2 3;1 3 4];
v  = [0 dHub/2 -hHub/2;0 dHub/2 + hHub -hHub/2;0 dHub/2+hHub hHub/2; 0 dHub/2 hHub/2];

for k = 1:4
  a = 45*(2*k - 1);
  m = CreateComponent( 'make', 'generic','faceColor', 'solar cell','vertex', v,  'face', f,...
                       'electricalConversionEfficiency', 0.18,...
                       'mass', 0.5,'b',[1 0 0;0 CosD(a) SinD(a);0 -SinD(a) CosD(a)],...
                       'name', ['solar panel ' num2str(k)], 'body', hubBody  );
  BuildCADModel( 'add component', m );
end

Actual Sail vanes - 8. Rotation is performed at the body level.

%----------------------------------------------------------------
vX = 0.5*[1 1 1 1 -1 -1 -1 -1];
hSail = 1.8*lVane*tan(pi/8);
ISail = mVane*diag([1/72*(4*lVane^2+3*hSail^2) 1/18*lVane^2 1/24*hSail^2]);
for k = 1:8
  v = [ vX(k)  vX(k)                vX(k);...
        0      0.9*lVane*tan(pi/8) -0.9*lVane*tan(pi/8);...
        0      lVane                lVane];
  cMSail = Centroid(v);

  m = CreateComponent( 'make', 'sail', 'faceColor', 'mirror','rA',[0;0;0],...
                       'vertex', v', 'face', [1 2 3],...
                       'inside',0,...
                       'mass', mVane, 'cM', cMSail,'inertia',ISail,...
                       'sigmaS', [1 1], 'sigmaD', [0 0], 'sigmaT',[0 0],'sigmaA',[0 0],...
                       'emissivity',[0.2 0.2],...
                       'name', sprintf('Sail %i', k), 'body', vaneBody(k) );
  BuildCADModel( 'add component', m );
end

Update

%-------
BuildCADModel( 'update body mass properties' );

Get CAD data in a struct

%-------------------------
g = BuildCADModel( 'get cad model' );

Export CAD model to a mat file for use in other functions

%----------------------------------------------------------
dPath = FindDirectory('SailData');
ExportCAD( g, fullfile(dPath,['Cosmos1']) );
SaveStructure( g, fullfile(dPath,['Cosmos1']) );

3D View

%--------
DrawSCPlanPlugIn('initialize',g);


%--------------------------------------
% PSS internal file version information
%--------------------------------------