Maneuver module

Orbital maneuvers.

class poliastro.maneuver.Maneuver(*args)

Class to represent a Maneuver.

Each Maneuver consists on a list of impulses \(\Delta v_i\) (changes in velocity) each one applied at a certain instant \(t_i\). You can access them directly indexing the Maneuver object itself.

>>> man = Maneuver((0 * u.s, [1, 0, 0] * / u.s),
... (10 * u.s, [1, 0, 0] * / u.s))
>>> man[0]
(<Quantity 0. s>, <Quantity [1., 0., 0.] km / s>)
>>> man.impulses[1]
(<Quantity 10. s>, <Quantity [1., 0., 0.] km / s>)
classmethod impulse(dv)

Single impulse at current time.


dv (np.array) – Velocity components of the impulse.

classmethod hohmann(orbit_i, r_f)

Compute a Hohmann transfer between two circular orbits.

By defining the relationship between orbit radius:

\[a_{trans} = \frac{r_{i} + r_{f}}{2}\]

The Hohmann maneuver velocities can be expressed as:

\[\begin{split}\begin{align} \Delta v_{a} &= \sqrt{\frac{2\mu}{r_{i}} - \frac{\mu}{a_{trans}}} - v_{i}\\ \Delta v_{b} &= \sqrt{\frac{\mu}{r_{f}}} - \sqrt{\frac{2\mu}{r_{f}} - \frac{\mu}{a_{trans}}} \end{align}\end{split}\]

The time that takes to complete the maneuver can be computed as:

\[\tau_{trans} = \pi \sqrt{\frac{(a_{trans})^{3}}{\mu}}\]
classmethod bielliptic(orbit_i, r_b, r_f)

Compute a bielliptic transfer between two circular orbits.

The bielliptic maneuver employs two Hohmann transfers, therefore two intermediate orbits are established. We define the different radius relationships as follows:

\[\begin{split}\begin{align} a_{trans1} &= \frac{r_{i} + r_{b}}{2}\\ a_{trans2} &= \frac{r_{b} + r_{f}}{2}\\ \end{align}\end{split}\]

The increments in the velocity are:

\[\begin{split}\begin{align} \Delta v_{a} &= \sqrt{\frac{2\mu}{r_{i}} - \frac{\mu}{a_{trans1}}} - v_{i}\\ \Delta v_{b} &= \sqrt{\frac{2\mu}{r_{b}} - \frac{\mu}{a_{trans2}}} - \sqrt{\frac{2\mu}{r_{b}} - \frac{\mu}{a_trans{1}}}\\ \Delta v_{c} &= \sqrt{\frac{\mu}{r_{f}}} - \sqrt{\frac{2\mu}{r_{f}} - \frac{\mu}{a_{trans2}}}\\ \end{align}\end{split}\]

The time of flight for this maneuver is the addition of the time needed for both transition orbits, following the same formula as Hohmann:

\[\begin{split}\begin{align} \tau_{trans1} &= \pi \sqrt{\frac{a_{trans1}^{3}}{\mu}}\\ \tau_{trans2} &= \pi \sqrt{\frac{a_{trans2}^{3}}{\mu}}\\ \end{align}\end{split}\]
  • orbit_i (poliastro.twobody.orbit.Orbit) – Initial orbit

  • r_b (astropy.unit.Quantity) – Altitude of the intermediate orbit

  • r_f (astropy.unit.Quantity) – Final altitude of the orbit

classmethod lambert(orbit_i, orbit_f, method=<function lambert>, short=True, **kwargs)

Computes Lambert maneuver between two different points.

  • orbit_i (Orbit) – Initial orbit

  • orbit_f (Orbit) – Final orbit

  • method (function) – Method for solving Lambert’s problem

  • short (keyword, boolean) – Selects between short and long solution


Returns total time of the maneuver.


Returns total cost of the maneuver.