Parameters for attitude providers

Hi all,

I wonder if we could add parameter drivers for attitude providers.
This could be interesting for example in order to optimize maneuvers directions, as the drivers would be forwarded first from overriding attitude provider to force model, then to propagator, then to optimizer.

I guess this could be added to AttitudeProvider in a minor release with a default implementation that returns an empty list of ParameterDriver.

What do you think?

1 Like

Hi Luc,

So if I’m following well, with that we’d be able to get the variational equations on the thrust direction for LOF-based manoeuvres for example?

Cheers,
Romain.

Exactly.
In fact, this is akin to something Francesco asked me as he is trying to set up something using his new constrained optimization feature.

Thanks. Sounds like a good addition.

Hello,

I do think it’s a good addition too.

Thank you Luc
have an attitude provider that support parameters in a way that manouvre class include them with the other(propulsion and trigger) will help.

Hello
trying to use autodifferentiation for orbital transfer optimizer , my attention was caught on how the Partial for the Duration and MedianDate are calculated.

For the Duration=( Stop-Start) I expect that Jacobian is calculated as:
dYdTm[i] = (dYdT1[i] - dYdT0[i]) instead dYdTm[i] = 0.5 (dYdT1[i] - dYdT0[i])

and for medianDate = (Start+Stop)/2.0 I expect that Jacobian is calculated as:
dYdTm[i] =0.5* dYdT0[i] + dYdT1[i]; instead dYdTm[i] =dYdT0[i] + dYdT1[i];

Am I wrong?
P.S. the jacobian respect to parameters drivers by Matrix Harvester are calculated on normalized parameter or original parameter values?

The computation are correct in the code, I agree this is counter-intuitive.
The rationale is that one can use either the pair start/stop or the pair median/duration but one cannot mix them. When selecting one pair, the fundamental assumption is that the two variables of the pair are the free variables (independent of each other), but that that other pair would be dependent variables.

So when we choose median/duration, we say median is independent of duration, but start and stop both depend on median and duration. Then, if we change median time without changing duration, we shift both start and stop time by the same amount. If we change duration without changing median time, then we change start and stop by half the amount and in opposite directions. This plus differentiation of implicit functions explains the expression in the code.

The expressions have been extensively validated using finite differences (see TriggersDerivativesTest).

thank you for the clarification.