Hohmann Transfer Simulation with the Spacecraft Control Toolbox

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.

The Hohmann transfer is computed with the following Spacecraft Control Toolbox code:

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.

A Third Planet Discovered Orbiting Proxima Centauri


A third planet, as large as 26% of the mass of Earth, has been discovered orbiting our nearest stellar neighbor, Proxima Centauri .Astronomer João Faria and his collaborators detected Proxima Centauri d using the Echelle Spectrograph for Rocky Exoplanets and Stable Spectroscopic Observations.

It would be exciting to send a spacecraft to enter the Alpha-Centauri system and orbit this planet. At Princeton Satellite System we’ve looked at interstellar flight using the Direct Fusion Drive nuclear fusion propulsion system.

Interstellar Fusion Propulsion

At the 2021 Breakthrough Energy Conference we presented findings for both flyby and orbital missions. Flyby missions are easier, but orbit entry would allow detailed study of the planet. A flyby gets your spacecraft close, but it is moving really fast!

The following charts give an outline of our talk. The first shows the optimal exhaust velocity based on sigma, the ratio of power to mass. Our designs have a sigma from 0.75 to 2 kW/kg. With 2 kW/kg, the optimal exhaust velocity is 4000 km/s. The mission would take about 800 years. Our current designs can’t get exhaust velocities higher than 200 km/s. We’d need another method to produce thrust.

Mission Analysis

The next plot shows a point mission that reaches Alpha Centauri in 500 years. This requires a sigma of about 20. The spacecraft accelerates and decelerates continuously. The mission could be improved by staging, much like on a rocket that launches from the Earth into orbit.

Selected Mission

The next figure shows how the starship would enter the Alpha Centauri system.

Alpha Centauri System Insertion

The final plot shows the orbital maneuvers that lower the orbit and rendezvous with the planet.

Lowering the orbit to rendezvous with the planet.

Even 500 years is a long time! This is over ten times the lifetime of Voyager, but much less than some engineering marvels built on the Earth.

We hope to someday be able to build fusion powered spacecraft that will head into interstellar space!

Artemis: NASA RFP for Lunar Landers

NASA recently released a request for proposal for a lunar lander with a due date of November 1.


NASA would like a crew to land on the moon by 2024.

We didn’t have time to write a proposal, but here is our design. We propose a single stage vehicle, that can land from and return to a 15 km circular orbit. It uses 2 Blue Origins BE-3U engines that use cryogenic hydrogen and oxygen. An Orion capsule houses the astronauts. The Orion would take astronauts to and from Gateway and to and from the Earth. Lockheed Martin is building the Orion spacecraft. The European Space Agency is building the service module. A separate transport would bring fuel and payload to the lander. In the future, the lander could be refueled from lunar water.

The dimensions are in meters. The Orion is shown below. We purchased the model from https://hum3d.com.

The landing gear were scaled from the Apollo Lunar module.

It is interesting to compare its size with the Apollo Lunar Module. The Artemis is designed to fit into the 10 m SLS fairing. This a fully reusable lunar vehicle that can be refueled. It is designed for a long-term, sustainable, lunar base.

We use two toroidal hydrogen tanks and two spherical oxygen tanks. The cylinder on the outside is the solar array producing 34 kW of power. Of course, numerous details are omitted. We developed this model using our Spacecraft Control Toolbox. The design script will be available in the Spacecraft Control Toolbox Version 2019.1 due in mid-November.

Other elements of the lander were designed for different purposes. The GN&C system is based on our Army Precision Attitude Control System.

Our control system is based on a robotic lander we designed some time ago. We have full C++ code for the control and guidance system.

The architecture for Earth/Moon transportation system is shown below. Eventually, a Direct Fusion Drive freighter would be the main way of moving cargo between Earth orbit, lunar orbit and Gateway. The lander would remain in lunar orbit. Humans would go to the moon using fast orbital transfer, much like during Apollo.

Our next blog post will show how we get from Gateway to and from our 15 km starting orbit. A subsequent post will demonstrate our lunar landing guidance that uses a neural network for navigation based on images of the surface. Using it for landing would require higher resolution images than we have today, but short of building a lunar GPS system, it might be more cost-effective to have a satellite assembling images from low lunar orbit.

We will also update this blog post from time to time. Stay tuned!

Pluto Orbiter – the Next Step after New Horizons

The spectacular success of the NASA New Horizons mission has led to many new discoveries about Pluto. The next step would be to send an orbiter. That isn’t easy to do with chemical propulsion but could be done with Direct Fusion Drive.

We’ve done a preliminary mission analysis for a Pluto orbital mission. We are baselining a Delta IV Heavy that can put up to 9,306 kg into interplanetary orbits. These plots show various parameters versus mission duration. The maximum duration is the same as the New Horizons mission, 10 years.


Let’s use the 4 year mission as a baseline. It would use a 2 MW DFD engine to reach Pluto in about 4 years and go into orbit. The engine would thrust for 270 days out of the 4 year mission producing 110 km/s delta-V. The trajectory is shown below


Once there, almost 2 MW of power would be available for the science mission, over 10000 times as much power as is available to New Horizons! The New Horizons bit rate is no more than 3000 bits per second. The high power would allow for a bit rate of over 135 Mbps for data transmission back to Earth using the JPL Deep Space Optical Communications System and a 30 kW laser transmitter. The time in transit is much shorter than New Horizons and would produce significant savings on operations costs. Launch times would be more flexible since gravity assists would not be needed.

