Orekit issueshttps://gitlab.orekit.org/groups/orekit/-/issues2022-04-27T09:50:30Zhttps://gitlab.orekit.org/orekit/orekit/-/issues/786KeplerianOrbit has NaNs when constructed from PV computed from KeplerianOrbit2022-04-27T09:50:30ZEvan WardKeplerianOrbit has NaNs when constructed from PV computed from KeplerianOrbitA colleague, Kendra Hale, tried creating a copy of a `KeplerianOrbit` using the TSPVC constructor and it fails to build a usable orbit. Seems to be a side effect of the code that guesses whether the user would like rates with their Keple...A colleague, Kendra Hale, tried creating a copy of a `KeplerianOrbit` using the TSPVC constructor and it fails to build a usable orbit. Seems to be a side effect of the code that guesses whether the user would like rates with their Keplerian elements. In this case `hasNonKeplerianAcceleration()` returns true when the acceleration is the Keplerian acceleration.
Failing test case:
```java
@Test
public void testKeplerianToPvToKeplerian() {
// setup
Frame eci = FramesFactory.getGCRF();
AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
double mu = Constants.EGM96_EARTH_MU;
Orbit orbit = new KeplerianOrbit(6878e3, 0, 0, 0, 0, 0,
PositionAngle.TRUE, eci, date, mu);
// action
KeplerianOrbit broken = new KeplerianOrbit(orbit.getPVCoordinates(), eci, mu);
// verify
assertThat(orbit.shiftedBy(1), CoreMatchers.is(broken.shiftedBy(1)));
}
```
Output is:
```
java.lang.AssertionError:
Expected: is <Keplerian parameters: {a: NaN; e: NaN; i: NaN; pa: NaN; raan: NaN; v: NaN;}>
but: was <Keplerian parameters: {a: 6878000.0; e: 0.0; i: 0.0; pa: 0.0; raan: 0.0; v: 0.06341591497145493;}>
```11.1.2https://gitlab.orekit.org/orekit/orekit/-/issues/785Add license badge to Readme file2021-08-11T13:41:39ZBryan CazabonneAdd license badge to Readme fileIt could be an interesting documentation enhancement to add the license badge in the README.md file ([like Hipparchus project](https://github.com/Hipparchus-Math/hipparchus#readme))It could be an interesting documentation enhancement to add the license badge in the README.md file ([like Hipparchus project](https://github.com/Hipparchus-Math/hipparchus#readme))11.0Bryan CazabonneBryan Cazabonnehttps://gitlab.orekit.org/orekit/orekit-tutorials/-/issues/9Update develop branch with new changes in Orekit2021-05-20T13:21:14ZBryan CazabonneUpdate develop branch with new changes in OrekitA lot of changes were recently performed in Orekit. However, the tutorial project has not been updated since 2 months and is therefore not consistent with the last changes. Moreover, compilation errors appears in the code when using the ...A lot of changes were recently performed in Orekit. However, the tutorial project has not been updated since 2 months and is therefore not consistent with the last changes. Moreover, compilation errors appears in the code when using the last version of Orekit's `develop` branch.https://gitlab.orekit.org/orekit/orekit-tutorials/-/issues/8Add tutorial for GNSS propagation2021-05-20T15:51:01ZBryan CazabonneAdd tutorial for GNSS propagationIt could be interesting to add a new tutorial for GNSS propagation following the steps:
1. Read a navigation file
2. Print the navigation message of a given satellite
3. Compute and print the position and velocity for this satellite at ...It could be interesting to add a new tutorial for GNSS propagation following the steps:
1. Read a navigation file
2. Print the navigation message of a given satellite
3. Compute and print the position and velocity for this satellite at the navigation message's epoch
4. Compute and print the position and velocity at another epochhttps://gitlab.orekit.org/orekit/orekit/-/issues/784Compute derivatives of tabulated functions with respect to the interpolation ...2021-05-07T12:11:28ZBryan CazabonneCompute derivatives of tabulated functions with respect to the interpolation parameterMore details are given in #587More details are given in #587https://gitlab.orekit.org/orekit/orekit/-/issues/783Creation of new class GNSSPropagatorBuilder independant of GPSPropagator class2021-06-06T18:25:09ZArnau OchoaCreation of new class GNSSPropagatorBuilder independant of GPSPropagator classA new class `GNSSPropagatorBuilder`, independant of `GPSPropagator` class could be created in substitution of the nested class `GPSPropagator$Builder`. This would be more consistent with Builder classes in Orekit and would also allow to ...A new class `GNSSPropagatorBuilder`, independant of `GPSPropagator` class could be created in substitution of the nested class `GPSPropagator$Builder`. This would be more consistent with Builder classes in Orekit and would also allow to use `GPSPropagator` from MATLAB.
See [this forum post](https://forum.orekit.org/t/instantiating-nested-class-from-matlab/1207) for more details.11.0https://gitlab.orekit.org/orekit/orekit/-/issues/782Update exception message of Orekit internal error2021-06-06T18:25:09ZBryan CazabonneUpdate exception message of Orekit internal errorThis Orekit internal error exception proposes to the user to open an issue on GitLab. However, encountering this error message does not mean that there is a bug in Orekit. So, an open discussion on the forum is better than an issue on th...This Orekit internal error exception proposes to the user to open an issue on GitLab. However, encountering this error message does not mean that there is a bug in Orekit. So, an open discussion on the forum is better than an issue on the source code repository.
The exception message must be updated.11.0https://gitlab.orekit.org/orekit/orekit/-/issues/781FieldTLE fails to build TLE line from orbit parameters2021-06-06T18:25:09ZAlberto FossàFieldTLE fails to build TLE line from orbit parametersWhen used with `DerivativeStructure`, `FieldTLE.buildLine2()` fails throwing the following error:
```
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
at java.text.DecimalFormat.form...When used with `DerivativeStructure`, `FieldTLE.buildLine2()` fails throwing the following error:
```
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
at java.text.DecimalFormat.format(DecimalFormat.java:507)
at java.text.Format.format(Format.java:157)
at org.orekit.propagation.analytical.tle.FieldTLE.buildLine2(FieldTLE.java:549)
at org.orekit.propagation.analytical.tle.FieldTLE.getLine2(FieldTLE.java:445)
at fr.cnes.taylor.multifi.testing.TestGetLine.main(TestGetLine.java:31)
```
The cause is a missed call to `getReal()` when parsing the `inclination`, `raan`, `pa` and `meanAnomaly` parameters (lines 549, 551, 555, 557).
I'll attach a minimal test case to reproduce the error.
[TestGetLine.java](/uploads/34812040c64eaf4e0de9541f1e4e11f5/TestGetLine.java)https://gitlab.orekit.org/orekit/orekit/-/issues/780Wrong URL for SonarQube badges2021-06-06T18:25:09ZGuilhem BonnefilleWrong URL for SonarQube badgesThe SonarQube badges URLs in the README are incorrect, while the one from Gitlab's project are right.
I suspect it is due to https://gitlab.orekit.org/orekit/orekit/-/commit/3736723bf97b29c38378700bb845c26f5fcace2a
IMHO, it is better t...The SonarQube badges URLs in the README are incorrect, while the one from Gitlab's project are right.
I suspect it is due to https://gitlab.orekit.org/orekit/orekit/-/commit/3736723bf97b29c38378700bb845c26f5fcace2a
IMHO, it is better to keep the Maven ID (org.orekit:orekit) as key.
It is a pain that [Gitlab CE does not offer the ability to run a merge-request of a fork in the context of the upstream project](https://docs.gitlab.com/ee/ci/merge_request_pipelines/index.html#run-pipelines-in-the-parent-project-for-merge-requests-from-a-forked-project)11.0Sébastien Dinotsebastien.dinot@csgroup.euSébastien Dinotsebastien.dinot@csgroup.euhttps://gitlab.orekit.org/orekit/orekit/-/issues/779Default handler for PositionAngleDetector has improperly defined behavior on ...2023-03-09T10:47:01ZBayden PritchardDefault handler for PositionAngleDetector has improperly defined behavior on EventOccurredThe default handler for PositionAngleDetector has default behavior to `StopOnIncreasing`, where it should issue the Stop on _all_ events, ie. `StopOnEvent`.
Noticed via inconsistent triggering/detection of events when using this detecto...The default handler for PositionAngleDetector has default behavior to `StopOnIncreasing`, where it should issue the Stop on _all_ events, ie. `StopOnEvent`.
Noticed via inconsistent triggering/detection of events when using this detector to find mean-anomaly crossings in orbits. See [forum post here](https://forum.orekit.org/t/eventdetector-not-triggering-upon-first-occurrence-of-condition/1185).12.0GCGChttps://gitlab.orekit.org/orekit/orekit/-/issues/778Update pole definitions to IAU WGCCRE 2015 report2022-07-06T10:51:16ZJorge M.G.Update pole definitions to IAU WGCCRE 2015 reportHi all,
I just noticed that the current Orekit's [predefined IAU poles](https://gitlab.orekit.org/orekit/orekit/-/blob/develop/src/main/java/org/orekit/bodies/PredefinedIAUPoles.java) are making use of the numerical values from the [IAU...Hi all,
I just noticed that the current Orekit's [predefined IAU poles](https://gitlab.orekit.org/orekit/orekit/-/blob/develop/src/main/java/org/orekit/bodies/PredefinedIAUPoles.java) are making use of the numerical values from the [IAU WGCCRE 2009 report](https://astropedia.astrogeology.usgs.gov/download/Docs/WGCCRE/WGCCRE2009reprint.pdf), although a more modern version of this document is available, see [IAU WGCCRE 2015 report](https://astropedia.astrogeology.usgs.gov/download/Docs/WGCCRE/WGCCRE2015reprint.pdf)
Do you think it might be interesting to update the different values within [PredefinedIAUPoles.javaj](https://gitlab.orekit.org/orekit/orekit/-/blob/develop/src/main/java/org/orekit/bodies/PredefinedIAUPoles.java) or is there any reason not to do so?
Best regards!GCGChttps://gitlab.orekit.org/orekit/orekit/-/issues/777Conjunction Data Messages2022-06-01T12:38:38ZEvan WardConjunction Data MessagesMostly a wish list item to round out Orekit's coverage of CCSDS formats. Conjunction Data Messages describe a close approach between two objects. Hopefully it will be relatively easy to build off of Luc's work in #474.
https://public.cc...Mostly a wish list item to round out Orekit's coverage of CCSDS formats. Conjunction Data Messages describe a close approach between two objects. Hopefully it will be relatively easy to build off of Luc's work in #474.
https://public.ccsds.org/Pubs/508x0b1e2c1.pdf11.2https://gitlab.orekit.org/orekit/orekit/-/issues/776Wrong associativity in units parsing2022-01-14T17:24:30ZLuc MaisonobeWrong associativity in units parsing`Unit.parse` uses wrong associativity rules.
It parses kg/m/s² as kg/(m/s²) instead of (kg/m)/s².`Unit.parse` uses wrong associativity rules.
It parses kg/m/s² as kg/(m/s²) instead of (kg/m)/s².11.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/775Bug : NullPointerException in the method named interpolate() in FieldSpacecra...2021-04-02T14:20:59ZGhost UserBug : NullPointerException in the method named interpolate() in FieldSpacecraftState.javaIn the method interpolate() in FieldSpacecraftState.java, the orbit field is used to make an array. However the orbit can be null is AbsolutePVCoordinates are used. Therefore we obtain in this case a NullPointerException.
the line : fin...In the method interpolate() in FieldSpacecraftState.java, the orbit field is used to make an array. However the orbit can be null is AbsolutePVCoordinates are used. Therefore we obtain in this case a NullPointerException.
the line : final T[] mm = MathArrays.buildArray(orbit.getA().getField(), 1);
could be change such as : final T[] mm = MathArrays.buildArray(date.getField(), 1);11.0https://gitlab.orekit.org/orekit/orekit/-/issues/774TimeStampedFieldPVCoordinates should implements FieldTimeStamped2021-04-06T12:03:36ZBryan CazabonneTimeStampedFieldPVCoordinates should implements FieldTimeStampedThe change is straightforward because the `getDate()` method is already implemented in the class.The change is straightforward because the `getDate()` method is already implemented in the class.11.0Bryan CazabonneBryan Cazabonnehttps://gitlab.orekit.org/orekit/orekit/-/issues/773TimeStampedFieldAngularCoordinates should implements FieldTimeStamped2021-04-07T19:50:45ZBryan CazabonneTimeStampedFieldAngularCoordinates should implements FieldTimeStampedThe change is straightforward because the `getDate()` method is already implemented in the class.The change is straightforward because the `getDate()` method is already implemented in the class.11.0https://gitlab.orekit.org/orekit/orekit/-/issues/771Test EventDetection with tolerance > integrator step size2021-04-30T09:30:02ZEvan WardTest EventDetection with tolerance > integrator step sizeif the tests fail to detect events decide if the fix is improved documentation or code changes. The lines in `EventState.evaluateStep(...)` that make me suspicious are:
```
if (FastMath.abs(dt) < detector.getThreshold()) {
...if the tests fail to detect events decide if the fix is improved documentation or code changes. The lines in `EventState.evaluateStep(...)` that make me suspicious are:
```
if (FastMath.abs(dt) < detector.getThreshold()) {
// we cannot do anything on such a small step, don't trigger any events
return false;
}
```
It seems then that events could be missed even if the g function was positive/negative for longer than `maxCheck` across several integrator steps.https://gitlab.orekit.org/orekit/orekit/-/issues/770Refactoring of supported RINEX files2023-07-20T06:56:02ZBryan CazabonneRefactoring of supported RINEX filesSince the implementation of the first RINEX format in Orekit (i.e. RINEX observation files represented by RinexHeader and RinexLoader classes), more and more other RINEX formats were added in Orekit: clock files and navigation files for ...Since the implementation of the first RINEX format in Orekit (i.e. RINEX observation files represented by RinexHeader and RinexLoader classes), more and more other RINEX formats were added in Orekit: clock files and navigation files for instance.
Furthermore, RINEX formats are part of the more generic IGS standards regrouping RINEX, ANTEX, and SINEX. All this formats are also supported in Orekit.
Many keys and elements are common between the formats. However, the factorization of these common elements has never been done in Orekit. It could be very useful to take advantage of these commun elements by implementing a more generic and factorized architecture of the RINEX and IGS standard.
Here some idea:
- Create `ObservationFileHeader`, `ClockFileHeader`, and `NavigationFileHeader` classes containing the specific data in the different RINEX formats.
- Create `RinexFileHeader` class containing the common data in the header of the RINEX format.
- Create `IgsFileHeader` class containing the common data in the header of RINEX, ANTEX, and SINEX files.
- Create `RinexParser` class containing the common parsing methods of RINEX formats
- Create `IgsParser` class containing the common parsing methods of IGS standard.
- Rename `RinexLoader` class in `ObservationFileparser` class.
- Create `ObservationFile` class to contain the specific date of RINEX observation files.
- Create `IgsFile` class to contain the common data in IGS files.
- Create `RinexFile` class to contain the common data in Rinex files.
This implementation can be inspired by what is currently done in issue- #474 branch for the factorization of common data.12.0https://gitlab.orekit.org/orekit/orekit/-/issues/769Add SSR Ionospheric model2021-03-23T15:09:30ZBryan CazabonneAdd SSR Ionospheric modelSSR IM201 messages provides elements to compute the ionospheric delay acting on GNSS satellites for a given location. Details about the implementation of the model are given in: https://files.igs.org/pub/data/format/igs_ssr_v1.pdfSSR IM201 messages provides elements to compute the ionospheric delay acting on GNSS satellites for a given location. Details about the implementation of the model are given in: https://files.igs.org/pub/data/format/igs_ssr_v1.pdf11.0Bryan CazabonneBryan Cazabonnehttps://gitlab.orekit.org/orekit/orekit/-/issues/768Parse several types of ITRF specifications2021-03-15T14:50:26ZLuc MaisonobeParse several types of ITRF specificationsSeveral ways to specify ITRF versions are used in several contexts.
- some contexts allow years on two digits (CCSDS ODM before version 3, CCSDS ADM, CCSDS TDM, Orekit `itrf-version.conf`)
- all contexts allow years on 4 digits, some r...Several ways to specify ITRF versions are used in several contexts.
- some contexts allow years on two digits (CCSDS ODM before version 3, CCSDS ADM, CCSDS TDM, Orekit `itrf-version.conf`)
- all contexts allow years on 4 digits, some require them
- some contexts use "-" as separator (CCSDS, Orekit `itrf-version.conf`)
- some contexts use " " as separator (comments in IERS bulletins B)
- some contexts don't use any separators (CCSDS after ITRF2000)
- some contexts would be simpler if "_" was allowed as a separator (parsing from enumerates `name()` output)
- some contexts allow lower case (Orekit `itrf-version.conf`)
It would be simpler if Orekit allowed all these variations to be used, mainly in `itrf-version.conf` and in CCSDS parsing.
For consistency, the constants of the various enums (`org.orekit.frames.ITRFVersion`, `org.orekit.frames.HelmertTransformation.Predefined`, `org.orekit.files.ccsds.definitions.CelestialBodyFrame`) should all use 4 digits years instead of mixing two digits and four digits.11.0Luc MaisonobeLuc Maisonobe