Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Algoritmo de localización Monte Carlo

Visión general

El algoritmo de localización de Montecarlo (MCL) se utiliza para estimar la posición y la orientación de un robot. El algoritmo utiliza un mapa conocido del entorno, los datos del sensor de rango y los datos del sensor de odometría. Para ver cómo construir un objeto y usar este algoritmo, vea.robotics.MonteCarloLocalization

Para localizar el robot, el algoritmo MCL utiliza un filtro de partículas para estimar su posición. Las partículas representan la distribución de los Estados probables para el robot. Cada partícula representa un posible estado de robot. Las partículas convergen alrededor de una única ubicación a medida que el robot se mueve en el medio ambiente y detecta diferentes partes del entorno utilizando un sensor de rango. El movimiento del robot se detecta utilizando un sensor de odometría.

Las partículas se actualizan en este proceso:

  1. Las partículas se propagan en función del cambio en la pose y el modelo de movimiento especificado,.MotionModel

  2. A las partículas se les asignan pesos en función de la probabilidad de recibir la lectura del sensor de rango para cada partícula. Esta lectura se basa en el modelo de sensor que especifique.SensorModel

  3. En función de estos pesos, se extrae una estimación de estado de robot en función de los pesos de partículas. El grupo de partículas con el peso más alto se utiliza para estimar la posición del robot.

  4. Por último, las partículas se remuestrean en función del especificado.ResamplingInterval El remuestreo ajusta las posiciones de las partículas y mejora el rendimiento ajustando el número de partículas utilizadas. Es una característica clave para ajustarse a los cambios y mantener las partículas relevantes para estimar el estado del robot.

El algoritmo genera la pose y la covarianza estimadas. Estas estimaciones son la media y la covarianza del grupo de partículas ponderado más alto. Para el seguimiento continuo, repita estos pasos en un bucle para propagar partículas, evaluar su probabilidad y obtener la mejor estimación de estado.

Para obtener más información sobre los filtros de partículas como aplicación general, consulte.Flujo de trabajo de filtro de partículas

Representación del estado

Cuando se trabaja con un algoritmo de localización, el objetivo es estimar el estado de su sistema. Para aplicaciones de robótica, este estado Estimado suele ser una postura de robot. Para el objeto, especifique esta pose como un vector de tres elementos.MonteCarloLocalization La pose corresponde a una posición, y una orientación angular,.x-y[x y]theta

El algoritmo MCL estima estos tres valores basados en las entradas de sensor del entorno y un modelo de movimiento dado de su sistema. La salida del uso del objeto incluye el, que es el mejor estado estimado de los valores.MonteCarloLocalizationpose[x y theta] Las partículas se distribuyen alrededor de una pose inicial, o se muestrean uniformemente mediante la localización global.InitialPose La pose se calcula como la media del mayor grupo ponderado de partículas una vez que estas partículas se han corregido en función de las mediciones.

Esta gráfica muestra el cluster ponderado más alto y la postura del robot final mostrada sobre las partículas de las muestras en verde. Con más iteraciones del algoritmo MCL y correcciones de medición, las partículas convergen en la verdadera Ubicación del robot. Sin embargo, es posible que los clústeres de partículas puedan tener pesos elevados para estimaciones falsas y converger en la ubicación equivocada. Si ocurre la convergencia incorrecta, remuestrea las partículas restableciendo el algoritmo MCL con una actualización.InitialPose

Inicialización de partículas

Cuando cree el algoritmo por primera vez, especifique los límites de partículas mínimo y máximo mediante la propiedad.MonteCarloLocalizationParticleLimits Un mayor número de partículas aumenta la probabilidad de que las partículas converjan en la ubicación real. Sin embargo, un número de partícula más bajo es más rápido. El número de partículas se ajusta dinámicamente dentro de los límites en función de los pesos de los clústeres de partículas. Este ajuste ayuda a reducir el número de partículas a lo largo del tiempo para que la localización pueda ejecutarse de manera más eficiente.

Distribución de partículas

Las partículas se deben muestrear en una distribución especificada. Para inicializar las partículas en el espacio de estado, puede utilizar una pose inicial o una localización global. Con la localización global, puede distribuir uniformemente las partículas a través de su espacio de estado esperado (extraído de la propiedad del objeto).MapSensorModel En el objeto MCL predeterminado, establezca la propiedad en.GlobalLocalizationtrue

