Simulating a satellite in a lunar Near Rectilinear Halo Orbit


I would like to simulate a satellite in a Near Rectilinear Halo Orbit (NRHO), considering the L2 point of the Earth-Moon system. I have an initial PV state for a satellite in the CR3BP (Earth-Moon) frame and I wanted to ask you: is there a best way to carry out this simulation with Orekit? I have seen that there is
a HaloOrbit class but it seems to be not so useful for my scope…

Thank you so much,

Hi @samuele

I’m not familiar with these types of simulations. Howerver, I think the Orekit tutorials about the CR3BP can help you. They are available here: src/main/java/org/orekit/tutorials/propagation/cr3bp · master · Orekit / Orekit tutorials · GitLab

The EarthMoonHaloOrbit and PropagationInCR3BP tutorials can be very useful to help you.

Best regards,

Hello @samuele
I’ve already used Orekit to simulate cis-lunar rendez-vous from Earth to Lunar Gateway.
To my opinion, CR3BP is not accurate enough.
It’s better to use numerical integration with Earth, Moon, Sun attractions, without considering a specific central body. For that, I’ve created a numerical propagator with :
addForceModel(new InertialForces(CelestialBodyFactory.getSolarSystemBarycenter().getInertiallyOrientedFrame()));
addForceModel(new SingleBodyAbsoluteAttraction(CelestialBodyFactory.getEarth()));
addForceModel(new SingleBodyAbsoluteAttraction(CelestialBodyFactory.getMoon()));
addForceModel(new SingleBodyAbsoluteAttraction(CelestialBodyFactory.getSun()));


Hi @sebastien.herbiniere,

thank you so much for your reply. In the last days I have followed your suggestion but I have a question about the first force model you applied. Why did you choose the CelestialBodyFactory.getSolarSystemBarycenter().getInertiallyOrientedFrame()? Is it because your initial AbsolutePVCoordinates are propagated in a frame which is centered at the Solar System Barycenter (e.g. ICRF)?

Thank you again,

Hi @samuele,
I use here the Solar System Barycenter inertial frame as the integration frame.
Looking at javadoc of org.orekit.forces.inertia.InertialForces, we are here in the second use-case where “the inertial frame is not related to the main attracting body”. Choosing an other inertial frame (not geocentric and not Moon centered) should work in the same way.