Skip to content

Fix Issue #964 : Add covariance frame converter from/to (common) local orbital frame to StateCovarianceMatrixProvider

Vincent CUCCHIETTI requested to merge vcucchie/orekit:issue-964 into develop

Hello everyone,

This merge request aims to close the Issue #964 (closed).

What's new

It is now possible to do the following covariance matrix conversion :

  • Frame (pseudo-inertial or not) -> Frame (pseudo-inertial or not)
  • LOFType -> Frame (pseudo-inertial or not)
  • Frame (pseudo-inertial or not) -> LOFType
  • LOFType -> LOFType

I only modified the internal behaviour of the changeCovarianceFrame(frame -> frame) and not its API. However :

  • The output covariance frame will necessarily be in cartesian elements if the output frame is not pseudo-inertial.
  • The method will throw an error if the input frame is not inertial and the covariance matrix is given in another type that cartesian.

Finally each new method will have its own arguments, possibly different from the changeCovarianceFrame(frame -> frame) depending on the case we're dealing with.

Unexpected added features

While working on this issue, I also added the following features:

  • To implement these methods I added a new static method rotationFromLOFInToLOFOut as well as another method rotationFromLOFType in the LOFType class. The rotationFromLOFInToLOFOut uses the QSW local orbital frame as a pivot to define every possible combinations then the rotationFromLOFTypemethod use this static method to return the correct rotation to the specific LOFType instance.

  • Furthermore, I noticed that @bryan had implemented the full version of the conversion which allowed for conversion from/to non pseudo-inertial frame but an unnecessary line prevented the user from using non pseudo-inertial frames. After careful examination, it turns out that removing this unnecessary line didn't modify the expected results of the frame conversion method.

Tests

Several tests were added and are based on the following paper from David A. Vallado: Covariance Transformations for Satellite Flight Dynamics Operations. Thanks to these tests, the StateCovarianceMatrixProvider class has a code coverage of 100%.

Edited by Vincent CUCCHIETTI

Merge request reports