Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Parámetros del filtro de partículas

Para utilizar el filtro de partículas stateEstimatorPF (Robotics System Toolbox) , debe especificar parámetros como el número de partículas, la ubicación inicial de las partículas y el método de estimación del estado. Además, si tiene un modelo de sensor y movimiento específico, especifique estos parámetros en la función de transición de estado y la función de probabilidad de medición, respectivamente. Los detalles de estos parámetros se detallan en esta página. Para obtener más información sobre el flujo de trabajo del filtro de partículas, consulte Flujo de trabajo del filtro de partículas.

Número de partículas

Para especificar el número de partículas, utilice el método initialize . Cada partícula es una hipótesis del estado actual. Las partículas se distribuyen en su espacio de estados basándose en una media y una covarianza específicas, o en los límites de estado especificados. Dependiendo de la propiedad StateEstimationMethod , se toma la partícula con el peso más alto o la media de todas las partículas para determinar la mejor estimación del estado.

El número predeterminado de partículas es 1000. A menos que el rendimiento sea un problema, no utilice menos de 1000 partículas. Una mayor cantidad de partículas puede mejorar la estimación, pero sacrifica la velocidad de rendimiento, porque el algoritmo tiene que procesar más partículas. Ajustar la cantidad de partículas es la mejor manera de afectar el rendimiento de sus filtros de partículas.

Estos resultados, que se basan en el ejemplo stateEstimatorPF , muestran la diferencia en la precisión del seguimiento cuando se utilizan 100 partículas y 5000 partículas.

Ubicación inicial de partículas

Cuando inicializa su filtro de partículas, puede especificar la ubicación inicial de las partículas usando:

  • Media y covarianza

  • Límites estatales

Su estado inicial se define como una media con una covarianza relativa a su sistema. Esta media y covarianza se correlacionan con la ubicación inicial y la incertidumbre de su sistema. El objeto stateEstimatorPF distribuye partículas según su covarianza alrededor de la media dada. El algoritmo utiliza esta distribución de partículas para obtener la mejor estimación del estado, por lo que una inicialización precisa de las partículas ayuda a converger rápidamente a la mejor estimación del estado.

Si se desconoce un estado inicial, puede distribuir uniformemente sus partículas a lo largo de los límites de un estado determinado. Los límites estatales son los límites de su estado. Por ejemplo, al estimar la posición de un robot, los límites de estado se limitan al entorno en el que el robot realmente puede habitar. En general, una distribución uniforme de partículas es una forma menos eficiente de inicializar partículas para mejorar la velocidad de convergencia.

El gráfico muestra cómo la especificación de media y covarianza puede agrupar partículas de manera mucho más efectiva en un espacio en lugar de especificar los límites de estado completos.

Función de transición de estado

La función de transición de estado, StateTransitionFcn, de un filtro de partículas ayuda a hacer evolucionar las partículas al siguiente estado. Se utiliza durante el paso de predicción del Flujo de trabajo del filtro de partículas. En el objeto stateEstimatorPF , la función de transición de estado se especifica como una función de callback que toma las partículas anteriores y cualquier otro parámetro necesario, y genera la ubicación predicha. La sintaxis del encabezado de la función es:

function predictParticles = stateTransitionFcn(pf,prevParticles,varargin)

De forma predeterminada, la función de transición de estado asume un modelo de movimiento gaussiano con velocidades constantes. La función utiliza una distribución gaussiana para determinar la posición de las partículas en el siguiente paso de tiempo.

Para su aplicación, es importante tener una función de transición de estado que describa con precisión cómo espera que se comporte el sistema. Para hacer evolucionar con precisión todas las partículas, debe desarrollar e implementar un modelo de movimiento para su sistema. Si las partículas no se distribuyen alrededor del siguiente estado, el objeto stateEstimatorPF no encuentra una estimación precisa. Por lo tanto, es importante comprender cómo se puede comportar su sistema para poder realizar un seguimiento preciso.

También debe especificar el ruido del sistema en StateTransitionFcn. Sin ruido aleatorio aplicado al sistema previsto, el filtro de partículas no funciona según lo previsto.

Aunque se pueden predecir muchos sistemas en función de su estado anterior, a veces el sistema puede incluir información adicional. El uso de varargin en la función le permite ingresar cualquier parámetro adicional que sea relevante para predecir el siguiente estado. Cuando llamas a predict, puedes incluir estos parámetros usando:

predict(pf,param1,param2)

Debido a que estos parámetros coinciden con la función de transición de estado que definiste, llamar a predict esencialmente llama a la función como:

