I have built a tool using Orekit to generate Draper mean states and size manoeuvres to achieve keplerian element targets. Its meant to be used beside a pre-existing tool based on STK that generates ephemeris files. I have recently built EphemerisFile and EphemerisFileParser classes to read in the STK ephemerides and use the resulting BoundedPropagator as basis for the fit to the Draper model.
I have found that when the input ephemeris is in the Fixed frame, I can convert each vector to J2000 using the Frame.getTransformTo() method, create the BoundedPropagator, and then when I run it through my Draper fit process I get a valid output state. However, if I use an ephemeris in the ICRF reference frame, the fit process simply runs in a seeming infinite loop. If I try to use Frame.getTransformTo() to transform the vectors from ICRF to J2000, when I put it through the fit process Orekit complains about hyperbolic orbits.
If I simply tell the code that the ICRF ephemeris is actually in the J2000 frame (not exact but close) the fitting process works just fine and the outputs look reasonable.
So I know its not my implementations of EphemerisFile or EphemerisFileParser, and I know that the problem is not the Draper fitting process. The problem seems to be limited to the ICRF reference frame, or at the least the difference between what STK thinks ICRF is and what Orekit thinks ICRF is.
Does anyone have any experience with this? Is there something special I need to do to the ICRF vectors coming out of STK to make them compatible with Orekit? Or is there an issue with Orekit concerning the ICRF reference frame?