Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Flujo de trabajo de filtro de partículas

A es un estimador de estado Bayesiano recursivo que utiliza partículas discretas para aproximar la distribución posterior del estado estimado.filtro de partículas

El algoritmo de filtro de partículas calcula la estimación de estado de forma recursiva e implica dos pasos:

  • Predicción: el algoritmo utiliza el estado anterior para predecir el estado actual en función de un modelo de sistema determinado.

  • Corrección: el algoritmo utiliza la medición del sensor actual para corregir la estimación del estado.

El algoritmo también redistribuye periódicamente, o resamples, las partículas en el espacio de estado para que coincidan con la distribución posterior del estado estimado.

El estado Estimado consta de todas las variables de estado. Cada partícula representa una hipótesis de estado discreta. El conjunto de todas las partículas se utiliza para ayudar a determinar la estimación final del estado.

Puede aplicar el filtro de partículas a modelos de sistema no lineales arbitrarios. El ruido de proceso y medición puede seguir distribuciones no Gaussianas arbitrarias.

Para utilizar el filtro de partículas correctamente, debe especificar parámetros como el número de partículas, la ubicación de la partícula inicial y el método de estimación de estado. Además, si tiene un modelo de movimiento y sensor 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. Para obtener más información, consulte.Parámetros de filtro de partículas

Siga este flujo de trabajo básico para crear y usar un filtro de partículas. Esta página detalla el flujo de trabajo de estimación y muestra un ejemplo de cómo ejecutar un filtro de partículas en un bucle para estimar continuamente el estado.

Flujo de trabajo de estimación

Cuando se utiliza un filtro de partículas, hay un conjunto necesario de pasos para crear el filtro de partículas y el estado de estimación. Los pasos de predicción y corrección son los principales pasos de iteración para estimar continuamente el estado.

Crear filtro de partículas

Cree un objeto llamando.ParticleFilterrobotics.ParticleFilter

Establecer parámetros de sistema no lineal

Modifique estos parámetros para que se ajusten a su sistema o aplicación específicos:ParticleFilter

  • StateTransitionFcn

  • MeasurementLikelihoodFcn

  • ResamplingPolicy

  • ResamplingMethod

  • StateEstimationMethod

Los valores predeterminados para estos parámetros se dan para la operación básica.

Las funciones y definen el comportamiento del sistema y la integración de la medida.StateTransitionFcnMeasurementLikelihoodFcn Son vitales para que el filtro de partículas realice un seguimiento preciso. Para obtener más información, consulte.Parámetros de filtro de partículas

Inicializar partículas

Utilice el método para establecer el número de partículas y el estado inicial.initialize Ver robotics.ParticleFilter.initialize.

Partículas de muestra de una distribución

Puede muestrear las ubicaciones iniciales de las partículas de dos maneras:

  • Pose inicial y covarianza: Si tiene una idea de su estado inicial, se recomienda que especifique la pose inicial y la covarianza. Esta especificación ayuda a agrupar partículas más cerca de su estimación para que el seguimiento sea más eficaz desde el principio.

  • Límites de estado: Si no conoce el estado inicial, puede especificar los límites posibles de cada variable de estado. Las partículas se distribuyen uniformemente a través de los límites de estado para cada variable. Las partículas ampliamente distribuidas no son tan efectivas en el seguimiento, porque menos partículas están cerca del estado real. El uso de límites de estado normalmente requiere más partículas, tiempo de cálculo y iteraciones para converger a la estimación de estado real.

Predecir

Según una función de transición de estado especificada, las partículas evolucionan para estimar el estado siguiente. Se usa para ejecutar la función de transición de estado especificada en la propiedad.predictStateTransitionFcn Ver robotics.ParticleFilter.predict.

Obtener medición

Las mediciones recogidas de los sensores se utilizan en el siguiente paso para corregir el estado pronosticado actual.

Correcto

Las mediciones se utilizan para ajustar el estado pronosticado y corregir la estimación. Especifique las mediciones mediante la función.correct robotics.ParticleFilter.correct utiliza el para calcular la probabilidad de mediciones del sensor para cada partícula.MeasurementLikelihoodFcn El remuestreo de partículas es necesario para actualizar la estimación a medida que el estado cambia en iteraciones posteriores. Este paso desencadena el remuestreo en función de las propiedades y.ResamplingMethodResamplingPolicy