mcl = robotics.MonteCarloLocalization; mcl.GlobalLocalization = true;

La localización global requiere un mayor número de partículas para muestrear eficazmente partículas en todo el espacio de estado. Más partículas aumentan la probabilidad de una convergencia exitosa en el estado real. Esta gran distribución reduce considerablemente el rendimiento inicial hasta que las partículas empiezan a converger y se puede reducir el número de partículas.

De forma predeterminada, se establece la localización global.false Sin la localización global, debe especificar las propiedades y, lo que ayuda a localizar las partículas.InitialPoseInitialCovariance Usando esta pose inicial, las partículas están más estrechamente agrupadas alrededor de un estado estimado. Una agrupación estrecha de partículas le permite usar menos de ellas y aumenta la velocidad y la precisión del seguimiento durante las primeras iteraciones.

Estas imágenes se tomaron del ejemplo, que muestra cómo utilizar el algoritmo MCL con el en un entorno conocido.Localize TurtleBot utilizando la localización de MontecarloTurtleBot®

Partículas de remuestreo y actualización de pose

Para localizar su robot continuamente, debe remuestrear las partículas y actualizar el algoritmo. Utilice las propiedades y para controlar cuándo se produce el remuestreo y se producen actualizaciones en el estado estimado.UpdateThresholdResamplingInterval

Es un vector de tres elementos que define el cambio mínimo en la pose del robot, para desencadenar una actualización.UpdateThreshold[x y theta] Al cambiar una variable por más de este mínimo, se desencadena una actualización, lo que provoca que el objeto devuelva una nueva estimación de estado. Este cambio en la postura del robot se basa en la odometría, que se especifica en la forma funcional del objeto. Ajuste estos umbrales en función de sus propiedades de sensor y el movimiento de su robot. El ruido aleatorio o las variaciones menores mayores que el umbral pueden desencadenar una actualización innecesaria y afectar al rendimiento. La propiedad define el número de actualizaciones para desencadenar el remuestreo de partículas.ResamplingInterval Por ejemplo, un intervalo de remuestreo de remuestreos en cada otra actualización.2

El beneficio de las partículas de remuestreo es que se actualizan las posibles ubicaciones que contribuyen a la estimación final. El Resampling redistribuye las partículas en función de sus pesos y evoluciona las partículas en función del.Modelo de movimiento En este proceso, se eliminan las partículas con menor peso, ayudando a que las partículas converjan en el verdadero estado del robot. El número de partículas cambia dinámicamente para mejorar la velocidad o el seguimiento.

El rendimiento del algoritmo depende del remuestreo adecuado. Si las partículas se dispersan ampliamente y no se conoce la pose inicial del robot, el algoritmo mantiene un alto conteo de partículas. A medida que el algoritmo converge en la ubicación verdadera, reduce el número de partículas y aumenta la velocidad de rendimiento. Puede ajustar su propiedad para limitar las partículas mínimas y máximas utilizadas para ayudar con el rendimiento.ParticleLimits

Modelo de movimiento y sensor

Los modelos de movimiento y sensor para el algoritmo MCL son similares a las y funciones para el objeto, que se describen en.StateTransitionFcnMeasurementLikelihoodFcnrobotics.ParticleFilterParámetros de filtro de partículas Para el algoritmo MCL, estos modelos son más específicos para la localización de robots. Después de llamar al objeto, para cambiar las propiedades o, primero debe llamar a su objeto.MotionModelSensorModelrelease

Modelo de sensor

De forma predeterminada, utiliza un objeto como modelo de sensor.MonteCarloLocalizationrobotics.LikelihoodFieldSensorModel Este modelo de sensor contiene parámetros específicos del sensor de rango utilizado, información de mapa 2-D para el entorno del robot y características de ruido de medición. El modelo de sensor utiliza los parámetros con mediciones de rango para calcular la probabilidad de las mediciones dada la posición actual del robot. Sin factorizar estos parámetros, algunos errores de medición pueden sesgar la estimación de estado o aumentar el peso en partículas irrelevantes.

Las propiedades del sensor de rango son:

  • – La pose del sensor de rango en relación con la ubicación del robot.SensorPose Esta pose se utiliza para transformar las lecturas del rango en el marco de coordenadas del robot.

  • – Los límites de alcance mínimo y máximo.SensorLimits La medición fuera de estos rangos no se factoriza en el cálculo de probabilidad.

  • – Número de vigas utilizadas para calcular la probabilidad.NumBeams Puede mejorar la velocidad de rendimiento reduciendo el número de vigas utilizadas.

