0% encontró este documento útil (0 votos)
76 vistas25 páginas

Localización Monte Carlo en Robótica

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
76 vistas25 páginas

Localización Monte Carlo en Robótica

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

UNIVERSIDAD DEL PERÚ, DECANA DE AMÉRICA

FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMÁTICA

ESCUELA PROFESIONAL DE INGENIERÍA DE SOFTWARE

Localización por Monte Carlo

CURSO: Automatización y Control de Software

SECCIÓN: N° 1

ESTUDIANTES :

❖ Huarhua Piñas Edson Sebastian


❖ Rodas Panaifo, Jordan André
❖ Quiroz Ardiles Sergio Daniel
❖ Ascue Orosco, Carlos
DOCENTE:

Túpac Valdivia, Jesus Yván

Lima, 2024 - I
ÍNDICE

1. Introducción........................................................................................................................................4
1.1. Principios Básicos..................................................................................... 4
2. Etapas del algoritmo.......................................................................................................................... 5
2.1 Ambiente y mapa............................................................................................10
2.2 Uso del Sonar.................................................................................................12
3. Objetivos........................................................................................................................................... 13
3.1 Verosimilitud del sonar como actualización de medición............................... 13
A. Contexto General....................................................................................... 13
B. Uso del Sonar............................................................................................ 13
C. Implementación en Lua en CoppeliaSim................................................... 14
D. Actualización de las Partículas Después de la Medición...........................15
3.2 Normalización y Remuestreo......................................................................... 17
A. Normalización de pesos de partículas....................................................... 17
B. Remuestreo de partículas.......................................................................... 18
3.3 Navegacíon por hitos mientras se hace localizacion......................................20
3.3.1 Mecanismo de Navegación por Hitos Preprogramados........................ 20
3.3.2 Resampleo y Estimación de la Localización......................................... 21
3.3.3 Movimiento y Seguimiento de Ruta....................................................... 24
4. Conclusiones..................................................................................................................24
Conclusiones sobre la Navegación por Hitos mientras se realiza Localización
Monte Carlo (MCL)......................................................................................... 25
1. Introducción

La localización de Monte Carlo (MCL) es un algoritmo probabilístico

utilizado en robótica para estimar la posición y orientación (pose) de un robot

móvil en un entorno previamente conocido. Este algoritmo es parte de la

familia de filtros de partículas y se usa ampliamente por su capacidad para

manejar incertidumbres en las mediciones y el movimiento del robot.

.1. Principios Básicos

El algoritmo MCL se fundamenta en un grupo de partículas (hipótesis)

que simbolizan las potenciales localizaciones del robot. Cada partícula posee

un estado, el cual abarca la ubicación (x, y) y la dirección θ, además de un

peso que señala la posibilidad de que dicha partícula represente

adecuadamente la posición real del robot. El algoritmo sigue un ciclo que

consta de cuatro fases clave:

● Predicción del Movimiento (Prediction):

En esta etapa, las partículas se mueven de acuerdo al modelo de

movimiento del robot y los datos de odometría, incluyendo ruido para

representar la incertidumbre intrínseca en el movimiento.

● Actualización de las Mediciones (Update):

Los pesos de las partículas se modifican basándose en las

mediciones realizadas por un sensor, como un sonar. Las partículas

cuyas proyecciones se ajustan con mayor precisión a las mediciones

efectivas adquieren pesos más elevados.


● Normalización (Normalization):

Una vez que se han ajustado los pesos de las partículas, se

normalizan para que la suma total de estos sea uno, lo que produce una

distribución de probabilidad válida.

● Remuestreo (Resampling):

Por último, se elige un nuevo grupo de partículas basándose en

los pesos normalizados. Las partículas de mayor peso son más

propensas a ser seleccionadas, concentrándose de esta manera las

partículas en las zonas más probables del espacio de estados.

2. Etapas del algoritmo

● Predicción del movimiento a partir de Odometría

En este paso, la predicción del movimiento se realiza actualizando las

posiciones de las partículas en función de datos odométricos. Esta fase se

