Una opción, si su mapa no es demasiado grande, es un algoritmo basado en Montecarlo.
1. Dibuja al azar 1000 (o 100, o 10 000) posiciones posibles (posición 2d + orientación) para su robot.
2. Para cada posición, calcula sus expectativas de qué puntos de referencia debe ver dónde.
- Dos conjuntos finitos tienen elementos myn cada uno. El número total de subconjuntos del primer conjunto es 56 más que el número total de subconjuntos del segundo conjunto. ¿Cuáles son los valores de myn?
- Cómo insertar datos de matriz en una base de datos
- ¿Cuál es la diferencia entre quicksort y mergesort?
- ¿Cómo se puede calcular la mediana de una gran variedad de enteros sin mantener todos los valores en la memoria?
- Cómo alterar el rango de un bucle for dentro del bucle en Python
3. Deseche todas las posiciones donde las expectativas estén muy lejos de lo que realmente ve. Dibuja aleatoriamente nuevas posiciones posibles para reemplazarlas.
4. Suponga que su posición es la media de todas las posiciones posibles. Actualice las posiciones según la odometría. Ve al paso 2.
Este algoritmo debería converger (la mayoría de las posiciones terminan cerca del mismo punto), es bastante robusto al ruido y puede adaptar la carga de cálculo cambiando el número de posiciones que calcula.
Lo difícil puede ser calcular los puntos de referencia vistos esperados y elegir una métrica para determinar qué expectativas son demasiado diferentes de lo que ve.