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.