basa en la información de movimiento del robot para proyectar la nueva

posición de las partículas según el modelo de movimiento.

En este paso, la predicción del movimiento se realiza actualizando las

posiciones de las partículas en función de datos odométricos. Esta fase se

basa en la información de movimiento del robot para proyectar la nueva

posición de las partículas según el modelo de movimiento.


● Actualizaciones de las mediciones basadas en el sensor (sonar)

En el algoritmo de localización de Monte Carlo (MCL), la

actualización de las mediciones requiere ajustar el peso de las partículas en

función de la probabilidad de que el sensor observe la medición. El proceso

implica comparar las lecturas del sensor con las expectativas para cada

partícula, dando más peso a aquellas lecturas que predicen con mayor

precisión las observaciones reales. Primero, es necesario definir la función de

probabilidad. Por simplicidad, se supone que el sensor mide la distancia entre

el robot y la pared más cercana.


Segundo, integramos la función update en el ciclo completo del algoritmo

MCL.

● Normalización
La normalización del peso es un proceso indispensable en el Algoritmo de

Posicionamiento de Monte Carlo (MCL). Después de ajustar los pesos de

las partículas según las mediciones del sensor, se deben normalizar para que

la suma de todos los pesos sea igual a 1. Este paso garantiza que las

ponderaciones formen la distribución de probabilidad correcta.

Luego use el lenguaje Lua para implementar la normalización del peso.

Integramos la función normalize_weights en el ciclo completo del MCL.


● Remuestreo (de las partículas)

El remuestreo es la etapa final del algoritmo de localización de Monte

Carlo (MCL). En este paso, se crea un nuevo conjunto de partículas utilizando

los pesos previamente normalizados. Es más probable que se seleccionen

partículas con pesos más altos, lo que concentra las partículas en las regiones

más probables del espacio de estados.

Una forma eficaz de lograr el remuestreo es un algoritmo de "rueda de

remuestreo" que ayuda a seleccionar partículas según su peso.


Integración con la función resample en el ciclo completo del MCL.

2.1 Ambiente y mapa


El entorno en el que opera el robot es un espacio cerrado, cuya

configuración se define en un archivo de escenario especial llamado

Practice5.ttt.

● Configuración de Paredes:La escena contiene un script que lee

automáticamente la configuración del muro desde la interfaz gráfica de

usuario (GUI) y almacena las coordenadas finales en una matriz

llamada muro. Esta matriz es el núcleo del funcionamiento del

algoritmo MCL, ya que las paredes definen el entorno en el que el

robot se mueve y toma medidas.

● Puntos de Referencia (Waypoints): La escena también tiene una matriz

llamada waypoints que contiene las coordenadas de una serie de

waypoints que el robot debe seguir. Estos puntos se distribuyen a lo

largo del recorrido que debe recorrer el robot durante el ejercicio, y en

cada punto se realiza un algoritmo de posicionamiento Monte Carlo.


2.2 Uso del Sonar

El sonar (navegación y alcance sónicos) se utiliza principalmente en la

función calcallLikelihood y su trabajo es calcular la probabilidad.

Mide la probabilidad de que una hipótesis determinada (en este caso, la

posición y orientación del robot) sea correcta en función de las

observaciones (en este contexto, las lecturas del sonar). Una opción

puede estar representada por la siguiente función:

donde:
z es la distancia medida por el sonar.

m es la distancia esperada calculada.

σ es la desviación estándar del sensor.

3. Objetivos

3.1 Verosimilitud del sonar como actualización de medición

En esta sección, se explicará el proceso de cálculo de la verosimilitud

del sonar para la actualización de mediciones dentro del contexto de un filtro

de partículas. Este enfoque es fundamental para mantener la precisión en la

localización del robot, utilizando datos de sensores para ajustar las

estimaciones de las partículas.

A. Contexto General

En un filtro de partículas, se mantiene una serie de hipótesis

(partículas) sobre la posible posición y orientación del robot. Cada partícula

