инициализировать

Класс: робототехника. ParticleFilter
Пакет: робототехника

Инициализируйте состояние фильтра частиц

Синтаксис

initialize(pf,numParticles,mean,covariance)
initialize(pf,numParticles,stateBounds)
initialize(___,Name,Value)

Описание

initialize(pf,numParticles,mean,covariance) инициализирует объект фильтра частиц, pf, с конкретным количеством частиц, numParticles. Начальные состояния частиц в пространстве состояний определяются путем выборки от многомерного нормального распределения с заданным mean и covariance.

initialize(pf,numParticles,stateBounds) определяет начальное местоположение частиц выборкой от многомерного равномерного распределения в заданном stateBounds.

initialize(___,Name,Value) инициализирует частицы с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

Входные параметры

развернуть все

Объект ParticleFilter, заданный как указатель. Смотрите robotics.ParticleFilter для получения дополнительной информации.

Количество частиц используется в фильтре, заданном как скаляр.

Среднее значение распределения частицы, заданного как вектор. Свойство NumStateVariables pf установлено на основе длины этого вектора.

Ковариация распределения частицы, заданного как N-by-N матрица, где N является значением свойства NumStateVariables от pf.

Границы переменных состояния, заданных как n-by-2 матрица. Свойство NumStateVariables pf установлено на основе значения n. Каждая строка соответствует нижнему и верхнему пределу соответствующей переменной состояния.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Круговые переменные, заданные как логический вектор. Каждая переменная состояния, которая использует круговые или угловые координаты, обозначается с 1. Длина вектора равна свойству NumStateVariables pf.

Примеры

развернуть все

Создайте объект ParticleFilter и выполните прогноз и шаг исправления для оценки состояния. Фильтр частиц дает предсказанную оценку состояния на основе возвращаемого значения StateTransitionFcn. Это затем исправляет состояние на основе данного измерения и возвращаемого значения MeasurementLikelihoodFcn.

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

pf = robotics.ParticleFilter
pf = 
  ParticleFilter with properties:

           NumStateVariables: 3
                NumParticles: 1000
          StateTransitionFcn: @robotics.algs.gaussianMotion
    MeasurementLikelihoodFcn: @robotics.algs.fullStateMeasurement
     IsStateVariableCircular: [0 0 0]
            ResamplingPolicy: [1x1 robotics.ResamplingPolicy]
            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)). Используйте 5 000 частиц.

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

Введенный в R2016a