View a video of the optimized trajectory
Figure: Total fuel consumption of the converged trajectories output by the algorithm. The Apollo G-type mission nominal fuel consumption is shown as reference. Up to 90% of fuel is saved.
This repository implements the successive convexification algorithm with state-triggered constraints for solving a 6 degree of freedom rendezvous trajectory generation problem, in particular Apollo transposition and docking of the command and service module with the lunar module, submitted to AIAA SciTech 2020.
@inproceedings{Malyuta2020,
doi = {10.2514/6.2020-0616},
url = {https://doi.org/10.2514/6.2020-0616},
year = {2020},
month = jan,
publisher = {American Institute of Aeronautics and Astronautics},
author = {Danylo Malyuta and Taylor Reynolds and Michael Szmuk and Behcet Acikmese and Mehran Mesbahi},
title = {Fast Trajectory Optimization via Successive Convexification for Spacecraft Rendezvous with Integer Constraints},
booktitle = {{AIAA} Scitech 2020 Forum}
}
To run the code, you must have Python 3.7.2, CVXPY 1.0.24 and MOSEK 9.0.87 installed. To install Python and other dependenies (except MOSEK) on Ubuntu, we recommend that you install Anaconda for Python 3.7 and then execute (from inside this repository's directory):
$ conda create -n py372 python=3.7.2 anaconda # Answer yes to everything
$ source activate py372
$ pip install -r requirements.txt
You may run a particular rendezvous scenario by editing after if __name__=='__main__'
in rendezvous.py
. You may also just run the following
for the default example of transposition and docking with a 150 second time of
flight:
python rendezvous.py
Plots are generated by running the *_plot.py
files. Data is stored in the
data/
directory and figures in the figures/
directory.