Extraiga la mejor estimación de estado

Después de llamar, la mejor estimación de estado se extrae automáticamente en función de la de cada partícula y la propiedad especificada en.correctWeightsStateEstimationMethodrobotics.ParticleFilter El mejor estado Estimado y la covarianza es la salida de la función.correct

Remuestrear partículas

Este paso no se llama por separado, pero se ejecuta cuando se llama.correct Una vez que su estado ha cambiado lo suficiente, remuestrear sus partículas en base a la estimación más reciente. El método comprueba la activación del remuestreo de partículas según la distribución actual de las partículas y sus pesos.correctResamplingPolicy Si el remuestreo no se desencadena, se utilizan las mismas partículas para la siguiente estimación. Si su estado no varía mucho o si su paso de tiempo es bajo, puede llamar a los métodos de predicción y correcta sin remuestreo.

Predecir y corregir continuamente

Repita los pasos anteriores de predicción y corrección según sea necesario para estimar el estado. El paso de corrección determina si se requiere el remuestreo de las partículas. Múltiples llamadas o pueden ser requeridas cuando:predictcorrect

  • No hay medición disponible, pero las entradas de control y las actualizaciones de tiempo se producen en una frecuencia alta. Utilice el método para evolucionar las partículas para obtener el estado de predicción actualizado con más frecuencia.predict

  • Hay disponibles múltiples lecturas de medición. Se utiliza para integrar múltiples lecturas de los mismos o múltiples sensores.correct La función corrige el estado en función de cada conjunto de información recopilada.

Estimar la posición del robot en un bucle usando filtro de partículas

Utilice el objeto para rastrear un robot a medida que se mueve en un espacio en 2-D.ParticleFilter La posición medida tiene un ruido aleatorio añadido. Uso y, seguimiento del robot basado en la medición y en un modelo de movimiento asumido.predictcorrect

Inicialice el filtro de partículas y especifique la función de transición de estado predeterminada, la función de probabilidad de medición y la Directiva de remuestreo.

pf = robotics.ParticleFilter; pf.StateEstimationMethod = 'mean'; pf.ResamplingMethod = 'systematic'; 

Muestra 1000 partículas con una posición inicial de [0 0] y covarianza de unidad.

initialize(pf,1000,[0 0],eye(2)); 

Antes de la estimación, defina una trayectoria de onda sinusoidal para que el punto siga. Cree una matriz para almacenar la posición pronosticada y estimada. Defina la amplitud del ruido.

t = 0:0.1:4*pi; dot = [t; sin(t)]'; robotPred = zeros(length(t),2); robotCorrected = zeros(length(t),2); noise = 0.1; 

Comience el bucle para predecir y corregir la posición estimada en función de las mediciones. El remuestreo de partículas se produce en función de la propiedad.ResamplingPolicy El robot se mueve basado en una función de onda sinusoidal con ruido aleatorio añadido a la medida.

for i = 1:length(t)     % Predict next position. Resample particles if necessary.     [robotPred(i,:),robotCov] = predict(pf);     % Generate dot measurement with random noise. This is     % equivalent to the observation step.     measurement(i,:) = dot(i,:) + noise*(rand([1 2])-noise/2);     % Correct position based on the given measurement to get best estimation.     % Actual dot position is not used. Store corrected position in data array.     [robotCorrected(i,:),robotCov] = correct(pf,measurement(i,:)); end 

Trace la ruta real frente a la posición estimada. Los resultados reales pueden variar debido a la aleatoriedad de las distribuciones de partículas.

plot(dot(:,1),dot(:,2),robotCorrected(:,1),robotCorrected(:,2),'or') xlim([0 t(end)]) ylim([-1 1]) legend('Actual position','Estimated position') grid on 

La figura muestra cuán cerca el estado de estimación coincide con la posición real del robot. Intente ajustar el número de partículas o especificar una posición inicial y una covarianza diferentes para ver cómo afecta el seguimiento con el tiempo.

Consulte también

| | |

Ejemplos relacionados

Más acerca de