1   /* Copyright 2002-2021 CS GROUP
2    * Licensed to CS GROUP (CS) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * CS licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.orekit.propagation.conversion;
18  
19  import java.util.List;
20  
21  import org.orekit.estimation.leastsquares.AbstractBatchLSModel;
22  import org.orekit.estimation.leastsquares.ModelObserver;
23  import org.orekit.estimation.measurements.ObservedMeasurement;
24  import org.orekit.estimation.sequential.AbstractKalmanModel;
25  import org.orekit.estimation.sequential.CovarianceMatrixProvider;
26  import org.orekit.orbits.Orbit;
27  import org.orekit.utils.ParameterDriversList;
28  
29  /** Base class for orbit determination model builders.
30   * @author Bryan Cazabonne
31   * @since 11.0
32   */
33  public interface OrbitDeterminationPropagatorBuilder extends PropagatorBuilder {
34  
35      /** Build a new batch least squares model.
36       * @param builders builders to use for propagation
37       * @param measurements measurements
38       * @param estimatedMeasurementsParameters estimated measurements parameters
39       * @param observer observer to be notified at model calls
40       * @return a new model for the Batch Least Squares orbit determination
41       */
42      AbstractBatchLSModel buildLSModel(OrbitDeterminationPropagatorBuilder[] builders,
43                                        List<ObservedMeasurement<?>> measurements,
44                                        ParameterDriversList estimatedMeasurementsParameters,
45                                        ModelObserver observer);
46  
47      /** Build a new Kalman model.
48       * @param propagatorBuilders propagators builders used to evaluate the orbits.
49       * @param covarianceMatricesProviders providers for covariance matrices
50       * @param estimatedMeasurementsParameters measurement parameters to estimate
51       * @param measurementProcessNoiseMatrix provider for measurement process noise matrix
52       * @return a new model for Kalman Filter orbit determination
53       */
54      AbstractKalmanModel buildKalmanModel(List<OrbitDeterminationPropagatorBuilder> propagatorBuilders,
55                                           List<CovarianceMatrixProvider> covarianceMatricesProviders,
56                                           ParameterDriversList estimatedMeasurementsParameters,
57                                           CovarianceMatrixProvider measurementProcessNoiseMatrix);
58  
59      /** Reset the orbit in the propagator builder.
60       * @param newOrbit New orbit to set in the propagator builder
61       */
62      void resetOrbit(Orbit newOrbit);
63  
64  }