Generates a CubeSat model that is gravity gradient stabilized.
Creates a mass report.
%-------------------------------------------------------------------------- % See also BuildCADModel, CreateReport, AddCubesatComponent % -------------------------------------------------------------------------
%-------------------------------------------------------------------------- % Copyright (c) 2011 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Since version 10. %-------------------------------------------------------------------------- % Properties %----------- rhoAl = 2700/1e9; % kg/mm^3 rhoArealSolarPanels = 84e-6*1e-2;% kg/mm^2 84 mg/cm^2 rhoMagneticSteel = 8120/1e9; % kg/mm^2 panelThickness = 4; % mm massFrame = 8.5*8.5*100*12*rhoAl; % Initialize %------------ AddCubesatComponent( 'CubeSatGG' ); AddCubesatComponent( 'device', 'frame', 'name', 'Frame', 'subtype', '1U', 'mass', massFrame ) % Magnetic torquers %------------------ torqueRodDipole = 10; % ATM^2 (Amp-turns-m^2) torquerPower = 0.5; torquerPosition = [-30;0;0]; % mm torquerDim = [5 5 80]; % mm (torquer long axis is z) mass = Product(torquerDim)*rhoMagneticSteel; cPUBoardPower = 1; % W cPUBoardPosition = -20; % z dimension, mm batteryPower = 20.1; % W batteryMass = 0.1; % kg batteryBoxDim = [ 20 20 40]; % mm batteryBoxPosition = [-10; 15;-40]; % mm cameraPosition = [ -50; 5; 0]; % mm cameraPower = 0.1; % W cameraMass = 0.1; % kg % Add Components to the CubeSat %------------------------------- AddCubesatComponent( 'device', 'board', 'name', 'CPU', 'position', cPUBoardPosition,... 'power', cPUBoardPower, 'mass', 0.1 ); AddCubesatComponent( 'device', 'camera', 'name', 'Camera X', 'position', cameraPosition,... 'power', cameraPower, 'boresight', [1;0;0], 'mass', cameraMass ); AddCubesatComponent( 'device', 'torquer', 'name', 'Torquer', 'position',... torquerPosition, 'power', torquerPower, 'unit vector', [0;0;1],... 'dipole',torqueRodDipole, 'dimensions', torquerDim, 'mass', mass ); AddCubesatComponent( 'device', 'box', 'name', 'Battery', 'position', batteryBoxPosition,... 'power', batteryPower , 'mass', batteryMass, 'dimensions', batteryBoxDim ) % Gravity gradient boom %---------------------- position = [0;0;300]; % of center of mass boomDim = [5 5 500]; mass = Product(boomDim)*rhoAl; AddCubesatComponent( 'device', 'box', 'name', 'Boom', 'mass', mass, ... 'position', position, 'dimensions', boomDim ) position = [0; -100; 0]; antennaDim = [2 100 2]; mass = Product(antennaDim)*rhoAl; AddCubesatComponent( 'device', 'box', 'name', 'Antenna', 'mass', mass, ... 'position', position, 'dimensions', antennaDim ) position = [0;0;560]; tipMassDim = [15 15 30]; AddCubesatComponent( 'device', 'box', 'name', 'Tip mass', 'position', position, ... 'dimensions', tipMassDim, 'mass', 0.1 ); % Panel dimension %---------------- lP = 45; % mm % Put the positions and unit vectors for the solar foil %------------------------------------------------------ position = lP*[ 1.0 0.0 -1.0 0.0 0.0 0.0;... 0.0 1.0 0.0 -1.0 -1.0 0.0;... 0.0 0.0 0.0 -0.6 0.6 1.0]; % mm u = [ 1 0 -1 0 0 0;... 0 1 0 -1 -1 0;... 0 0 0 0 0 1]; d = 2*lP*[ 1.0 1.0;... %1 1.0 1.0;... %2 1.0 1.0;... %3 1.0 0.4;... %4 1.0 0.4;... %5 1.0 1.0]; %6å for k = 1:size(u,2) name = sprintf('Solar Panel %d',k); mass = rhoArealSolarPanels*d(k,1)*d(k,2); AddCubesatComponent( 'device', 'solar panel', 'name', name, 'mass', mass, 'position', position(:,k), 'outward normal', u(:,k), 'dimensions', d(k,:) ) end % Put the positions and unit vectors for the radiator %---------------------------------------------------- dim = 2*[lP lP]; mass = rhoAl*dim(1)*dim(2)*panelThickness; AddCubesatComponent( 'device', 'radiator', 'name', 'Radiator', 'mass', mass, 'position', [0;0;-lP], 'outward normal', [0;0;-1], 'dimensions', dim ) % Put the positions and unit vectors for the gold foil %----------------------------------------------------- dim = lP*[2 0.5]; mass = rhoAl*dim(1)*dim(2)*panelThickness; AddCubesatComponent( 'device', 'gold foil', 'name', 'Antenna Panel', 'mass', mass, 'position', [0;-lP;0], 'outward normal', [0;-1;0], 'dimensions', dim ) % Put the positions and unit vectors for the gold foil %----------------------------------------------------- dim = 5*[1 1 1]; mass = dim(1)*dim(2)*dim(3)*rhoAl; AddCubesatComponent( 'device', 'magnetometer', 'name', 'Magnetometer', 'mass', mass, 'position', [0;lP;0], 'outward normal', [0;-1;0], 'dimensions', 5*[1 1 1] ) % Add subsystems %--------------- BuildCADModel( 'add subsystem', 'structure', {'frame' 'boom'} ); BuildCADModel( 'add subsystem', 'control', {'magnetometer' 'torquer' 'tip mass'} ); BuildCADModel( 'add subsystem', 'communications', {'antenna'} ); BuildCADModel( 'add subsystem', 'power', {'solar panel','battery'} ); % Update %------- BuildCADModel( 'update body mass properties' ); BuildCADModel('show spacecraft'); h = BuildCADModel('get model'); c0 = cd; p = mfilename('fullpath'); cd(fileparts(p)) CreateReport( h, 'txt', [], 'mass', 1 ) cd(c0); %--------------------------------------
Component Mass Units Structure subsystem Frame 0.2341 kg Boom 0.03375 kg Structure Subsystem Total 0.2678 kg Control subsystem Magnetometer 0.0003375 kg Torquer 0.01624 kg Tip mass 0.1 kg Control Subsystem Total 0.1166 kg Communications subsystem Antenna 0.00108 kg Antenna Panel 0.02187 kg Communications Subsystem Total 0.02295 kg Power subsystem Solar Panel 1 0.006804 kg Solar Panel 2 0.006804 kg Solar Panel 3 0.006804 kg Solar Panel 4 0.002722 kg Solar Panel 5 0.002722 kg Solar Panel 6 0.006804 kg Battery 0.1 kg Power Subsystem Total 0.1327 kg Miscellaneous subsystem CPU 0.1 kg Camera X 0.1 kg Radiator 0.08748 kg Miscellaneous Subsystem Total 0.2875 kg Total 0.8275 kg