DFD would use deuterium and helium-3 as fuels. Only 1700 L of helium-3 would be needed for this project. Current U.S. production of helium-3 is about 8,000 L per year.

Since we would be going all the way to Pluto it would make sense to include a lander. One way to power the lander is using laser power beamed from the orbiter. Here are results for a possible system, beaming over 30 Wh per pass from a 200 km orbital altitude.


Currently, experiments are taking place in the Princeton Field Reversed Configuration laboratory. Here is the machine in operation at the Princeton Plasma Physics Laboratory:


The next step is to build a slightly larger machine to demonstrate fusion. Fusion power generation has been demonstrated in the Princeton Plasma Physics Laboratory Tokamak Fusion Test Reactor and the Joint European Torus but never in a machine using helium-3. A flight engine would follow. Its small size would keep the development and production costs down.

DFD would enable many challenging missions include human exploration of Mars, Europa landers and interstellar probes.

Lunar Topography

If you are sending a spacecraft to the moon, you will be interested in lunar topography. A new function in the Spacecraft Control Toolbox lets you superimpose a height map onto any sphere.

The function RSHMoon.m gives you the Clementine spacecraft topographic data using a spherical harmonic expansion of the rangefinder data.

A new function, PlanetWithTerrain.m, lets you superimpose this data onto a sphere.

Continue reading

Maximum Achievable Velocity Change

The rocket equation gives the ratio of the initial mass to the final mass given a velocity change and an exhaust velocity.

$$\frac{m_i}{m_f} = e^\frac{\Delta V}{V_e}$$

This seems to say that given enough fuel we could get an infinite velocity change! To see what the maximum possible velocity change could be we need to account for the structural fraction. The structural fraction multiplied by the mass of fuel gives the mass of the structure needed to support and contain the fuel. The rocket equation now is as follows

$$\frac{m_h + (1+f)m_p}{m_h + fm_p} = e^\frac{\Delta V}{V_e}$$

where m_p is the mass of propellant, f is the structural fraction, and m_h is the mass of all other hardware. If we let the mass of propellant go to infinity, and solve for the velocity change, we get:

$$ \frac{\Delta V}{V_e} = \log{\frac{1+f}{f}}$$

The following plot shows the ratio of velocity change to exhaust velocity for a range of structural fractions.

Landing on the Moon

There is a lot of interest in lunar landing missions for both scientific exploration and commercial purposes. Commercial applications might include mining helium-3 for future nuclear fusion power plants on earth and mining water for rocket fuel.

The Spacecraft Control Toolbox makes it easy to do preliminary planning for lunar missions. In this blog we present a single MATLAB script that takes a spacecraft from a low Earth parking orbit to the lunar surface! Here is the final segment, the descent to the moon.


We ended up with a 30 kg dry mass for a spacecraft that can use an ECAPS 220 N HPGP thruster for delta-v.

The published script can be found here:

Lunar Mission Planning as a published MATLAB script

You can also send us an email to find out more about our Lunar Mission Design Tools.

Attitude Maneuvers with the CubeSat Control System

The CubeSat control system is designed to work with either thrusters or reaction wheels. It has a number of handy built in maneuver modes such as pointing at the sun, nadir pointing or pointing at a specific latitude and longitude on the ground. Here is the spacecraft shown in the VisualCommander interface.


The movie in the link below shows attitude maneuvers in the VisualCommander interface. The interface has pages for the various subsystems and attitude control system functions. We start by seeing the spacecraft in a polar orbit on the Summary page. The solar arrays are reorienting themselves so that their cell faces are pointed at the sun. We switch the 3D display to look along the boresight of the telescope. We then go to the ACS page and select a sun pointing maneuver. We go back to the Summary page and see that the sun appears in the display. We then return to the ACS page and command nadir pointing. The remainder of the movie shows the reorientation maneuver to nadir pointing.

CSCS Reorientation Movie

For more information on our simulation frameworks including our real-time control system framework, ControlDeck, go to Simulation Framework page.

For more information on VisualCommander go to VisualCommander page.

You can also send us an email to find out more about our CubeSatControl System. All of these products are available now.

Why Use Princeton Satellite Systems’ MATLAB Toolboxes?

Almost all aerospace organizations have extensive libraries of software for simulation, design and analysis. Why then should they use our MATLAB toolboxes?

I’ve been working in the aerospace business since 1979. My experience includes:

  1. The Space Shuttle Orbiter Dynamics Analysis
  2. The GPS IIR control system design
  3. The Inmarsat 3 control system design
  4. The GGS Polar Platform control system design
  5. The Mars Observer delta-V control system
  6. The Indostar-1 control system
  7. The ATDRS momentum management system
  8. The PRISMA formation flying safe mode guidance

Continue reading

Kepler Telescope Reorientation Maneuver

The Kepler telescope has suffered the loss of two reaction wheels. This means that it cannot use the wheels to control orientation about all three axes.

One option is to use thrusters and reaction wheels at the same time as actuators. Princeton Satellite Systems Core GN&C Bundle does just that.

Aero/Astro vehicle control products.

We’ve simulated the system for the Kepler spacecraft


You can see a movie of a reorientation here:

Kepler Mixed Actuator Reorientation.