I am trying to get the cartesian position and velocity vectors for each propagation step in my orbit. I am using OrbitalPy http://pythonhosted.org/OrbitalPy/ to generate the orbit with classical Keplerian elements.
According to the documentation I should be able to get the state vectors (both position and velocity) from class orbital.utilities.StateVector
, but I get a Type Error: new() takes exactly 3 arguments (2 given)
Here is the code:
from scipy.constants import kilo
import orbital
from orbital import earth, KeplerianElements, Maneuver, plot, utilities
from orbital.utilities import Position, Velocity
import matplotlib.pyplot as plt
import numpy as np
#Orbit Setup
orbitPineapple = KeplerianElements.with_period(96 * 60, body=earth, i=(np.deg2rad(51.6)))
plot(orbitPineapple)
plt.show()
orbitPineapple
Out[23]: KeplerianElements(a=6945033.343911132,
e=0,
i=0.90058989402907408,
raan=0,
arg_pe=0,
M0=0.0,
body=orbital.bodies.earth,
ref_epoch=<Time object: scale='utc' format='jyear_str' value=J2000.000>)
prop1 = orbital.maneuver.PropagateAnomalyTo(M=1.00)
orbitX = orbitPineapple.apply_maneuver(prop1)
plot(orbitPineapple, title='Go Pineapple!')
plt.show()
orbital.utilities.StateVector(orbitPineapple)
TypeError Traceback (most recent call last)
<ipython-input-53-91fb5303082b> in <module>()
4 #print(orbital.utilities.StateVector.velocity(orbitPineapple))
5
----> 6 orbital.utilities.StateVector(orbitPineapple)
7 #orbital.utilities.StateVector.position(orbitPineapple())
8
TypeError: __new__() takes exactly 3 arguments (2 given)
It turns out that the issue is with OrbitalPy. One can only get state vectors when using the original orbit name.
In this case orbitPineapple.r
would return position (x,y,z) and orbitPineapple.v
would return (Vx,Vy,Vy).
The position and velocity vectors are update after each maneuver is applied just use the exact same line with the original orbit name print(orbitPineapple.r, orbitPineapple.v)
.
Additionally, a super useful feature that would have saved me hours, is you can just type a variable or function and name.
and hit the tab key and all the options are displayed.