I’ve got problems with the CR3BP propagator.
I am trying to simulate an Earth to Moon transfer, so the CR3BP propagator seems very appropriate for trajectory design.
I am starting with a GTO and I don’t get the results I expect with CR3BP.
Being very close to Earth, the influence of Moon should be very small on this GTO, so I expect to get something very close to the Keplerian orbit, but it is not the case.
I have re-used the tutorial class, just changing the initial starting orbit and I have compared the propagation with a Keplerian propagator.
Here are the java code and an excel file showing the discrepancies.
Could you explain the differences ?
I will look at your code this week and see if I can find something wrong or strange. The orbits seem to be very close on the right side of you plot but they are quite different in the left side, that’s very interesting.
Thank you Bryan,
On purpose, the initial point is the same, then there is a divergence between the two propagations.
I look at your code and I don’t see any error.
However, maybe I’m wrong but your initial orbit (i.e. the GTO) is not adapted to the assumptions of the CR3BP problem. Especially, the circular assumption. Indeed, the eccentricity of your initial orbit is about 0.75.
I will ask my colleague who implemented the model in Orekit. Maybe he will find something wrong.
The elliptic initial orbit is not an issue for CR3BP.
The main hypothesis of CR3BP is that the two attracting bodies (Earth and Moon) are in a circular motion with respect to the system centre of mass.
But the spacecraft trajectory can be any kind of orbit (even hyperbolic).
The problem here is I would expect to have a Keplerian-like trajectory when starting very close to Earth, which is not the case.
I’ve taken a look at your code and results and I think the model worked as expected.
The thing with CR3BP is that it does not have any single periodic solution. If you expand the propagation time to several keplerian periods you will see that the CR3BP results are not periodic and the resulting trajectory is “oscillating” around the keplerian solution.
To me, it shows the limits of CR3BP approximations. I’m no expert but I would recommend not to use CR3BP model if you are not trying to compute low energy trajectories around Lagrange points or to use manifolds for the Earth Moon transfer. For a standard transfer, from GTO to translunar injection and then lunar orbit, more simple models using third body attractions might be more accurate.
I think the orbit you are trying to compute in CR3BP is not really close to the keplerian solution because the period is too short and velocity too high in regard to CR3BP adimensionnalisation in Earth Moon system in addition to the effect of Moon attraction.
Some of these assumptions might be wrong because it’s been a long time since I’ve worked on the CR3BP but this is how I would explain the results which do not look incoherent to me.
Thank you for using Orekit and our work on CR3BP
Thank you Vincent for your analysis.
Indeed, I think you are an expert in CR3BP ;). I better understand now.
Actually, I have already switched to a different propagator for my Earth to Moon transfer : Earth central attraction with Moon, Sun perturbation at start, and when entering the Moon influence sphere, I switch to Moon central attraction with Earth, Sun perturbation. It works fine and is more accurate. Moreover, the use of standard propagators is easier than CR3BP because the adimensonal integration (especially the time) is tricky to use. I was wondering if using AbsoluteDate within the integration is not problematic (one millisecond in AbsoluteDate integration is equivalent to more than 6 minutes). Thank you anyway for the implementation of CR3BP in Orekit. In next steps, I would be interested also to have an implementation of Near Rectilinear Halo Orbit (NRHO), as a complement to Halo orbits.
I’m definitely not an expert but I’m glad I was able to help!
And you are correct time precision becomes relative to the system when using CR3BP.
Concerning NRHO, if I recall correctly, you can already find some using the Halo Orbit class (I made a tutorial to use it) as they are just a limit of a Halo family.
Sadly I am not able to remember how I did it sorry.
Thanks for the interest !