Использовать stateEstimatorPF
фильтр частиц, необходимо задать параметры, такие как количество частиц, начального местоположения частицы и метода оценки состояния. Кроме того, если у вас есть определенное движение и модель датчика, вы задаете эти параметры в функции изменения состояния и функции правдоподобия измерения, соответственно. Детали этих параметров детализированы на этой странице. Для получения дополнительной информации о рабочем процессе фильтра частиц смотрите Рабочий процесс Фильтра частиц.
Чтобы задать количество частиц, используйте initialize
метод. Каждая частица является гипотезой текущего состояния. Частицы распределяются на вашем пространстве состояний или на основе заданного среднего значения и ковариации, или на заданных границах состояния. В зависимости от StateEstimationMethod
свойство, или частица с самым высоким весом или среднее значение всех частиц взяты, чтобы определить лучшую оценку состояния.
Количество по умолчанию частиц 1000. Если эффективность не является проблемой, не используйте меньше чем 1 000 частиц. Более высокое количество частиц может улучшить оценку, но скорость эффективности жертв, потому что алгоритм должен обработать больше частиц. Настройка количества частиц является лучшим способом влиять на вашу эффективность фильтров частиц.
Эти результаты, которые основаны на stateEstimatorPF
пример, покажите различие в точности отслеживания при использовании 100 частиц и 5 000 частиц.
Когда вы инициализируете свой фильтр частиц, можно задать начальное местоположение использования частиц:
Среднее значение и ковариация
Границы состояния
Ваше начальное состояние задано как среднее значение с ковариацией относительно вашей системы. Это среднее значение и ковариация коррелируют к начальному местоположению и неопределенности в вашей системе. stateEstimatorPF
объект распределяет частицы на основе вашей ковариации вокруг данного среднего значения. Алгоритм использует это распределение частиц, чтобы получить лучшую оценку состояния, таким образом, точная инициализация частиц помогает сходиться к лучшей оценке состояния быстро.
Если начальное состояние неизвестно, можно равномерно распределить частицы через данные границы состояния. Границы состояния являются пределами вашего состояния. Например, при оценке положения робота, границы состояния ограничиваются средой, которую может на самом деле населять робот. В общем случае ровное распределение частиц является менее эффективным способом инициализировать частицы, чтобы улучшить быстроту сходимости.
График показывает, как среднее значение и спецификация ковариации могут кластеризировать частицы намного эффективнее на пробеле вместо того, чтобы задать полные границы состояния.
Функция изменения состояния, StateTransitionFcn
, из фильтра частиц помогает развить частицы к следующему состоянию. Это используется во время шага предсказания Рабочего процесса Фильтра частиц. В stateEstimatorPF
объект, функция изменения состояния задана как функция обратного вызова, которая берет предыдущие частицы и любые другие необходимые параметры, и выводит предсказанное местоположение. Функциональный синтаксис заголовка:
function predictParticles = stateTransitionFcn(pf,prevParticles,varargin)
По умолчанию функция изменения состояния принимает Гауссову модель движения с постоянными скоростями. Функция использует Распределение Гаусса, чтобы определить положение частиц в следующем временном шаге.
Для вашего приложения важно иметь функцию изменения состояния, которая точно описывает, как вы ожидаете, что система будет вести себя. Чтобы точно развить все частицы, необходимо разработать и реализовать модель движения для системы. Если частицы не распределяются вокруг следующего состояния, stateEstimatorPF
объект не находит точную оценку. Поэтому важно изучить, как ваша система может вести себя так, чтобы можно было отследить его точно.
Также необходимо задать системный шум в StateTransitionFcn
. Без случайного шума применился к предсказанной системе, фильтр частиц не функционирует, как предназначено.
Несмотря на то, что можно предсказать много систем на основе их предыдущего состояния, иногда система может включать дополнительную информацию. Использование varargin
в функции позволяет вам ввести любые дополнительные параметры, которые важны для предсказания следующего состояния. Когда вы вызываете predict
, можно включать эти параметры использование:
predict(pf,param1,param2)
Поскольку эти параметры совпадают с функцией изменения состояния, вы задали, вызвав predict
по существу вызывает функцию как:
predictParticles = stateTransitionFcn(pf,prevParticles,param1,param2)
Выходные частицы, predictParticles
, затем или используются Функцией правдоподобия Измерения, чтобы откорректировать частицы или используются на следующем шаге предсказания, если коррекция не требуется.
После предсказания следующего состояния можно использовать измерения от датчиков, чтобы откорректировать предсказанное состояние. Путем определения MeasurementLikelihoodFcn
в stateEstimatorPF
объект, можно откорректировать предсказанные частицы с помощью correct
функция. Эта функция правдоподобия измерения, по определению, дает вес для гипотез состояния (ваши частицы) на основе данного измерения. По существу это дает вам вероятность, что наблюдаемое измерение на самом деле совпадает с тем, что наблюдает каждая частица. Эта вероятность используется в качестве веса на предсказанных частицах, чтобы помочь с исправлением их и получением лучшей оценки. Несмотря на то, что шаг предсказания может оказаться точным для небольшого количества промежуточных шагов, чтобы получить точное отслеживание, используйте наблюдения датчика, чтобы часто корректировать частицы.
Спецификация MeasurementLikelihoodFcn
похоже на StateTransitionFcn
. Это определяется функцией указатель в свойствах stateEstimatorPF
объект. Функциональный синтаксис заголовка:
function likelihood = measurementLikelihoodFcn(pf,predictParticles,measurement,varargin)
Выход является вероятностью каждой предсказанной частицы на основе данного измерения. Однако можно также задать больше параметров в varargin
. Использование varargin
в функции позволяет вам ввести любые дополнительные параметры, которые важны для исправления предсказанного состояния. Когда вы вызываете correct
, можно включать эти параметры использование:
correct(pf,measurement,param1,param2)
Эти параметры совпадают с функцией правдоподобия измерения, которую вы задали:
likelihood = measurementLikelihoodFcn(pf,predictParticles,measurement,param1,param2)
correct
функционируйте использует likelihood
выведите для передискретизации частицы и предоставления оценки конечного состояния.
Передискретизация частиц является жизненным шагом для непрерывного отслеживания объектов. Это позволяет вам выбрать частицы на основе текущего состояния, вместо того, чтобы использовать распределение частицы, данное при инициализации. Путем непрерывной передискретизации частиц вокруг текущей оценки можно получить более точное отслеживание и улучшать долгосрочную производительность.
Когда вы вызываете correct
, частицы, используемые для оценки состояния, могут передискретизироваться в зависимости от ResamplingPolicy
свойство задано в stateEstimatorPF
объект. Это свойство задано как resamplingPolicyPF
(Navigation Toolbox) resamplingPolicyPF
объект. TriggerMethod
свойство на том объекте говорит фильтр частиц который метод использовать для передискретизации.
Можно инициировать передискретизацию или в фиксированный интервал или в когда минимальное эффективное отношение частицы достигнуто. Метод фиксированного интервала передискретизирует в количестве набора итераций, которое задано в SamplingInterval
свойство. Минимальное эффективное отношение частицы является мерой того, как хорошо текущий набор частиц аппроксимирует апостериорное распределение. Количество эффективных частиц вычисляется:
В этом уравнении N является количеством частиц, и w является нормированным весом каждой частицы. Эффективным отношением частицы является затем Neff / NumParticles
. Поэтому эффективное отношение частицы является функцией весов всех частиц. После того, как веса частиц достигают достаточно низкого значения, они не способствуют оценке состояния. Эта низкая стоимость инициировала передискретизацию, таким образом, частицы ближе к оценке текущего состояния и имеют более высокие веса.
Последний шаг рабочего процесса фильтра частиц является выбором одной оценки состояния. Частицы и их веса, произведенные через распределение, используются, чтобы дать лучшую оценку реального положения. Однако можно использовать информацию о частицах, чтобы получить одну оценку состояния несколькими путями. С stateEstimatorPF
объект, можно или выбрать наилучшую оценку на основе частицы с самым высоким весом или взять среднее значение всех частиц. Задайте метод оценки в StateEstimationMethod
свойство как любой 'mean'
(значение по умолчанию) или 'maxweight'
.
Поскольку можно оценить состояние от всех частиц во многих отношениях, можно также извлечь каждую частицу и ее вес от stateEstimatorPF
использование Particles
свойство.
stateEstimatorPF
| resamplingPolicyPF