/successive_rendezvous

Fast Trajectory Optimization via Successive Convexification for Spacecraft Rendezvous with Integer Constraints

Primary LanguagePython

Fast Fuel Optimal Rendezvous Trajectory Generation

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.

General Description

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}
}

Requirements

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

Instructions

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.