satellogic / orbit-predictor

Python library to propagate satellite orbits.
MIT License
139 stars 43 forks source link

Wrong velocity coordinate transform #95

Open jhdwilmes opened 4 years ago

jhdwilmes commented 4 years ago

ECI to ECEF conversion uses the same coordinate transformation to convert velocity as it does position when creating state vectors. The correct approach should include earth's rotational velocity when converting ECI velocity to ECEF (and ECEF to ECI) as follows: V_ECEF = T_ECI_to_ECEF V_ECI - [0,0,wE] x R_ECEF V_ECI = T_ECEF_to_ECI (V_ECEF + [0,0,wE] x R_ECEF) where wE is the earth rotation speed (rad/sec), T is the transformation matrix, V is velocity, and R is position.

More accurate versions take into account Earth precession and nutation, though this would require modification to the ECEF-ECI position conversion as well, and is outside the scope of this bug.

astrojuanlu commented 4 years ago

thanks a lot for the report @jhdwilmes! I will investigate if there's a reason to not have that part (I want to believe that we left it out because of performance reasons, although I doubt it).