Skip to content

Task 2: Neural Networks for Orbit Propagation

For this task, your goal is to train a neural network in Tensorflow to predict the final state of a spacecraft given an initial position and amount of elapsed time. I.e. your inputs should be \([\mathbf{X}_0, \Delta t]\) and your output should be \([\mathbf{X}_f]\).

Minimum Requirements

  • A network that contains less than 1,000 parameters and predicts the accuracy of the final state to less than 1% on the validation data set.
  • The training process should taken less than one minute (when trained on a CPU)
  • The network should be able to predict at least one orbit.

Stretch Goals

  • Train your network so that it can predict any orbit within a band of LEO-GEO altitudes to less than 5% error.
  • Characterize the performance of the predictions when tested on initial states that are slightly outside bounds of the training data
  • Build a custom training loop, where you update the weights in the network manually (rather than calling model.fit).
  • Repeat this process using Pytorch instead of Tensorflow

Recommendations

  • Use the Tensorflow Regression Tutorial as a starting point.
  • Start by only predicting the motion of a single trajectory -- i.e. \(\mathbf{X}_0\) is fixed and all that varies is \(\Delta t\).
  • Be sure your trajectory is numerically well conditioned (i.e. doesn't pass close to the singularity).
  • Visualize everything. Plot the true trajectory, the predicted trajectory. Do it in 2D and 3D. Plot your loss curves. Inspect other metrics of error and performance.
  • Explore the impact normalizing your inputs and outputs, or changing how they are represented.