1   /* Copyright 2002-2025 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.estimation.sequential;
18  
19  import org.hipparchus.linear.RealMatrix;
20  import org.hipparchus.linear.RealVector;
21  import org.orekit.estimation.measurements.EstimatedMeasurement;
22  import org.orekit.propagation.SpacecraftState;
23  import org.orekit.time.AbsoluteDate;
24  import org.orekit.utils.ParameterDriversList;
25  
26  /** Interface for accessing {@link KalmanEstimator Kalman filter} estimations.
27   * The "physical" term used to characterize the states and matrices is used per opposition to
28   * the "normalized" states and matrices used to perform the computation.
29   * @author Luc Maisonobe
30   * @since 9.2
31   */
32  public interface KalmanEstimation {
33  
34      /** Get the list of estimated orbital parameters.
35       * @return the list of estimated orbital parameters
36       */
37      ParameterDriversList getEstimatedOrbitalParameters();
38  
39      /** Get the list of estimated propagation parameters.
40       * @return the list of estimated propagation parameters
41       */
42      ParameterDriversList getEstimatedPropagationParameters();
43  
44      /** Get the list of estimated measurements parameters.
45       * @return the list of estimated measurements parameters
46       */
47      ParameterDriversList getEstimatedMeasurementsParameters();
48  
49      /** Get the predicted spacecraft states.
50       * @return predicted spacecraft states
51       */
52      SpacecraftState[] getPredictedSpacecraftStates();
53  
54      /** Get the corrected spacecraft states.
55       * @return corrected spacecraft states
56       */
57      SpacecraftState[] getCorrectedSpacecraftStates();
58  
59      /** Get the "physical" estimated state (i.e. not normalized)
60       * @return the "physical" estimated state
61       */
62      RealVector getPhysicalEstimatedState();
63  
64      /** Get the "physical" estimated covariance matrix (i.e. not normalized)
65       * @return the "physical" estimated covariance matrix
66       */
67      RealMatrix getPhysicalEstimatedCovarianceMatrix();
68  
69      /** Get physical state transition matrix between previous state and estimated (but not yet corrected) state.
70       * @return state transition matrix between previous state and estimated state (but not yet corrected)
71       * (may be null for initial process estimate)
72       * @since 9.3
73       */
74      RealMatrix getPhysicalStateTransitionMatrix();
75  
76      /** Get the physical Jacobian of the measurement with respect to the state (H matrix).
77       * @return physical Jacobian of the measurement with respect to the state (may be null for initial
78       * process estimate or if the measurement has been ignored)
79       * @since 9.3
80       */
81      RealMatrix getPhysicalMeasurementJacobian();
82  
83      /** Get the physical innovation covariance matrix.
84       * @return physical innovation covariance matrix (may be null for initial
85       * process estimate or if the measurement has been ignored)
86       * @since 9.3
87       */
88      RealMatrix getPhysicalInnovationCovarianceMatrix();
89  
90      /** Get the physical Kalman gain matrix.
91       * @return Kalman gain matrix (may be null for initial
92       * process estimate or if the measurement has been ignored)
93       * @since 9.3
94       */
95      RealMatrix getPhysicalKalmanGain();
96  
97      /** Get the current measurement number.
98       * @return current measurement number
99       */
100     int getCurrentMeasurementNumber();
101 
102     /** Get the current date.
103      * @return current date
104      */
105     AbsoluteDate getCurrentDate();
106 
107     /** Get the predicted measurement.
108      * <p>
109      * This estimation has been evaluated on the last predicted orbits
110      * </p>
111      * @return predicted measurement
112      */
113     EstimatedMeasurement<?> getPredictedMeasurement();
114 
115     /** Get the estimated measurement.
116      * <p>
117      * This estimation has been evaluated on the last corrected orbits
118      * </p>
119      * @return corrected measurement
120      */
121     EstimatedMeasurement<?> getCorrectedMeasurement();
122 }