Параметры фильтра частиц

Как использовать stateEstimatorPF (Robotics System Toolbox) фильтр частиц, необходимо задать такие параметры, как количество частиц, начальное местоположение частиц и метод оценки состояния. Кроме того, если у вас есть определенная модель движения и датчика, вы задаете эти параметры в функции перехода состояния и функции правдоподобия измерения, соответственно. Подробная информация об этих параметрах представлена на этой странице. Для получения дополнительной информации о рабочем процессе фильтра частиц, смотрите Рабочий процесс фильтра частиц.

Количество частиц

Чтобы задать количество частиц, используйте initialize способ. Каждая частица является гипотезой о текущем состоянии. Частицы распределяются через пространство состояний на основе заданного среднего и ковариационного, или на заданных границах состояний. В зависимости от StateEstimationMethod свойство, либо частица с наибольшим весом, либо среднее значение всех частиц берётся, чтобы определить лучшую оценку состояния.

Количество частиц по умолчанию является 1000. Если эффективность не является проблемой, не используйте меньше 1000 частиц. Большее количество частиц может улучшить оценку, но жертвует скоростью эффективности, потому что алгоритм должен обрабатывать больше частиц. Настройка количества частиц является лучшим способом повлиять на эффективность ваших фильтров частиц.

Эти результаты, которые основаны на stateEstimatorPF пример, показать различие точности отслеживания при использовании 100 частиц и 5000 частиц.

Начальное расположение частиц

Когда вы инициализируете фильтр частиц, можно задать начальное положение частиц используя:

  • Среднее и ковариационное

  • Границы состояний

Ваше начальное состояние определяется как среднее с ковариацией относительно вашей системы. Это среднее значение и ковариация коррелируют с начальным местоположением и неопределенностью вашей системы. The 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)

The correct функция использует likelihood выход для повторной дискретизации частиц и предоставление окончательной оценки состояния.

Политика повторной дискретизации

Повторная дискретизация частиц является жизненно важным шагом для непрерывного отслеживания объектов. Это позволяет вам выбрать частицы на основе текущего состояния, вместо использования распределения частиц, данного при инициализации. Путем непрерывной повторной дискретизации частиц вокруг текущей оценки, вы можете получить более точное отслеживание и улучшить долгосрочную эффективность.

Когда вы звоните correctчастицы, используемые для оценки состояния, могут быть повторно дискретизированы в зависимости от ResamplingPolicy свойство, заданное в stateEstimatorPF объект. Это свойство задано как объект resamplingPolicyPFresamplingPolicyPF (Robotics System Toolbox). The TriggerMethod свойство этого объекта сообщает фильтру частиц, какой метод использовать для повторной дискретизации.

Можно инициировать повторную дискретизацию либо с фиксированным интервалом, либо при достижении минимального эффективного отношения частиц. Метод с фиксированным интервалом повторяется с заданным количеством итераций, что задано в SamplingInterval свойство. Минимальное эффективное отношение частиц является мерой того, насколько хорошо текущий набор частиц аппроксимирует апостериорное распределение. Количество эффективных частиц вычисляется:

В этом уравнении N количество частиц, а w нормализованный вес каждой частицы. Эффективное отношение частиц затем Neff/ NumParticles. Поэтому эффективное соотношение частиц является функцией от весов всех частиц. После того, как веса частиц достигают достаточно низкого значения, они не вносят вклад в оценку состояния. Это низкое значение запускает повторную дискретизацию, поэтому частицы ближе к оценке текущего состояния и имеют более высокие веса.

Метод оценки состояния

Конечным шагом рабочего процесса фильтра частиц является выбор одной оценки состояния. Частицы и их веса, отобранные через распределение, используются, чтобы дать лучшую оценку фактического состояния. Однако можно использовать информацию о частицах, чтобы получить одну оценку состояния несколькими способами. С stateEstimatorPF объект, можно либо выбрать лучшую оценку, основанную на частице с наибольшим весом, либо взять среднее из всех частиц. Задайте метод оценки в StateEstimationMethod свойство как 'mean'(по умолчанию) или 'maxweight'.

Поскольку вы можете оценить состояние от всех частиц многими способами, можно также извлечь каждую частицу и ее вес из stateEstimatorPF использование Particles свойство.

См. также

| (Robotics System Toolbox)

Похожие примеры

Подробнее о

Для просмотра документации необходимо авторизоваться на сайте