tiene un peso asociado que representa la probabilidad de que esa hipótesis sea

correcta. A medida que el robot se desplaza y toma nuevas mediciones, se

actualizan estos pesos para reflejar qué tan bien concuerda cada partícula con

las mediciones actuales.

B. Uso del Sonar

El sensor de sonar mide distancias a obstáculos, lo que resulta útil para

ajustar las posiciones estimadas de las partículas. La verosimilitud de una

partícula se calcula comparando la distancia medida por el sonar con la

distancia esperada a un obstáculo (o pared) según la hipótesis que representa la

partícula.
C. Implementación en Lua en CoppeliaSim

El script en Lua implementa un filtro de partículas que utiliza un sonar

para actualizar la verosimilitud de las partículas. A continuación, se

presentarán los detalles clave del script, específicamente en la función

calculateLikelihood(), que está relacionada con esta actualización.

Variables y Parámetros:

● x, y, theta: Coordenadas y orientación de la partícula.

● z: Distancia medida por el sonar.

● walls: Lista de paredes en el entorno, donde cada pared está definida

por sus coordenadas de inicio (Ax, Ay) y fin (Bx, By).

● sensorVariance: Varianza del sensor, que se utiliza para calcular la

verosimilitud.

Cálculo de la Distancia Esperada m:

● Para cada pared, se determina la distancia desde la partícula hasta la

pared utilizando una fórmula que se basa en la geometría de la línea.

● La distancia distanceToWall se actualiza únicamente si es la más corta

y positiva, lo que indica que la pared está ubicada frente al sensor.


Cálculo de la Verosimilitud:

● Se emplea una función gaussiana para calcular la verosimilitud,

tomando en cuenta la diferencia entre la distancia medida (z) y la

distancia esperada (m).

● En los casos en que no se detecte una pared (m = infinito), se asume

una verosimilitud de 1.0, aunque este supuesto podría revisarse según

el contexto.

D. Actualización de las Partículas Después de la Medición

A continuación, se detalla el proceso de actualización de las partículas

tras recibir una nueva medición de distancia. Este procedimiento es esencial

para ajustar la distribución de las partículas y mejorar la precisión en la

estimación de la posición del robot.


Cálculo de la Verosimilitud:

● Para cada partícula, se invoca a la función calculateLikelihood() para

obtener la verosimilitud de la medición actual.

● Los pesos de las partículas se actualizan multiplicando el peso anterior

por la verosimilitud calculada.

Normalización y Remuestreo:

● Se procede a normalizar los pesos de las partículas para que su suma

sea igual a 1.

● Se realiza el remuestreo de las partículas, lo que permite enfocar la

distribución en las áreas más probables.

● Se actualiza la visualización de las partículas en CoppeliaSim.


3.2 Normalización y Remuestreo

A. Normalización de pesos de partículas

La función normaliseParticleWeights() se encarga de normalizar los

pesos de las partículas. Primero, calcula la suma de todos los pesos actuales y,

posteriormente, divide cada peso por esa suma. Este proceso garantiza que la

suma de los pesos normalizados sea igual a 1.


B. Remuestreo de partículas

La función resampleParticles() lleva a cabo el remuestreo de

partículas empleando el método de "rueda de ruleta sesgada" (biased roulette

wheel). En primer lugar, se calcula un array de pesos acumulados a partir de

los pesos normalizados. Luego, para cada nueva partícula, se genera un

número aleatorio entre 0 y 1, lo que permite seleccionar una partícula existente

para copiar sus valores (x, y, theta) en función del rango de pesos acumulados

donde se encuentra el número aleatorio. Al finalizar el remuestreo, todos los

pesos de las partículas se reinician a 1 / numberOfParticles.

Estas funciones son utilizadas dentro de

updateParticlesAfterMeasurement(), la cual actualiza los pesos de las


partículas en función de una nueva medición de distancia, normaliza dichos

pesos y luego lleva a cabo el remuestreo.

En lo que respecta a la modificación de la máquina de estados para permitir