predictParticles = stateTransitionFcn(pf,prevParticles,param1,param2)

Las partículas de salida, predictParticles, luego son utilizadas por el Función de probabilidad de medición para corregir las partículas, o se usan en el siguiente paso de predicción si no se requiere corrección.

Función de probabilidad de medición

Después de predecir el siguiente estado, puede utilizar las mediciones de los sensores para corregir el estado previsto. Al especificar un MeasurementLikelihoodFcn en el objeto stateEstimatorPF , puede corregir las partículas predichas usando la función correct . Esta función de probabilidad de medición, por definición, da un peso a las hipótesis de estado (sus partículas) en función de una medición determinada. Básicamente, le brinda la probabilidad de que la medición observada realmente coincida con lo que observa cada partícula. Esta probabilidad se utiliza como peso de las partículas predichas para ayudar a corregirlas y obtener la mejor estimación. Aunque el paso de predicción puede resultar preciso para una pequeña cantidad de pasos intermedios, para obtener un seguimiento preciso, utilice observaciones de sensores para corregir las partículas con frecuencia.

La especificación del MeasurementLikelihoodFcn es similar a la del StateTransitionFcn. Se especifica como un identificador de función en las propiedades del objeto stateEstimatorPF . La sintaxis del encabezado de la función es:

function likelihood = measurementLikelihoodFcn(pf,predictParticles,measurement,varargin)

El resultado es la probabilidad de cada partícula predicha según la medición dada. Sin embargo, también puede especificar más parámetros en varargin. El uso de varargin en la función le permite ingresar cualquier parámetro adicional que sea relevante para corregir el estado previsto. Cuando llamas a correct, puedes incluir estos parámetros usando:

correct(pf,measurement,param1,param2)

Estos parámetros coinciden con la función de probabilidad de medición que definiste:

likelihood = measurementLikelihoodFcn(pf,predictParticles,measurement,param1,param2)

La función correct utiliza la salida likelihood para el remuestreo de partículas y para dar la estimación del estado final.

Política de remuestreo

El remuestreo de partículas es un paso vital para el seguimiento continuo de objetos. Le permite seleccionar partículas según el estado actual, en lugar de utilizar la distribución de partículas proporcionada en la inicialización. Al volver a muestrear continuamente las partículas alrededor de la estimación actual, puede obtener un seguimiento más preciso y mejorar el rendimiento a largo plazo.

Cuando llama a correct, las partículas utilizadas para la estimación del estado se pueden volver a muestrear dependiendo de la propiedad ResamplingPolicy especificada en el objeto stateEstimatorPF . Esta propiedad se especifica como un objeto resamplingPolicyPF resamplingPolicyPF (Robotics System Toolbox) . La propiedad TriggerMethod de ese objeto le dice al filtro de partículas qué método usar para el remuestreo.

Puede activar el remuestreo en un intervalo fijo o cuando se alcance una proporción mínima de partículas efectivas. El método de intervalo fijo vuelve a muestrear en un número determinado de iteraciones, que se especifica en la propiedad SamplingInterval . La proporción mínima de partículas efectivas es una medida de qué tan bien se aproxima el conjunto actual de partículas a la distribución posterior. El número de partículas efectivas se calcula mediante:

En esta ecuación, N es el número de partículas y w es el peso normalizado de cada partícula. La relación de partículas efectiva es entonces Neff / NumParticles. Por lo tanto, la proporción efectiva de partículas es función de los pesos de todas las partículas. Una vez que los pesos de las partículas alcanzan un valor suficientemente bajo, no contribuyen a la estimación del estado. Este valor bajo desencadena un remuestreo, por lo que las partículas están más cerca de la estimación del estado actual y tienen pesos más altos.

Método de estimación estatal

El último paso del flujo de trabajo del filtro de partículas es la selección de una estimación de estado único. Las partículas y sus pesos muestreados a lo largo de la distribución se utilizan para dar la mejor estimación del estado real. Sin embargo, puede utilizar la información de las partículas para obtener una estimación de estado único de varias maneras. Con el objeto stateEstimatorPF , puedes elegir la mejor estimación basada en la partícula con el peso más alto o tomar una media de todas las partículas. Especifique el método de estimación en la propiedad StateEstimationMethod como 'mean'(predeterminado) o 'maxweight'.

Debido a que puedes estimar el estado de todas las partículas de muchas maneras, también puedes extraer cada partícula y su peso de stateEstimatorPF usando la propiedad Particles .

Consulte también

| (Robotics System Toolbox)

Ejemplos relacionados

Más acerca de