1 /* Copyright 2002-2019 CS Systèmes d'Information 2 * Licensed to CS Systèmes d'Information (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.orekit.propagation.SpacecraftState; 21 22 /** Provider for process noise matrices. 23 * @author Luc Maisonobe 24 * @since 9.2 25 */ 26 public interface CovarianceMatrixProvider { 27 28 /** Get the initial covariance matrix. 29 * <p> 30 * The initial covariance matrix is a covariance matrix corresponding to the 31 * parameters managed by the {@link KalmanEstimator Kalman estimator}. 32 * The number of rows/columns and their order are as follows: 33 * </p> 34 * <ul> 35 * <li>The first 6 components correspond to the 6 orbital parameters 36 * of the associated propagator. All 6 parameters must always be present, 37 * regardless of the fact they are estimated or not.</li> 38 * <li>The following components correspond to the subset of propagation 39 * parameters of the associated propagator that are estimated.</li> 40 * <li>The remaining components correspond to the subset of measurements 41 * parameters that are estimated, considering all measurements, even 42 * the ones that correspond to spacecrafts not related to the 43 * associated propagator</li> 44 * </ul> 45 * <p> 46 * In most cases, the initial covariance matrix will be the output matrix 47 * of a previous run of the Kalman filter. 48 * </p> 49 * @param initial initial state state 50 * @return physical (i.e. non normalized) initial covariance matrix 51 * @see org.orekit.propagation.conversion.PropagatorBuilder#getOrbitalParametersDrivers() 52 * @see org.orekit.propagation.conversion.PropagatorBuilder#getPropagationParametersDrivers() 53 */ 54 RealMatrix getInitialCovarianceMatrix(SpacecraftState initial); 55 56 /** Get the process noise matrix between previous and current states. 57 * <p> 58 * The process noise matrix is a covariance matrix corresponding to the 59 * parameters managed by the {@link KalmanEstimator Kalman estimator}. 60 * The number of rows/columns and their order are as follows: 61 * </p> 62 * <ul> 63 * <li>The first 6 components correspond to the 6 orbital parameters 64 * of the associated propagator. All 6 parameters must always be present, 65 * regardless of the fact they are estimated or not.</li> 66 * <li>The following components correspond to the subset of propagation 67 * parameters of the associated propagator that are estimated.</li> 68 * <li>The remaining components correspond to the subset of measurements 69 * parameters that are estimated, considering all measurements, even 70 * the ones that correspond to spacecrafts not related to the 71 * associated propagator</li> 72 * </ul> 73 * <p> 74 * In most cases, the process noise for the part corresponding to measurements 75 * (the final rows and columns) will be set to 0 for the process noise corresponding 76 * to the evolution between a non-null previous and current state. 77 * </p> 78 * @param previous previous state 79 * @param current current state 80 * @return physical (i.e. non normalized) process noise matrix between 81 * previous and current states 82 * @see org.orekit.propagation.conversion.PropagatorBuilder#getOrbitalParametersDrivers() 83 * @see org.orekit.propagation.conversion.PropagatorBuilder#getPropagationParametersDrivers() 84 */ 85 RealMatrix getProcessNoiseMatrix(SpacecraftState../org/orekit/propagation/SpacecraftState.html#SpacecraftState">SpacecraftState previous, SpacecraftState current); 86 87 }