que el robot avance en los pasos siguientes, el código ya implementa una

máquina de estados secuencial mediante el uso de la variable stepCounter y

el array stepList. Esta máquina de estados regula el comportamiento del robot,

alternando entre la lectura del siguiente punto de referencia, girar, detenerse,

avanzar y repetir el ciclo. Puedes revisar la sección de la función

sysCall_actuation() donde se implementa esta lógica de máquina de estados.


3.3 Navegacíon por hitos mientras se hace localizacion

3.3.1 Mecanismo de Navegación por Hitos Preprogramados

El robot se desplaza a través de una secuencia de puntos de referencia para

llevar a cabo su navegación. Este mecanismo está implementado en la función

sysCall_actuation y se inicializa en la lista stepList y waypoints dentro de la

función sysCall_init.
La función sysCall_actuation gestiona la lógica necesaria para desplazarse de

un punto de referencia a otro, así como para realizar los movimientos de giro y

avance hacia el siguiente objetivo.

3.3.2 Resampleo y Estimación de la Localización


Tras cada medición, se lleva a cabo una actualización y un re-muestreo

de partículas para optimizar la estimación de la localización. Este

proceso se implementa a través de las funciones

updateParticlesAfterMeasurement, normaliseParticleWeights y

resampleParticles.

updateParticlesAfterMeasurement:

normaliseParticleWeights:
resampleParticles:
3.3.3 Movimiento y Seguimiento de Ruta

El movimiento del robot se gestiona a través de la función sysCall_actuation.

Según el paso actual (stepType), el robot puede girar hacia el siguiente punto

de referencia (turn), avanzar hacia él (forward) o realizar mediciones

(measurement).

4. Conclusiones

● El sonar es crucial en el algoritmo de Localización por Monte Carlo (MCL), ya que

suministra las mediciones necesarias para ajustar los pesos de las partículas. Estas

actualizaciones permiten al robot afinar su estimación de posición utilizando las

lecturas del entorno, lo que mejora notablemente la precisión de la localización.

● En relación con la verosimilitud del sonar como método para actualizar las

mediciones, se evidencia cómo este sensor mejora las estimaciones de la posición del

robot a través de un filtro de partículas. El aspecto fundamental de este proceso

consiste en comparar las mediciones del sonar con las distancias anticipadas según las

hipótesis que representan las partículas, ajustando los pesos de manera acorde. Esto
permite que el robot ajuste de forma continua su estimación de posición mientras se

desplaza por su entorno.

● El movimiento del robot, ya sea en desplazamientos rectos o en rotaciones, es

fundamental para prever el desplazamiento de las partículas. Las funciones de

actualización que se ejecutan después de cada movimiento

(updateParticlesAfterStraightLineMotion y updateParticlesAfterPureRotation )

incluyen ruido gaussiano para simular la incertidumbre de manera realista. Este

enfoque es crucial para mantener una distribución precisa y coherente de las partículas

dentro del algoritmo de Localización por Monte Carlo (MCL).

Conclusiones sobre la Navegación por Hitos mientras se realiza Localización Monte

Carlo (MCL)

Eficacia de la Navegación por Hitos:

● La navegación a través de hitos ofrece un marco organizado que guía al robot

a través de una serie predefinida de puntos de referencia (waypoints), lo que

facilita su desplazamiento tanto en entornos familiares como en aquellos

desconocidos. Al utilizar waypoints, se puede descomponer la tarea de

navegación en etapas más manejables, lo que mejora la capacidad del robot

para alcanzar sus objetivos de forma efectiva.

Integración de MCL con Navegación por Hitos:

● La localización por Monte Carlo (MCL) se combina de manera efectiva con la

navegación por hitos, lo que permite al robot mantener una estimación precisa

de su posición mientras se mueve entre los puntos de referencia. En cada fase


de la navegación (lectura del waypoint, giro, avance y medición), el algoritmo

MCL actualiza la estimación de la posición del robot, corrigiendo de manera

continua las desviaciones acumuladas en los datos de odometría.

También podría gustarte