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