7 Jun 2020 |
jorgepiloto | An example on how to use the lithobrake function can be found in here:
https://docs.poliastro.space/en/latest/examples/Natural%20and%20artificial%20perturbations.html#Orbital-Decay | 14:10:36 |
Abhijeet Manhas | Thanks, I can get time of flight with it, still have to work with earth coordinate system for final position/ | 14:16:55 |
Abhijeet Manhas | * Thanks, I can get time of flight with it, I will have to work with earth coordinate system for final position | 14:18:21 |
Abhijeet Manhas | When we are creating circular Orbit object, what is 230 *u.km as argument, docs mention it as altitude, is it the inital height of satellite from which it is dropped with 0 velocity or the orbit radius? | 14:27:12 |
jorgepiloto | Ops, you are right! Well, this is similar to grountrack problem, since you want to solve for the point in [lat,lon] the orbit will be at a certain amount of time | 14:29:16 |
jorgepiloto | That value is the altitude of the orbit (distance from mean-sea level surface) since example orbit is circular | 14:31:10 |
juanluastro | You will need to use ITRS for the input also, I think | 14:42:55 |
juanluastro | And combine it with `Orbit.from_coords` | 14:43:13 |
jorgepiloto | You might do the following:
from poliastro.twobody import propagation
from astropy.coordinates import GCRS, ITRS, CartesianRepresentation, SphericalRepresentation
# Retrieve time of flight and collision epoch
tof = lithobrake_event.last_t
time = orbit.epoch + tof
# Obtain final position at colliding location
pos_xyz= propagation.propagate(orbit, tof)
# Convert to GCRS and ITRS
pos_gcrs = GCRS(positions, obstime=time, representation_type=CartesianRepresentation)
pos_itrs = pos_gcrs.transform_to(ITRS(obstime=time))
lonlat_itrs = pos_itrs.spherical
print(f"LON: {lonlat_itrs.lon}\tLAT: {lonlat_itrs.lat}")
| 14:48:16 |
jorgepiloto | As Juanlu suggested, the from_coords method accepts an instance from a SkyCoord or BaseCoordinateFrame | 14:51:38 |
Abhijeet Manhas | Last thing, how would I make a poliastro orbit object from inital velocity vector? | 14:55:46 |
@raahulsingh:matrix.org | abhijeetmanhas is this about tracking that satellite? | 14:58:09 |
Abhijeet Manhas | Yes, a sort of. I want to make a general function to find the position where any launched thing without thrusts would land on earth given its initial position and velocity. Generalising projectile motion | 15:05:09 |
juanluastro | The velocities are introduced into the ITRS or GCRS object using the CartesianDifferential objects, all from Astropy.coordinates | 15:05:37 |
juanluastro | (AFK, can't provide a code sample) | 15:05:55 |
Abhijeet Manhas | Thanks a lot, that I'll figure out on my own ! | 15:06:56 |
10 Jun 2020 |
Ash | I have been trying to compare a few different orbit propagators for a purpose I have and I thought it would be good to solicit advise from this group.
I am running a simulation were orbits are being tracked as celestial Cartesian points (x, y, z, x_dot, y_dot, z_dot) using an unscented Kalman filter (UKF) (6 element mean - x; 6x6 covariance matrix - P). The UKF works by generating 13 points sampled at or around the mean location x and propagating them forward a fixed time step - typically 30 seconds. Those points than used to reconstruct an update mean x and covariance P. At each time step, one observation is made (using Az, El, SR) to reduce the uncertainty / update the mean of one object. To perform the propagation I have wrapped all of the propagator functions in poliastro with a function that takes in a point - x_t and step size dt and returns an updated future position x_t+1; these wrapped functions can be referred to as fx. Full code can be found in draft form here: https://github.com/AshHarvey/ssa-gym/.
Analytic method such as Markley's are very quick, but occasionally run into points which can not be propagated - especially if the covariance becomes too large. Cowell's numerical method seem to be more stable, but take a very long time to run and is better suited to predict many points over a longer period of time vice a fixed time step. Is there a good compromise out there? Are there numerical methods better tuned for small, single time steps? | 14:58:52 |
astrojuanlu | it's an excellent question Ash . I wonder if you tried farnocchia as well? should be about as fast as markley , and more stable in theory | 16:20:06 |
Ash | Just ran it with a 50 object set; runtime was the same as Markley, stability seems similar too | 17:31:50 |
juanluastro | fair enough. `farnocchia` is my little baby 😛 it handles the near parabolic case | 17:32:48 |
Ash | haha | 17:33:59 |
juanluastro | how does the covariance affect the propagator? they only receive r, v and dt after all | 17:33:43 |
Ash | yeah, the orbits are being samples from a random uniform of valid COEs | 17:34:23 |
Ash | except sma = ((RE + 400000), 42164000) and ecc = (0.001, 0.3) | 17:35:04 |
Ash | above in meters, so 400 km above mean earth radius out to geo | 17:35:33 |
Ash | no circular or highly elliptical orbits | 17:35:52 |
juanluastro | in any case I'd be very interested to know specific orbits that these propagators can't handle. that's a bug on our side | 17:36:37 |
Ash | there is probably a better kernel method to sample orbits that will result is something closer to the distribution of actual RSOs | 17:36:56 |
Ash | i'll see if I can add some logging for you | 17:37:14 |
juanluastro | thanks!! | 17:37:26 |