Для использования stateEstimatorPF (Robotics System Toolbox) фильтр частиц, необходимо указать такие параметры, как количество частиц, начальное местоположение частиц и метод оценки состояния. Кроме того, при наличии определенной модели движения и датчика эти параметры задаются в функции перехода состояния и функции правдоподобия измерения соответственно. Подробная информация об этих параметрах приведена на этой странице. Дополнительные сведения о рабочем процессе фильтра частиц см. в разделе Рабочий процесс фильтра частиц.
Чтобы указать количество частиц, используйте initialize способ. Каждая частица - гипотеза текущего состояния. Частицы распределяются по пространству состояний на основе либо заданного среднего значения и ковариации, либо на заданных границах состояний. В зависимости от StateEstimationMethod свойство, либо частица с наибольшим весом, либо среднее значение всех частиц принимается для определения наилучшей оценки состояния.
Количество частиц по умолчанию - 1000. Если производительность не является проблемой, не используйте менее 1000 частиц. Большее количество частиц может улучшить оценку, но жертвует производительностью, потому что алгоритм должен обрабатывать больше частиц. Настройка количества частиц - лучший способ повлиять на производительность фильтров частиц.
Эти результаты, которые основаны на stateEstimatorPF пример, показать разницу в точности отслеживания при использовании 100 частиц и 5000 частиц.

При инициализации фильтра частиц можно указать начальное местоположение частиц с помощью:
Среднее и ковариация
Границы состояний
Начальное состояние определяется как среднее с ковариацией относительно вашей системы. Это среднее значение и ковариация коррелируют с начальным местоположением и неопределенностью вашей системы. 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 объект. Это свойство указывается как resamplingPolicyPFresamplingPolicyPFобъект (Robotics System Toolbox). TriggerMethod свойство этого объекта сообщает фильтру частиц, какой метод следует использовать для повторной выборки.
Повторную выборку можно инициировать либо с фиксированным интервалом, либо при достижении минимального эффективного отношения частиц. Метод фиксированного интервала выполняет повторную выборку при заданном количестве итераций, которое указано в SamplingInterval собственность. Минимальное эффективное соотношение частиц является мерой того, насколько хорошо текущий набор частиц приближается к заднему распределению. Количество эффективных частиц рассчитывают по:

В этом уравнении N - количество частиц, а w - нормализованный вес каждой частицы. Тогда эффективное соотношение частиц составляет Нефф/ NumParticles. Следовательно, эффективное соотношение частиц является функцией веса всех частиц. После того как вес частиц достигает достаточно низкого значения, они не способствуют оценке состояния. Это низкое значение вызывает повторную выборку, так что частицы ближе к оценке текущего состояния и имеют более высокие веса.
Последним этапом рабочего процесса фильтра частиц является выбор одной оценки состояния. Частицы и их вес, отобранные по всему распределению, используются для наилучшей оценки фактического состояния. Однако можно использовать информацию о частицах для получения одной оценки состояния несколькими способами. С помощью stateEstimatorPF объект, можно либо выбрать наилучшую оценку на основе частицы с наибольшим весом, либо взять среднее значение всех частиц. Укажите метод оценки в StateEstimationMethod свойство как 'mean'(по умолчанию) или 'maxweight'.
Поскольку вы можете оценить состояние из всех частиц многими способами, вы также можете извлечь каждую частицу и ее вес из stateEstimatorPF с использованием Particles собственность.
stateEstimatorPF | resamplingPolicyPF (Панель инструментов системы робототехники)