1 /* 2 * Licensed to the Hipparchus project under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The Hipparchus project 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 * https://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.hipparchus.filtering.kalman.unscented; 18 19 import org.hipparchus.filtering.kalman.Measurement; 20 import org.hipparchus.linear.RealMatrix; 21 import org.hipparchus.linear.RealVector; 22 23 /** 24 * Unscented process that can be estimated by a {@link UnscentedKalmanFilter}. 25 * <p> 26 * This interface must be implemented by users to represent the behavior 27 * of the process to be estimated 28 * </p> 29 * @param <T> the type of the measurements 30 * @see UnscentedKalmanFilter 31 * @see org.hipparchus.filtering.kalman.unscented.UnscentedProcess 32 * @since 2.2 33 */ 34 public interface UnscentedProcess<T extends Measurement> { 35 36 /** Get the state evolution between two times. 37 * @param previousTime time of the previous state 38 * @param sigmaPoints sigma points 39 * @param measurement measurement to process 40 * @return states evolution 41 */ 42 UnscentedEvolution getEvolution(double previousTime, RealVector[] sigmaPoints, T measurement); 43 44 /** Get the state evolution between two times. 45 * @param predictedSigmaPoints predicted state sigma points 46 * @param measurement measurement to process 47 * @return predicted measurement sigma points 48 */ 49 RealVector[] getPredictedMeasurements(RealVector[] predictedSigmaPoints, T measurement); 50 51 /** Get the innovation brought by a measurement. 52 * @param measurement measurement to process 53 * @param predictedMeasurement predicted measurement 54 * @param predictedState predicted state 55 * @param innovationCovarianceMatrix innovation covariance matrix 56 * @return innovation brought by a measurement, may be null if measurement should be rejected 57 */ 58 RealVector getInnovation(T measurement, RealVector predictedMeasurement, RealVector predictedState, RealMatrix innovationCovarianceMatrix); 59 60 }