I'm performing a transfer between Near-Earth orbits considering J2 perturbation with the low-thrust engine. Orbital parameters:

1st orbit:

  • Apogee altitude - 300 km
  • Perigee altitude - 200 km
  • Inclination - 63 deg
  • Argument of perigee - 300 deg
  • RAAN is free

2nd orbit:

  • Apogee altitude - 8000 km
  • Perigee altitude - 600 km
  • Inclination - 63 deg
  • Argument of perigee - 270 deg
  • RAAN is free

Considering 2 scenarios of optimization: minimum transfer time and minimum propellant usage.

Spacecraft parameters:

  • Fuel mass: 500 kg
  • Dry mass: 1000 kg
  • Engine: constant thrust (0.3 N) and Isp (1000 s).

Which open source tools may be implemented to calculate the mentioned scenarios? Expected outputs are transfer duration and revolutions number, total dV, propellant consumption, and different graphs, representing the transfer.

I've implemented MIPELEC by CNES, however, it performs only minimum-time scenario and doesn't take into account perturbations. Also, I've checked pykep and MOLTO-IT, but couldn't implement them for this problem.

  • $\begingroup$ What is it, you're trying to achieve? Is this about actual rocketry or simulations? I feel like this post lacks some clarity... $\endgroup$
    – finnmglas
    Sep 14, 2020 at 18:37
  • 1
    $\begingroup$ @finnmglas the question seeks software in order to achieve "...a transfer between 2 coplanar Earth orbits considering J2, Moon and Sun perturbations with the low-thrust engine" using "open source software, which would find the optimal solution for this case" A reasonable bit of software would allow for an optimization criteria to be specified at run time with limits on delta-v and total time and allow for constraints on maximum thrust, Isp and $\Delta m$. The question is absolutely clear about this! $\endgroup$
    – uhoh
    Sep 15, 2020 at 0:24
  • $\begingroup$ @Leeloo have a look at poliastro, referenced in [How does the poliastro python package “Going to Mars with Python” example work? What's it really doing? ](space.stackexchange.com/q/28228/12102) I think it may address low thrust optimization, but I'm not sure. $\endgroup$
    – uhoh
    Sep 15, 2020 at 0:31
  • 1
    $\begingroup$ @uhoh Unfortunately, poliastro doesn't have low-thrust optimization, but I've used it's Lambert solver for impulsive solution. $\endgroup$
    – Leeloo
    Sep 15, 2020 at 7:49
  • 2
    $\begingroup$ @finnmglas No, I don't have a real satellite on a orbit ))) I'm working on a mathematical problem. $\endgroup$
    – Leeloo
    Sep 15, 2020 at 7:50

1 Answer 1


Take a look at these two:

At the library core is the implementation of an efficient solver for the multiple revolutions Lambert’s problem, objects representing direct (Sims-Flanagan), indirect (Pontryagin) and hybrid methods to represent low-thrust optimization problems, efficient keplerian propagators, Taylor-integrators, a SGP4 propagator, TLE and SATCAT support, JPL SPICE code interface and more.

MOLTO-IT (Multi-Objective Low-Thrust Optimizer for Interplanetary Trajectories) is a fully automated Matlab tool for the preliminary design of low-thrust, multi-gravity assist trajectories The software combines an outer loop that provides multi-objective optimization via a genetic algorithm (NSGA-II) with an inner loop that supplies gradient-based optimization (fmincon) of a shape-based low-thrust trajectory parameterization. It includes simplifications such as coplanar bodies and no enforced propulsion constraints along with the shape-based parameterization of the low-thrust arc.

poliastro has been mentioned in the comments but it only provides predefined low thrust guidance laws: https://docs.poliastro.space/en/latest/autoapi/poliastro/twobody/thrust/index.html

  • 1
    $\begingroup$ thanks for the great edits @JCRM! much needed $\endgroup$ Sep 17, 2020 at 9:02
  • $\begingroup$ I've added a bounty for this question, probably, you'll be interested. $\endgroup$
    – Leeloo
    Oct 15, 2020 at 8:05
  • $\begingroup$ poliastro only has functions for planar changes of argp, ecc, and sma, but not the three of them combined. and unfortunately I have never used pykep or molto-it myself. sorry I can't help $\endgroup$ Oct 21, 2020 at 15:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.