exponenta event banner

правильный

Корректировка оценки состояния на основе измерения датчика

Описание

пример

[stateCorr,stateCov] = correct(pf,measurement) вычисляет скорректированное состояние системы и связанную с ним ковариацию неопределенности на основе датчика measurement на текущем шаге времени. correct использует MeasurementLikelihoodFcn свойство объекта фильтра частиц, pf, в качестве функции для вычисления вероятности измерения датчика для каждой частицы. Два входа в MeasurementLikelihoodFcn функции:

  1. pf- stateEstimatorPF объект, содержащий частицы текущей итерации

  2. measurement - Измерения датчиков, используемые для корректировки оценки состояния

MeasurementLikelihoodFcn затем функция извлекает наилучшую оценку состояния и ковариацию на основе установки в StateEstimationMethod собственность.

[stateCorr,stateCov] = correct(pf,measurement,varargin) передает все дополнительные аргументы в varargin к нижележащему MeasurementLikelihoodFcn после первых трех требуемых входных данных.

Примеры

свернуть все

Создать stateEstimatorPF и выполняют этап прогнозирования и коррекции для оценки состояния. Фильтр частиц дает предсказанную оценку состояния на основе возвращаемого значения StateTransitionFcn. Затем он корректирует состояние на основе данного измерения и возвращаемого значения MeasurementLikelihoodFcn.

Создайте фильтр частиц с тремя состояниями по умолчанию.

pf = stateEstimatorPF
pf = 
  stateEstimatorPF with properties:

           NumStateVariables: 3
                NumParticles: 1000
          StateTransitionFcn: @nav.algs.gaussianMotion
    MeasurementLikelihoodFcn: @nav.algs.fullStateMeasurement
     IsStateVariableCircular: [0 0 0]
            ResamplingPolicy: [1x1 resamplingPolicyPF]
            ResamplingMethod: 'multinomial'
       StateEstimationMethod: 'mean'
            StateOrientation: 'row'
                   Particles: [1000x3 double]
                     Weights: [1000x1 double]
                       State: 'Use the getStateEstimate function to see the value.'
             StateCovariance: 'Use the getStateEstimate function to see the value.'

Укажите метод оценки среднего состояния и метод систематической повторной выборки.

pf.StateEstimationMethod = 'mean';
pf.ResamplingMethod = 'systematic';

Инициализировать фильтр частиц в состоянии [4 1 9] с единичной ковариацией (eye(3)). Используйте 5000 частицы.

initialize(pf,5000,[4 1 9],eye(3));

Предполагая измерение [4.2 0.9 9], выполните одно предсказание и один правильный шаг.

[statePredicted,stateCov] = predict(pf);
[stateCorrected,stateCov] = correct(pf,[4.2 0.9 9]);

Получите лучшую оценку состояния на основе StateEstimationMethod алгоритм.

stateEst = getStateEstimate(pf)
stateEst = 1×3

    4.1562    0.9185    9.0202

Входные аргументы

свернуть все

stateEstimatorPF объект, указанный как дескриптор. Посмотрите stateEstimatorPF для получения дополнительной информации.

Измерения датчиков, указанные как массив. Этот вход передается непосредственно в MeasurementLikelihoodFcn имущество pf. Он используется для вычисления вероятности измерения датчика для каждой частицы.

Список входных аргументов переменной длины, указанный как список, разделенный запятыми. Этот вход передается непосредственно в MeasurementLikelihoodFcn имущество pf. Он используется для вычисления вероятности измерения датчика для каждой частицы. При звонке:

correct(pf,measurement,arg1,arg2)
По существу, вызовы MATLAB ®measurementLikelihoodFcn как:
measurementLikelihoodFcn(pf,measurement,arg1,arg2)

Выходные аргументы

свернуть все

Исправленное состояние системы, возвращаемое как вектор строки с длиной NumStateVariables. Исправленное состояние вычисляется на основе StateEstimationMethod алгоритм и MeasurementLikelihoodFcn.

Скорректированная системная дисперсия, возвращаемая в виде матрицы N-на-N, где N - значение NumStateVariables свойство из pf. Исправленное состояние вычисляется на основе StateEstimationMethod алгоритм и MeasurementLikelihoodFcn. Если указать метод оценки состояния, который не поддерживает ковариацию, то функция возвращает stateCov как [].

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2016a