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.

Algoritmo de localización de Montecarlo

Visión general

El algoritmo de localización de Monte Carlo (MCL) se utiliza para estimar la posición y orientación de un robot. El algoritmo utiliza un mapa conocido del entorno, datos de sensores de distancia y datos de sensores de odometría. Para ver cómo construir un objeto y usar este algoritmo, consulte 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 del robot. Cada partícula representa un posible estado del robot. Las partículas convergen alrededor de una única ubicación a medida que el robot se mueve en el entorno y detecta diferentes partes del entorno mediante un sensor de distancia. El movimiento del robot se detecta mediante un sensor de odometría.

Las partículas se actualizan en este proceso:

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

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

  3. A partir de estos pesos, se extrae una estimación del estado del robot en función de los pesos de las partículas. El grupo de partículas con mayor peso se utiliza para estimar la posición del robot.

  4. Finalmente, las partículas se vuelven a muestrear según el ResamplingInterval especificado. El remuestreo ajusta las posiciones de las partículas y mejora el rendimiento ajustando la cantidad de partículas utilizadas. Es una característica clave para adaptarse 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 un 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 del filtro de partículas.

Representación estatal

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 pose de robot. Para el objeto monteCarloLocalization , especifica esta pose como un vector de tres elementos. La pose corresponde a una posición x-y , [x y], y una orientación angular, theta.

El algoritmo MCL estima estos tres valores basándose en las entradas de los sensores del entorno y un modelo de movimiento determinado de su sistema. El resultado del uso del objeto monteCarloLocalization incluye el pose, que es el mejor estado estimado de los valores [x y theta] . Las partículas se distribuyen alrededor de una pose inicial, InitialPose, o se muestrean de manera uniforme mediante localización global. La pose se calcula como la media del grupo de partículas con mayor peso una vez que estas partículas se han corregido en función de las mediciones.

Este gráfico muestra el grupo ponderado más alto y la pose final del robot 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 a la verdadera ubicación del robot. Sin embargo, es posible que los grupos de partículas tengan pesos elevados para estimaciones falsas y converjan en la ubicación incorrecta. Si se produce una convergencia incorrecta, vuelva a muestrear las partículas restableciendo el algoritmo MCL con un InitialPose actualizado.

Inicialización de partículas

Cuando cree por primera vez el algoritmo monteCarloLocalization , especifique los límites mínimo y máximo de partículas utilizando la propiedad ParticleLimits . 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ículas menor es más rápido. El número de partículas se ajusta dinámicamente dentro de los límites basados ​​en los pesos de los grupos de partículas. Este ajuste ayuda a reducir la cantidad de partículas con el tiempo para que la localización pueda realizarse de manera más eficiente.

Distribución de partículas

Las partículas deben muestrearse en una distribución específica. Para inicializar partículas en el espacio de estados, puede utilizar una pose inicial o una localización global. Con la localización global, puede distribuir partículas uniformemente en su espacio de estado esperado (extraído de la propiedad Map de su objeto SensorModel). En el objeto MCL predeterminado, establezca la propiedad GlobalLocalization en true.

mcl = monteCarloLocalization;
mcl.GlobalLocalization = true;

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

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

Estas imágenes fueron tomadas del ejemplo Localice TurtleBot utilizando el algoritmo de localización Monte Carlo , que muestra cómo usar el algoritmo MCL con TurtleBot® en un entorno conocido.

Remuestreo de partículas y actualización de pose

Para localizar su robot continuamente, debe volver a muestrear las partículas y actualizar el algoritmo. Utilice las propiedades UpdateThreshold y ResamplingInterval para controlar cuándo se produce el remuestreo y las actualizaciones del estado estimado.

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

El beneficio de volver a muestrear partículas es que actualiza las posibles ubicaciones que contribuyen a la estimación final. El remuestreo 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, las partículas de menor peso se eliminan, ayudando a que las partículas converjan al verdadero estado del robot. La cantidad de partículas cambia dinámicamente para mejorar la velocidad o el seguimiento.

El rendimiento del algoritmo depende de un remuestreo adecuado. Si las partículas están muy dispersas y se desconoce la pose inicial del robot, el algoritmo mantiene un recuento elevado de partículas. A medida que el algoritmo converge en la ubicación real, reduce la cantidad de partículas y aumenta la velocidad de rendimiento. Puede ajustar su propiedad ParticleLimits para limitar las partículas mínimas y máximas utilizadas para ayudar con el rendimiento.

Modelo de movimiento y sensor

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

Modelo de sensor

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

Las propiedades del sensor de rango son:

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

  • SensorLimits – Los límites de rango mínimo y máximo. Las mediciones fuera de estos rangos no se tienen en cuenta en el cálculo de probabilidad.

  • NumBeams – Número de haces utilizados para calcular la probabilidad. Puede mejorar la velocidad del rendimiento reduciendo la cantidad de haces utilizados.

También se sabe que las mediciones de alcance dan lecturas falsas debido al ruido del sistema u otras interferencias ambientales. Para tener en cuenta el error del sensor, especifique estos parámetros:

  • MeasurementNoise – Desviación estándar del ruido de medición. Esta desviación se aplica a la lectura del rango y tiene en cuenta cualquier interferencia con el sensor. Establezca este valor según la información de su sensor de distancia.

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

  • ExpectedMeasurementWeight — Ponderación de la probabilidad de medición esperada. 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 del robot como una cuadrícula de ocupación. Utilice binaryOccupancyMap para especificar su mapa con espacios ocupados y libres. Establece cualquier espacio desconocido en el mapa como ubicación libre. Configurarlos en ubicaciones libres evita que el algoritmo haga coincidir los objetos detectados con estas áreas del mapa.

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

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 al volver a muestrear. Es una representación de la cinemática del robot. El modelo de movimiento incluido de forma predeterminada con el algoritmo MCL es un modelo de movimiento de accionamiento diferencial basado en odometría (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 planificar distribuciones de partículas para obtener mejores estimaciones de estado. Asegúrese de considerar los errores de los codificadores de ruedas u otros sensores utilizados para medir la odometría. Los errores en el sistema definen la dispersió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 ponderaciones en las desviaciones estándar para [1]:

  • Error de rotación debido al movimiento de rotación.

  • Error de rotación debido al movimiento de traslación.

  • Error de traslación debido al movimiento de traslación.

  • Error de traslación debido al movimiento de rotación.

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

  1. Rotación a la posición final.

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

  3. Rotación hacia la orientación del objetivo.

Asumiendo estos pasos, puede visualizar el efecto de los errores en la rotación y la traslación. Los errores en la rotación inicial dan como resultado que sus posibles posiciones se distribuyan en forma de C alrededor de la posición final.

Los grandes errores de traslación dan como resultado que sus posibles posiciones se distribuyan alrededor de la línea directa hasta la posición final.

Grandes errores tanto en la traslación como en la rotación pueden dar como resultado posiciones más extendidas.

Además, los errores de rotación afectan la orientación de la pose final. Comprender estos efectos le ayuda a definir el ruido gaussiano en la propiedad Noise del objeto MotionModel para su aplicación específica. Como muestran las imágenes, cada parámetro no controla directamente la dispersión y puede variar según la configuración y geometría de su robot. Además, múltiples cambios de pose a medida que el robot navega por 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 adecuadamente para darle 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