Maneuvers in Sequential BatchLS Estimation

Hi all,

I’m hoping to use the Sequential BatchLS Estimator with maneuver estimation. There are two separate issues I could use some help solving:

  1. I’d like to estimate the thrust parameter across all maneuvers that are included in the estimation span. For example, if I perform estimation that included 5 ConstantThrustManeuvers, I’d like the number of estimated parameters to be 1 - the thrust parameter across all 5 maneuvers. In this case, I’m not planning on solving for the start/stop/duration at all. Is there a way for Orekit to combine the thrust model somehow, maybe with a different setup for the maneuvers than ConstantThrustManevuer? Or, as my initial investigation has suggested, will I need to estimate the thrusts for each maneuver, then average them?
// This is what I think I have to do
// Run 1
  // set up numerical propagator
  // add all 5 maneuvers
  // estimate, resulting in 5 thrust parameters being solved and covariance generated for all 5
  // combine the 5 thrust solutions/covariances into 1 for output to user
// Run 2
  // take combined a-priori state/covariance and distribute into N solutions/parameters (N = number of maneuvers in run 2)
  // estimate
  // combine the N thrust solutions/covariances into 1 for output to user
  1. Is there a way to continue using the Sequential Estimator if the next set of measurements happen to not contain any maneuvers? For example, if I run estimation for the 6 orbital parameters, 5 maneuver thrust parameters, and 2 propagator parameters (drag/srp), I get a 1x13 solution vector and 13x13 covariance matrix. Should the next run of the estimator contain 0 maneuvers, I get an error when trying to pass in the 1x13 and 13x13 a-priori solution and covariance. Again, my initial investigation has suggested that the only solution to this would be to store the maneuver thrust parameter elements of the solution vector and covariance matrix, thus resizing the a-priori solution to be 1x8 and 8x8, then passing those values into the Estimator. We must also consider the other way, if I now have the 1x8 and 8x8 covariance for a previous estimation without maneuvers and slices of the vector/matrix from the last estimation with maneuvers, I’d take the slices and plug them back in to create my (8+N)x(8+N) covariance matrix (N = number of maneuvers).
// Example of 3 sequential estimations
  // Run 1: Estimation of orbital parameters, drag, srp, and 5 maneuvers = 13 total
  // Run 2: Estimation of orbital parameters, drag, srp = 8 total
    // slice the size 13 solution from Run 1 down to 8 for use in sequential estimation
  // Run 3: Estimation of orbital parameters, drag, srp, and 3 maneuvers = 11 total
    // augment the Run 2 solution with 3 lines from the Run 1 solution for use in sequential estimation

As you can see, these separate problems are somewhat linked. Since I’m assuming the thrust is going to be the same across all of the maneuvers, I believe it’s possible to perform estimation with this matrix and vector re-sizing. If we couldn’t make that assumption, I recognize that this approach likely falls apart.

Any advice is much appreciated! Thank you.

Hi there,

  1. You can build N ConstantThrustManeuver with the same AbstractConstantThrustPropulsionModel. This way a single thrust magnitude will be estimated. Check ouf the constructors.
  2. I think that you’ll need to manipulate covariance yeah

Cheers,
Romain.

2 Likes