I worked on two projects during my winter internship at Princeton Satellite Systems: a two-stage-to-orbit (TSTO) launch vehicle design proposal related to the NASA Space Launch System (SLS) and a satellite conjunction maneuver demo. These both used the Spacecraft Control Toolbox for MATLAB.
One of the main ideas behind the TSTO launch vehicle project is to propose an all-liquid variant of the SLS. Currently, the SLS first stage is mostly powered by two solid rocket boosters (SRB) upgraded from the Space Shuttle SRBs. However, our proposal is to replace the two SRBs with five liquid boosters (LB), each mated with an RS-25 engine. The second stage would remain the same. Using MATLAB, I analyzed the launch and trajectory performance of both variants and found similar performance. Additionally, the total mass of the all-liquid SLS variant would be approximately two-thirds the mass of the SRB-powered spacecraft. An approximate CAD model of the all-liquid SLS version is shown below.
In addition, the LBs can be used independently to power smaller high-performance TSTO launch vehicles that carry around 8,000 kg of payload to low earth orbit. Trajectory plots and a preliminary CAD model are shown below.
My other project this internship was to help out with a satellite conjunction avoidance demo with Ms. Stephanie Thomas. The goal was to create a solution in MATLAB to identify potential satellite-debris conjunctions and develop a method/algorithm to avoid the conjunctions. I mainly worked on testing the code and relevant functions and providing feedback about the solution’s comprehensiveness.
Overall, I greatly enjoyed this internship and the opportunity to work at PSS. I saw firsthand how even a small company can make significant contributions to aerospace and engineering through diverse interests yet specific, impressive skill sets.
Hohmann transfers are a well-known maneuver used to change the semi-major axis of an orbit. The Spacecraft Control Toolbox allows you to compute the required velocity changes, and integrate them into a full simulation.
In this demonstration, we create a 6U CubeSat that has 3 orthogonal reaction wheels and a single hydrazine thruster. The thruster is aligned with the body x-axis and must be aligned with the velocity vector to do the maneuver. An ideal Hohmann maneuver is done with impulsive burns at two points in the orbit. In reality, with a thruster, we have to do a finite burn.
rI = [-7000;0;0];
vI = [0;-sqrt(mu/Mag(rI));0];
[dV,tOF] = OrbMnvrHohmann(Mag(rI),rF);
The first time OrbMnvrHohmann is called, it generates the plot below of the planned Hohmann transfer. The function computes the delta-V and also the time of flight, which will be used to determine the start time of the second thruster burn.
We create a short script with numerical integration to implement the maneuver using a thruster. The burn durations are computed based on the thrust and the mass of the spacecraft. In this case, they are about three minutes long. The maneuver is quite small, so the mass change is not important. The attitude control system uses the PID3Axis function which is a general-purpose attitude control algorithm. The simulation is a for loop, shown below. The ECI vector for the burn is passed to the attitude control system, which updates every step of the simulation.
% Simulation loop
for k = 1:n
% Update the controller
dC.eci_vector = uBurn(:,kMnvr);
[tRWA, dC] = PID3Axis( x(7:10), dC );
% Start the first burn
inMnvr = false;
if( t(k) > tStart(1) && t(k) < tEnd(1) )
inMnvr = true;
% Switch orientation
if( t(k) > tEnd(1) )
kMnvr = 2;
% Start the second burn
if( t(k) > tStart(2) && t(k) < tEnd(2) )
inMnvr = true;
if( inMnvr )
dRHS.force = thrustE*QTForm(x(7:10),dC.body_vector)*nToKN; % kN
dRHS.force = [0;0;0];
el = RV2El(x(1:3),x(4:6));
xP(:,k) = [x;tRWA;Mag(dRHS.force)/nToKN;el(1);el(5)];
% Right hand side
dRHS.torqueRWA = -tRWA;
x = RK4(@RHSRWAOrbit,x,dT,0,dRHS);
The maneuver logic just waits a quarter orbit then performs the first burn, by applying the thrust along the body vector. It then waits for the time of flight and then starts the next burn. The start and stop times are pre-computed. RK4 is Fourth Order Runge-Kutta, a popular numerical algorithm included with the toolbox.
At the final orbit radius an attitude maneuver is needed to reorient for the final burn.
The spacecraft body rates, in the body frame, during the maneuver are shown below.
The reaction wheel rates are shown below. The simulation does not model any particular wheel. Friction is not included in the simulation, although the right-hand-side function can include friction.
The wheel torques and rocket thrust are shown below. The thruster is a 0.2 lbf hydrazine thruster that is based on the Aerojet-Rocketdyne MR-103. The PID controller does not demand much torque.
The semi-major axis and eccentricity are shown below. The middle portion is during the transfer orbit.
The eccentricity is zero at the start and finish. Note the slope in both eccentricity and semi-major axis due to the finite acceleration. At the end of the simulation, we print the achieved orbital elements:
Final SMA 7099.72 km
SMA error 0.28 km
Final e 1.3e-05
The result is very close to the ideal solution!
This post shows how you can easily integrate attitude and orbit control. Email us for more information! We’d be happy to share the script. We can also offer a 30 day demo to let you explore the software.
Version 2021.1 of Princeton Satellite Systems toolboxes for MATLAB is now available! Over 50 new functions and scripts are included. Many other existing functions have been improved.
One new function is AtmNRLMSISE.m, an atmosphere function based on the NRL MSISE model. It is uses extensive flight data and includes sun effects. It computes the overall density and the number density of all atmospheric constituents. Our function has an easy to use interface that automatically incorporates the sun information and lets you input your spacecrafts ECI coordinates. You can also choose to use the original interface. Here is a comparison with the existing scale height model.
We provide a complete set of functions for planning lunar missions in the Missions module. The software includes landing control systems and trajectory optimizaton tools. You can use our Optical Navigation system for your cis-lunar missions and explore our cutting-edge neural network terminal descent software.
Here are two images from an optical navigation simulation for a solar sail.
The Spacecraft Control Toolbox provides you with a lot of ways to do things, so you can use your own creativity to perform analyses or design a mission.
New functions in the Lunar Cube module in 2016.1 allow you to easily plan lunar insertion and orbit change maneuvers. In the following pictures you can see a lunar orbit insertion from a hyperbolic orbit. In all figures the lunar terrain is exaggerated by a factor of 10.
The same maneuver looking down on the orbit plane. The green arrows are the force vectors.
The following figure shows a two maneuver sequence. The first puts the spacecraft into an elliptical orbit. The second circularizes the orbit.
We are adding the Lunar Cube Module in 2016.1 to our CubeSat Toolbox for MATLAB! It allows users to analyze and simulateCubeSats in lunar transfer and lunar orbit. It includes a new dynamical model for CubeSats that includes:
Earth, Moon and Sun gravity based on the JPL ephemerides
Spherical harmonic lunar gravity model
Power generation from solar panels
Battery energy storage
Variable mass due to fuel consumption
Solar pressure disturbances
Lunar topographic model
New graphics functions for lunar orbit operations
Lunar targeting function
Lunar mission control function for attitude control and orbit control
The module includes a script with a simulation of a 6U Cubesat leaving Earth orbit and reaching the moon. The following figure shows the Earth to Moon trajectory.
This figure shows the transfer orbit near the moon. The lunar topography is exaggerated by a factor of 10 to make it visible. It is based on Clementine measurements.
Here are results from the new LunarTargeting function. It finds optimal transfers to lunar orbits. The first shows the transfer path to the Moon’s sphere of influence.
The next shows the lunar hyperbolic orbit. In this case the transfer is into a high inclination lunar orbit.
Version 2015.1 will have a new DXF file format exporter to export CAD models built in the Spacecraft Control Toolbox into SolidWorks. The following figure shows the Lunar Lander model in the Spacecraft Control Toolbox CAD window.
Exporting requires just two lines of code:
g = BuildCADModel( 'get model' );
Rodger Stephens of Prism Engineering provided SolidWorks models from the DXF file. The file opened in SolidWorks with 7 parts creating an assembly called LunarLander-1.
Each part contains planes, sketches, and surfaces.
The Spacecraft Control Toolbox has always had DXF import capability but now it can export in a format that is supported by most CAD packages. This will speed the process of going from conceptual designs in the Spacecraft Control Toolbox to detailed designs in SolidWorks and other CAD packages.
AutoDesk Inventor and SolidWorks are powerful software packages for the computer-aided design of spacecraft. Ultimately you need to use one of those packages for the mechanical design of your satellite, but what about the preliminary design phase when you are still determining what components you even need? The CAD software in the Spacecraft Control Toolbox can provide you with a valuable tool to do your conceptual layouts and early trade studies, and the same model can be used as the basis for disturbance analysis in later design phases.
A CAD model in SCT is built in a script which allows you to build your models algorithmically. You can call design functions, use for loops and revision-control your source code. For example, within the script you can do an eclipse analysis and compute the battery capacity. This number can generate the volume of your batteries which you can then use to size your spacecraft.
The function BuildCADModel provides the model-building interface. The CreateComponent function is used to generate the individual components using parameter pairs as arguments. Components are grouped into bodies to allow for rotation and articulation. A GUI displays your finished model and allows you to visualize it in 3D. You then store your finished models as mat-files. Our disturbance model uses every triangle in your model for disturbance analysis.
The example figure shows a solar sail design, with the spacecraft bus in the middle. BuildCADModel allows you to group components into subsystems as on the left-hand side, which can then be highlighted using transparency.
The figure below shows the BuildCADModel GUI which allows you to verify the body and component properties.
There are many examples of spacecraft models in the SCT to help you get started, and a lengthy chapter in the User’s Guide discussing the finer points of component location, orientation, and physical properties such as drag and optical coefficients. Your CAD model essentially functions as a database for your entire spacecraft model!
We are happy to announce the release of our freeTextbook Companion App for MATLAB (2012b or later). Based on four Chapter 2 walk through tutorials, the goal is to design a geostationary spacecraft, maintaining an exact orbital position, delivering a -126 dB in the Ku band, and 7 year lifetime.
The GUI allows us to look at the results of various gravity models, summing various types of disturbances caused by the sun-angle, a basic geo-synchronous orbit simulation, and then a full simulation that incorporates the orbit, disturbances, and Control and Link parameters.
Many spacecraft are incorporating cameras, both visible and IR, to image other nearby objects. These may be other satellites or space debris. This blog entry shows how you can simulate imaging with the Spacecraft Control Toolbox.
In this simulation a target 1U CubeSat is illuminated by several sources of radiant flux and imaged by a camera located on a chase vehicle. The CubeSat panels have different optical and thermal properties. An exploded view is shown below. The surface properties are for radiators (black), solar panels (blue) and gold foil (yellow).
The target is located in a circular orbit and the chase vehicle is in a similar but slightly eccentric orbit. A camera is mounted on the chase vehicle. The chase vehicle keeps its camera pointed at the target. Solar radiation, earth radiation, and earth albedo illuminate the target. The motion of the two vehicles is simulated for one revolution. The target spacecraft remains between approximately 75 m and 150 m from the chase vehicle.
As the target and chase vehicle move in their respective orbits, the change in temperature of the target CubeSat is simulated. Each of the 6 panels are composed of two triangles. The temperatures of the panels vary based on the thermal properties of each face and the orientation of the spacecraft. The orientation affects the incoming flux for each particular face.
Solar radiation is the dominant source over the course of the simulation but earth radiation and earth albedo also effect the total flux. The solar radiation, plotted in dark blue, clearly shows the times when the earth is blocking the line of sight from the spacecraft to the sun.
A photon detector model is assumed for the IR imaging device. The following flow chart describes the imager model.
The initial output observed by the imager is shown below. It should be noted that for the particular orbit and orientation initial conditions specified, the z component of the relative position is always equal to zero. This means that only the x and y panels of the cube will be visible throughout the simulation. It is possible to specify different initial conditions that would result in a z relative position, and in this case, up to three faces of the cube can be detected.
We have created a video that displays the imager results as a sequence.
Yosef and Amanda are giving a seminar on our Spacecraft Control Toolbox in Sheffield, England on October 1, 2013. This event has been arranged through our UK distributors, MeadoTech Ltd. A big thank you goes out to Dr. Mohamed Mahmoud and Ruth Jenkinson!