Las mediciones de rango también se conocen para dar lecturas falsas debido al ruido del sistema u otras interferencias ambientales. Para tener en cuenta el error del sensor, especifique estos parámetros:

  • – Desviación estándar para el ruido de medición.MeasurementNoise Esta desviación se aplica a la lectura del rango y a las cuentas de cualquier interferencia con el sensor. Establezca este valor en función de la información de su sensor de rango.

  • — Peso para la probabilidad de medición aleatoria.RandomMeasurementWeight Establezca una probabilidad baja para mediciones aleatorias. El valor predeterminado es 0,05.

  • — Peso para la probabilidad de la medición esperada.ExpectedMeasurementWeight Establezca una alta probabilidad para las mediciones esperadas. El valor predeterminado es 0,95.

El modelo de sensor también almacena un mapa del entorno de robot como una rejilla de ocupación. Utilíla para especificar el mapa con espacios libres y ocupados.robotics.BinaryOccupancyGrid Establezca espacios desconocidos en el mapa como ubicaciones libres. Establecerlos en ubicaciones libres impide que el algoritmo coincida con los objetos detectados en estas áreas del mapa.

Además, puede especificar, lo que limita el área para buscar obstáculos.MaximumLikelihoodDistance El valor de es la distancia máxima al obstáculo más cercano que se utiliza para el cálculo de la probabilidad.MaximumLikelihoodDistance

Modelo de movimiento

El modelo de movimiento para la localización de robots ayuda a predecir cómo evolucionan las partículas a lo largo del tiempo cuando se remuestrea. Es una representación de la cinemática del robot. El modelo de movimiento incluido por defecto con el algoritmo MCL es un modelo de movimiento diferencial basado en odometría ().robotics.OdometryMotionModel Sin un modelo de movimiento, predecir el siguiente paso es más difícil. Es importante conocer las capacidades de su sistema para que el algoritmo de localización pueda planear distribuciones de partículas para obtener mejores estimaciones de estado. Asegúrese de considerar los errores de los codificadores de rueda u otros sensores utilizados para medir la odometría. Los errores en el sistema definen la propagación de la distribución de partículas.

Puede especificar el error esperado en función del movimiento de su robot como un vector de cuatro elementos,.Noise Estos cuatro elementos se especifican como pesos en las desviaciones estándar para:[1]

  • Error rotacional debido al movimiento rotacional

  • Error de rotación debido al movimiento translacional

  • Error translacional debido al movimiento translacional

  • Error translacional debido al movimiento rotacional

Para los robots de accionamiento diferencial, cuando un robot pasa de una pose inicial a una pose final, el cambio de pose puede tratarse como:

  1. La rotación a la posición final

  2. La traducción en línea directa a la posición final

  3. La rotación a la orientación del objetivo

Suponiendo estos pasos, puede visualizar el efecto de los errores en la rotación y la traducción. Los errores en la rotación inicial resultan en que las posiciones posibles se extienden en forma de C alrededor de la posición final.

Los grandes errores traslacionales resultan en que sus posibles posiciones se extienden alrededor de la línea directa hasta la posición final.

Los grandes errores tanto en la traducción como en la rotación pueden dar lugar a posiciones de mayor difusión.

Además, los errores de rotación afectan a la orientación de la pose final. La comprensión de estos efectos le ayuda a definir el ruido Gaussiano en la propiedad del objeto para su aplicación específica.NoiseMotionModel Como muestran las imágenes, cada parámetro no controla directamente la dispersión y puede variar con la configuración y la geometría del robot. Además, varios cambios de pose a medida que el robot navega a través de su entorno pueden aumentar los efectos de estos errores en muchos pasos diferentes. Al definir con precisión estos parámetros, las partículas se distribuyen apropiadamente para dar al algoritmo MCL suficientes hipótesis para encontrar la mejor estimación para la ubicación del robot.

Referencias

[1] Thrun, Sebastian, and Dieter Fox. Probabilistic Robotics. 3rd ed. Cambridge, Mass: MIT Press, 2006. p.136.

Consulte también

| |

Temas relacionados