Attitude Dynamics Integration
According to this Orekit Forum post, it has been identified that it would be desirable for an Attitude Dynamics model to be integrated by a propagator in Orekit. In other words, the user could provide the attitude dynamics equations as additional equations, depending on a variety of additional states, and those would be ideally integrated throughout the propagation, changing the spacecraft attitude as desired.
Such a feature would allow Orekit developers to address a variety of use cases, including but not limited to:
- Incorporation of reaction wheel dynamics models, coupled with the spacecraft attitude;
- Reaction wheel momentum management and dumping with the modelling of magnetic torquers or paired thrusters;
- Design of custom control laws. For instance, given a desired attitude maneuver, the user could be allowed to develop attitude maneuver laws that are eigen-axis maneuvers, time-optimal maneuvers, minimum-cost maneuvers etc..
- Effect of gimbaling (or misaligned) thrusters to the spacecraft attitude, which could also be used as momentum dumping devices.
It would be beneficial to investigate the use of such a feature in combination with analytical and/or numerical propagators.
An older mailing list post sheds additional light to the complexity of Orekit propagation pipeline, and specifically how the attitude in Orekit is computed "on top" of the orbital state integration, in a sequential manner. The sequence of steps in integration is also discussed in the initally mentioned post.
A suggested course of action to develop this feature is outlined by @luc. His answer suggests to implement a final step during the integration process:
What I could suggest [...] would be to add a 6th step that would apply a user-provided post-processing object to the state before it is returned. This post-processing would simply take a state and return a possibly modified state. [...] You could have the attitude really handled there, overriding the attitude used in earlier step, perhaps by simple interpolation, or using a crude model, or reusing data extracted the previous call if you use the same object as attitude provider and as state post-processor.
I hope this feature will be considerd for some new version of Orekit.
Kind regards, Emmanuel Papanagiotou